1

既存の AES コードの一部を M2Crypto から同等の pycrypto に変換したいのですが、特に M2Crypto のドキュメントが薄いです。関連するコードを要点にまとめました。主な問題は次のとおりです。

  • Pycrypto では入力の長さが 16 の倍数である必要がありますが、m2crypto では必要ありません。
  • 入力長が 16 の倍数の場合でも、暗号文は異なります。M2Crypto 暗号パラメータを試した後、その設定paddingkey_as_bytesto が pycrypto を使用して同じ暗号文に偽の暗号化を行うことがわかりました。だから私は純粋なPythonでpadding=Trueエミュレートする必要があります。key_as_bytes=True

どんな助けでも大歓迎です。

編集: 解決済み - 要点は同等の M2Crypto/pycrypto コードとテストで更新されました。

4

1 に答える 1

2

PKCS#7 パディング/アンパディングを実装する必要があります。これは単純で、RSA ラボから公開されている標準で指定されており、もちろんウィキペディアでも指定されています。この回答も参照してください:

CBC モードを使用した PyCrypto による AES 256 暗号化 - 弱点はありますか?

PKCS#7 パディングと PKCS#5 パディングは同一であることに注意してください。ただし、後者は公式には 8 バイト ブロック暗号 (DES/TDEA など) 専用です。OpenSSL はデフォルトで PKCS#7 パディングを使用します。

于 2013-01-17T01:00:45.607 に答える