32字节长的Java AES初始化向量
我想通过将AES与PHP和JAVA一起使用来获得相同的加密结果 但是在PHP32字节长的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', ''
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代码呢。