Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mcrypt_加密结果不等于java gnu加密_Java_Php_Encryption - Fatal编程技术网

php mcrypt_加密结果不等于java gnu加密

php mcrypt_加密结果不等于java gnu加密,java,php,encryption,Java,Php,Encryption,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

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_加密结果不等于java gnu加密


这真的很奇怪。我检查了所有的密钥大小、块大小和vi大小是否相同。

尝试在不使用iv的情况下使用MCRYPT_MODE_ECB。另外,请确保您的块大小为16。

否。在Java版本和PHP版本中,您不能更改任何加密模式、算法和密钥大小,但您在PHP版本中也使用32块大小吗?请填充您的输入,使其严格大小为32,因为我看到您在java中使用32。已解决!php中的键大小是16字节而不是32字节。您能否尝试将所有输入/输出打印为十六进制+1因为我不知道这个Java/GNU API。如果这个API不起作用,您可以尝试更常见的轻量级Bouncy Castle API。