1. 程式人生 > >關於java 與PHP aes-128 加解密的問題

關於java 與PHP aes-128 加解密的問題

寫個這個問題呢,是自己專案中遇到了!最後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);

使用解密的偏移的函式,要使用統一的!我就不一一列舉!