쿠네르스의 알고리즘

Kunerth's algorithm

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 대신 사용할 수 있습니다.

레퍼런스

  1. ^ Adolf Kunerth, "Academie Der Wissenschaften" vol 78(2), 1878, 페이지 327-338(2차 방정식 알고리즘), 페이지 338-346(모듈러 2차 알고리즘), 하버드 대학교 어니스트 메이어 도서관에서 구할 수 있습니다.
  2. ^ 레너드 유진 딕슨, "숫자의 역사", 제2, 페이지 382–384

「 」를 참조해 주세요.