Kunerth의 알고리즘은 [1][2]숫자의 모듈러 제곱근을 결정하는 알고리즘입니다.알고리즘은 계수의 인수분해를 필요로 하지 않으며, 암호의 소수가 되는 경우 보통 쉬운 모듈러 연산 1개뿐입니다.
찾기 위해서.
다음 단계를 수행합니다.
- 1) r ± ( 2 \ \ N \ { }}의 모듈러 제곱근을 찾습니다. 계수가 아무리 2 N{ \ y ^} { n } { n} } } 1 。
- 2) 2 A + z + w}=C의모듈러 과 관련된 2차 방정식을 푼다.쿠네르스의 원본 논문 예시는 대부분 C를 자연 제곱으로 하여 z를 0으로 설정함으로써 이 방정식을 푼다.
- 다음 방정식을 확장하여 2차 방정식을 구하시오
- NB {\ y B일
- 위의 방정식에서 N항(계수)을 조정하면 항상 2차 문제를 해결할 수 있습니다.따라서
- 는 A ofz + z + +({ A의 2차를 보증합니다.
- 그런 다음 F를 조정하여 C+F가 정사각형임을 확인할 수 있습니다. 67F + A { {67*FRSA260}}과 같은 꽤 큰 모듈라도 이 방법을 통해 신속하게 제곱근을 얻을 수 있습니다.
- 예를 들어 (+ ) + S 260)/ ( 67 \ + + RSA260) / ( }에서는 다항식 팽창의 파라미터는 매우 유동적이다.( 2+ 260/ ( 67 { style ( ^ {2} * RSA 260 ) / ( * )} 이 정사각형이 되도록X 와 Y 를 설정하는 것은 매우 간단합니다. y R S A {{ { y *}} { \ bmod { RSA260은 다음과 같이 구할 수 있습니다.
- 3) 관련된 2차 방정식을 풀면 변수 w와 v=r이 됩니다(2차 C가 자연제곱인 경우).
- 4) 다음 방정식으로 알파와 베타 두 변수를 더 푼다.
- 알파 == w (v + w 베타)
- 이 작업은 모듈식 작업이 아니며 알파와 베타에는 여러 쌍의 답변이 있을 수 있습니다.
- 5) 다음의 다항식을 인수분해하여 X값을 구한다.
- 같은 대답을 얻는 것
- (-37 + 9 x) (1 + 25 x)
- 6) 모듈식 제곱근을 구한다.위의 항이 0이 되도록 X를 설정하는 것을 잊지 마십시오.따라서 X는 37/9 또는 -1/25가 됩니다.
어려운 단계는 2차 방정식을 푸는 것이지만, 이것이 가능하다면 알고리즘은 많은 계산 없이 모듈러 제곱근을 빠르게 찾을 수 있습니다.
예
mod ({ {\을 얻으려면
최초 - mod 41† {- { \ 13
그리고 다음 다항식을 확장합니다.
어느 것이
이 경우 2차에서 C 항은 자연 이므로 W W
- { w v { v을 설정합니다(z 값이 있으면 + { v
- W와 V를 포함한 다음 방정식의 알파와 베타에 대한 해결
- 알파 == W (V + W* 베타)
- 알파=15 및 베타=-2를 구합니다. (이 방정식에는 쌍체 답이 많을 수 있습니다.)
- 그리고 다음 다항식을 인수분해한다.
- 취득
- 다음으로 모듈러 제곱근을 구합니다.
- mod 41 41임을 확인합니다.
41{-에응답이 없는 r - mod ( 856 r \ { - { \ { ( * + 41을 대신 사용할 수 있습니다.
레퍼런스
- ^ Adolf Kunerth, "Academie Der Wissenschaften" vol 78(2), 1878, 페이지 327-338(2차 방정식 알고리즘), 페이지 338-346(모듈러 2차 알고리즘), 하버드 대학교 어니스트 메이어 도서관에서 구할 수 있습니다.
- ^ 레너드 유진 딕슨, "숫자의 역사", 제2, 페이지 382–384
「 」를 참조해 주세요.