1

PHP のバージョン:

mcrypt_encrypt(MCRYPT_RIJNDAEL_256, "11111111111111111111111111111111", "11111111111111111111111111111111", MCRYPT_MODE_CFB, "11111111111111111111111111111111")
//byte array result:197 225 204 225 20 63 221 2 108 243 172 211 201 17 108 221 53 236 203 147 221 148 73 227 59 26 253 96 240 102 230 118 

Java のバージョン:

byte[] pt = "11111111111111111111111111111111".getBytes();
byte[] ct = new byte[32];

IMode mode = ModeFactory.getInstance("CFB", "Rijndael", 32);
Map attributes = new HashMap();
attributes.put(IMode.KEY_MATERIAL, "11111111111111111111111111111111".getBytes());
attributes.put(IMode.CIPHER_BLOCK_SIZE, new Integer(32));
attributes.put(IMode.STATE, new Integer(IMode.ENCRYPTION));
attributes.put(IMode.IV, "11111111111111111111111111111111".getBytes());
mode.init(attributes);
mode.update(pt, 0, ct, 0);
//byte array result: -59 39 -23 -128 94 -42 97 -120 122 -3 -34 -13 70 43 -16 -41 -104 40 -11 83 36 56 -55 66 115 -78 97 -104 58 -38 74 -110

PHP mcrypt_encrypt の結果が Java gnu-crypto と等しくありません。

これは本当に奇妙です。すべてのキー サイズ、ブロック サイズ、vi サイズが同じであることを確認しました。

4

1 に答える 1

0

iv なしで MCRYPT_MODE_ECB を使用してみてください。また、ブロックサイズが 16 であることを確認してください。

于 2013-03-12T15:44:59.657 に答える