web-dev-qa-db-ja.com

OpenSSL「modlenより大きいデータ」

「dataisgreater than modlen」エラーメッセージはどういう意味ですか? phpのopenssl_private_decryptを使用してデータを復号化しようとしたときに、これに遭遇しました。この問題をどのように解決しますか?オンラインで何時間も検索していて、どこにも行きません。

11
automaton

非対称RSAキーは、制限された長さのデータのみを暗号化/復号化できます。つまり、 RFC3447 で定義されているRSAES-PKCS1-v1_5暗号化スキームは、最大k-11オクテットの長さのメッセージを操作できます(kはのオクテット長です。 RSAモジュラス)したがって、2048ビットのRSAキーを使用している場合、暗号化されるプレーンデータの最大長は245バイトです。

15
jariq

この復号化エラーが発生した場合:RSA_EAY_PRIVATE_DECRYPT:data greater than mod lenファイルを復号化する前に、次のコマンドを試してください。

cat yourEncryptedFile| base64 -D > yourEncryptedRawFile
9
Pedro Trujillo

openssl enc -in cipherTextFile.base64 -out binaryTextFile.bin -d -aを試すこともできます。これは、復号化しようとしたときにこのエラーが発生したときにうまくいったことです。その後、openssl rsautl -decrypt -in binaryTextFile.bin -out plainTextFile.txt -inkey my-private-key.pemを使用して失敗することなく復号化することができました。

1
Oli