Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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
32字节长的Java AES初始化向量_Java_Php - Fatal编程技术网

32字节长的Java AES初始化向量

32字节长的Java AES初始化向量,java,php,Java,Php,我想通过将AES与PHP和JAVA一起使用来获得相同的加密结果 但是在PHPmcrypt中需要32字节长度的初始化向量,而在Java中我只能使用16字节长度的IV(线程“main”Java.security.invalidalgorithParameterException:错误的IV长度:必须是16字节长度),即使有无限强度的策略,我如何使Java AES与PHP兼容 $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', 'ctr', ''

我想通过将AES与PHP和JAVA一起使用来获得相同的加密结果 但是在PHP
mcrypt
中需要32字节长度的初始化向量,而在Java中我只能使用16字节长度的IV(
线程“main”Java.security.invalidalgorithParameterException:错误的IV长度:必须是16字节长度
),即使有无限强度的策略,我如何使Java AES与PHP兼容

$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', 'ctr', '');
$iv_size = mcrypt_enc_get_iv_size($cipher);

$key = '***';
$iv =  hex2str('00000001040506070000000000000001');


// Encrypt
if (mcrypt_generic_init($cipher, $key, $iv) != -1)
{
    $encrypted = mcrypt_generic($cipher, $text);
    mcrypt_generic_deinit($cipher);

    echo '<strong>After encryption:</strong> ' . bin2hex($encrypted) . '<br />';
}
$cipher=mcrypt_模块_打开(mcrypt_RIJNDAEL_256','ctr','';
$iv_size=mcrypt_enc_get_iv_size($cipher);
$key='***';
$iv=hex2str('0000000 104050607000000000001');
//加密
if(mcrypt_generic_init($cipher,$key,$iv)!=-1)
{
$encrypted=mcrypt_generic($cipher,$text);
mcrypt_generic_deinit($cipher);
在加密后回显“”.bin2hex($encrypted)。“
”; }
在java im中使用
加密密码=

Cipher.getInstance(“AES/CTR/PKCS5Padding”)

PHP的AES,也称为rijndael-128,需要一个16字节的IV。你确定你的算法是正确的吗?我已经发布了一些代码。我不是Java专家,但我认为你的算法是错误的。请参阅以从系统中提取列表。另外,我不是密码专家,但你可能不应该在互联网上发布你的密钥我不认为在java中只能使用16字节长的IV。当你的问题是关于java的时候,为什么你没有像使用php那样清晰地发布java代码呢。