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
あなたの例外につながるコードを投稿してください。 – Guillaume