1

AES/CBC/PKCS5Padding を使用してCipher aesEncryptCipher暗号化モードを使用しています。

次の 2 つの関数が 2 つの異なる値を返すのはなぜですか? の戻り値はencrypt2どういう意味ですか? javadocによると、「結果を含む新しいバッファ」を返すことになっています。これは、「暗号化されたバイト」を意味すると想定しました。

public byte[] encrypt(byte[] rawBytes) {
   aesEncryptCipher.doFinal(rawBytes);
   return rawBytes;
}

public byte[] encrypt2(byte[] rawBytes) {
   return aesEncryptCipher.doFinal(rawBytes);
}

いくつかの初期ベクトルとキーを使用して、

encrypt("xxx".getBytes("UTF-8"));
returns [120, 120, 120]

encrypt2("xxx".getBytes("UTF-8"));
returns [-76, 22, 46, 63, -16, -29, 56, -85, -115, -77, 11, 16, -56, 95, 20, 29]
4

2 に答える 2

2

最初のものは元の暗号化されていないバイト (入力) を返し、2 つ目は暗号化の結果 (出力) を返します。

于 2013-10-30T22:44:20.890 に答える
1

このencrypt関数はプレーン テキストをencrypt2返し、暗号化されたデータを返します。

これは、doFinal取得したバイト配列を参照するだけで、変更しないためです。

于 2013-10-30T22:45:33.427 に答える