2017-03-23 34 views
2

私はRSA暗号化/復号化を実装しようとしています(単純な実装なので、ニックピッキングは必要ありません)。数字(キーなど)は問題ありませんが、間違っている。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

私は疑う何かがあなたのべき乗剰余アルゴリズムと間違っている:

は、ここで問題に機能です。あなたはPythonを使っているので、組み込み関数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):'行にあります。単に 'reversed'を削除するだけで動作します。 –

+0

おかげでpuzzlepalace! – OliOliver