2017-03-23 1 views
2

RSA 암호화/암호 해독 (물론 간단한 구현이므로 nitpicking 필요 없음)을 구현하려고합니다. 숫자 (예 : 키)가 문제가없는 것처럼 보이지만 최종 결과 잘못된 것입니다.RSA 암호화/암호 해독 구현

def square_and_mult(base, k, mod): 
    b = 1 
    for ki in reversed(k): 
     if ki == '0': 
      b = (b**2) % mod 
     else: 
      b = ((b**2) * base) % mod 
    return b 
+0

헤이 OliOliver ... StackOverflow의 여기 가능성 downvotes 또는 근접 투표를 방지하는 것은, 그것은 좋은 생각이 될 수도 [** 편집과 질문으로 소스 코드의 관련 조각을 드롭 **] (http://stackoverflow.com/posts/42989207/edit). 그렇게하면 다른 검색 엔진을 통해이 Q & A를 쉽게 감지 할 수 있습니다 (또는하지 않을 수도 있음). 건배! –

답변

3

내가 의심 뭔가 당신의 모듈 식 지수 알고리즘에 문제가 있습니다 :

여기에 문제가있는 기능입니다. 파이썬을 사용할 때 기본 제공되는 pow(base, exp, mod)을 사용하면 직접 구현할 필요가 없습니다.

In [1]: n = 48961353722289327881 

In [2]: e = 7 

In [3]: d = 6994479101184233143 

In [4]: x = 12345678 

In [5]: c = pow(x, e, n) 

In [6]: c 
Out[6]: 32225547235202030473 

In [7]: m = pow(c, d, n) 

In [8]: m 
Out[8]: 12345678 
+1

보다 구체적으로 말하면, 문제는'ki in reversed (k) :''역행을 제거하기 만하면됩니다. –

+0

감사합니다. 퍼즐 팔레스! – OliOliver