2016-10-10 19 views
0

キーサイズと同じでなければならない私は、次の例外が発生したとき、しかし、私が停止になってきた、Pythonのライブラリの暗号化を使用したRSAアルゴリズムを実装しています:Pythonの暗号ライブラリ - とValueError:暗号文の長さは

ValueError: Ciphertext length must be equal to key size. 

私が集めたことから、これは図書館そのものの制限であるように思えます。他の図書館の実装では普通のことではありません。

この例外は、以前に暗号化されたメッセージを復号化しようとしたときに発生しますが、回避するにはどうすればよいですか?公開鍵と秘密鍵を作成すると、暗号文の長さ(暗号化されたメッセージ)を知ることができません。後で取得します...本当にこれを制御できますか?

私は鍵の作成に問題があると思います。私は元の暗号化されたメッセージに同じ量のビットを与えて、その同じ量の鍵で作成することを試みてきましたが、同じ例外が発生しました...

元のメッセージのビット数を調べるためにこれを使用していますが、間違っているのでしょうか?

m = message 
m.encode(encoding='UTF-8',errors='strict') 
bits = len(m)*4*8 

EDIT:

それはあまりにも他のものを持っていますが、私はいくつかの重要なポイントに置くことができるので、私のコードが非常に長い

例外が解読法にスローされ

privateKeySender , publicKeySender = generateKeys(bits) 
privatekeyReceptor, publickeyReceptor = generateKeys(bits) 

ciphertext  = myencrypt(publickeyReceptor , message) 
signature  = sign(ciphertext, publickeyReceptor) 
decryptMessage = mydecrypt(ciphertext, privatekeyReceptor) 
validation  = validateSignature(message,signature, publicKeySender) 

def mydecrypt(ciphertext, privateKey): 
    ciphertextD = base64.b64decode(ciphertext) if not isinstance(ciphertext, bytes) else ciphertext 

    message= privateKey.decrypt(
        ciphertextD, 
        padding.OAEP(
          mgf=padding.MGF1(algorithm=hashes.SHA1()), 
          algorithm=hashes.SHA1(), 
          label=None 
        ) 
       ) 
    message= str(message) 
    message.encode(encoding='UTF-8',errors='strict') 
    return message 
+0

あなたの例外につながるコードを投稿してください。 – Guillaume

答えて

0

問題は暗号テキストのエンコーディングにあり、暗号化メソッドでは正しくエンコードされませんでした。

関連する問題