Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP gmp_invert() 함수 완벽 가이드 – 모듈러 역원 구하기

PHP의 gmp_invert() 함수란?

gmp_invert() 함수는 GMP(GNU Multiple Precision) 숫자에 대한 모듈러 역원(modular inverse)을 계산하는 PHP 내장 함수입니다. 두 개의 GMP 숫자를 인자로 받아, 첫 번째 숫자의 모듈러 역원을 반환합니다.

모듈러 역원이란, 어떤 수 a를 m으로 나눌 때 곱한 결과가 나머지 1이 되는 값을 의미합니다. 즉, 다음 조건을 만족하는 x를 찾는 것입니다.

(a * x) mod m = 1

동작 원리 예시

예를 들어 5와 14라는 두 숫자가 있다고 가정해 보겠습니다. 이때 5의 모듈러 역원은 3입니다. 그 이유는 다음과 같습니다.

(3 * 5) mod 14 = 15 mod 14 = 1

3과 5를 곱한 결과를 14로 나눈 나머지가 1이 되므로, 3이 바로 5의 모듈러 역원입니다.

문법

gmp_invert(num1, num2)

매개변수 설명

  • num1: 역원을 구할 대상이 되는 첫 번째 GMP 숫자입니다.

  • num2: 모듈러 연산의 기준이 되는 두 번째 GMP 숫자(모듈러 값)입니다.

반환값

gmp_invert() 함수는 전달된 두 숫자에 대해 계산된 모듈러 역원을 GMP 숫자 형태로 반환합니다.

참고: 만약 역원이 존재하지 않는 경우(두 숫자가 서로소가 아닌 경우), 이 함수는 false를 반환하며 PHP 8.0부터는 ValueError 예외가 발생합니다.

실전 코드 예제

다음은 gmp_invert() 함수를 사용하는 간단한 예제입니다.

<?php
    $n1 = "5";
    $n2 = "14";
    $res = gmp_invert($n1, $n2);
    echo $res;
?>

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

3

활용 분야

모듈러 역원은 특히 암호학 분야에서 중요하게 활용됩니다. RSA 공개키 암호화 알고리즘에서 개인키를 생성할 때 모듈러 역원 계산이 핵심 단계로 사용되며, 디지털 서명 및 기타 수학적 알고리즘에서도 널리 응용됩니다.