關於java 與PHP aes-128 加解密的問題
阿新 • • 發佈:2019-02-09
寫個這個問題呢,是自己專案中遇到了!最後java 的夥伴陪同我一起解決了,所以就記錄下啦!不做頁面優化了!
java使用aes-128 加密與php 使用aes-128加密是不一樣的,首先,java加密,不要做填充,PHP 加密是沒有做填充的!
以下是PHP 7以上的加密
$key = '1234567890123456'; //16位元組
$iv = '1234567890123456'; //16位元組
$str = 'abcdefg測試密文......';
$str_padded = $str;
if (strlen($str_padded) % 16) {
$str_padded = str_pad($str_padded,strlen($str_padded) + 16 - strlen($str_padded) % 16, "\0");
}
$encrypted = openssl_encrypt($str_padded, 'aes-128-cbc', $key, OPENSSL_NO_PADDING , $iv);
//$encrypted = openssl_encrypt($str, 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv);
var_dump( base64_encode($encrypted));
die;
解密是
$decrypted = openssl_decrypt(base64_decode($json_arr), 'aes-128-cbc', $key, OPENSSL_RAW_DATA, $iv);
使用解密的偏移的函式,要使用統一的!我就不一一列舉!