我有一个应用程序在PHP加密文本使用openssl_encrypt和以下方法。 (使用相同的盐值和iv作为'239422ae7940144f')
function encrypt_password($password) {
define('AES_256_CBC', 'aes-256-cbc');
$sessionId = $password;
//random number for encrtyption(salt)
$salt = '239422ae7940144f';
$iv = $salt; //cipher length
$encryptedSession = openssl_encrypt($sessionId, AES_256_CBC, $salt, 0, $iv);
return array('encryptedPassword' => $encryptedSession, 'salt' => $salt);
}
function decrypt_password($result) {
define('AES_256_CBC', 'aes-256-cbc');
$vPassword = 'xUP9PwhcXm5xbKIfiSxMCA==';
//random number for descrypt(salt)
$salt = '239422ae7940144f';
$iv = $salt; //cipher length.
$decrypted = openssl_decrypt($vPassword, AES_256_CBC, $salt, 0, $iv);
return $decrypted;
}
加密密码'abc123'提供'xUP9PwhcXm5xbKIfiSxMCA =='并解密它会返回'abc123'。
如何找到可以做同样的等效java程序。我尝试使用Using Java to decrypt openssl aes-256-cbc using provided key and iv上的示例,但它失败并带有
java.lang.IllegalArgumentException:IV缓冲区太短,不适合给定 偏移/长度组合。
以下是我正在使用的java程序中的secretKey和initVector行。
final byte[] secretKey = javax.xml.bind.DatatypeConverter.parseHexBinary("239422ae7940144f");
final byte[] initVector = javax.xml.bind.DatatypeConverter.parseHexBinary("239422ae7940144f");
答案 0 :(得分:-2)
此“ sessionId”的长度很短。长度必须至少为“ iv”