0

AES暗号化を設定しようとしています。

そして私は次のlibを使用しています、それは素晴らしい働きをします。

http://www.coderelic.com/examples/AES_Encryption_Example.php

しかし、外部のビジネスは私にパディングNULLを使用するように言った、私にはわからない

  3 = Pad with NULLs. (If already a multiple of the algorithm's block
  size, no padding is added).

私は完全に負けており、libクラスにもNULLのパッドはありません。誰か助けてくれる人はいますか。真剣に私は無知です。任意の提案や助けに感謝します。

4

1 に答える 1

1

あなたが使用しているコードはすでにそれを行っています。の始まりを参照してくださいAES_Encryption.php

このAES_Encryptionクラスのデフォルトのパディング方法はゼロパディングです。読み取り可能なメッセージの最後で削除されたnullバイトはテキストのポイントを傷つけないため、メッセージのパディングでは通常ゼロパディングで問題ありません。メッセージの整合性が心配な場合は、代わりにPKCS7を使用できます。

背景:AESは、多くの暗号化アルゴリズムと同様に、ブロック暗号です。つまり、ブロックの長さと正確に一致するデータのみを暗号化できます。暗号化する前に、データを正確にブロックサイズにパディングするパディング手法を決定する必要があります。しかし、まともな低レベルの暗号化ライブラリは、このような詳細を処理します。パディングがデータの一部であると見なされないように、復号化のパディング手法を知っているか、元の長さを復元する方法が必要です。そのため、外部の企業がパディング方法を指定しています。

NULLで埋めるということは、ほぼ確実にnulバイト(NULLとnul、混同されることが多い)の詰め込みを意味します。これは、AES_EncryptionがZEROパディングと呼んでいるものです。

于 2013-03-19T04:21:44.427 に答える