wuliangbo
4 years ago
6 changed files with 52 additions and 80 deletions
@ -1,82 +1,33 @@
@@ -1,82 +1,33 @@
|
||||
<?php |
||||
/** |
||||
* Created by PhpStorm. |
||||
* User: wuliangbo |
||||
* Date: 2020/1/6 |
||||
* Time: 15:25 |
||||
*/ |
||||
|
||||
namespace EasyAlipay\Kernel; |
||||
|
||||
|
||||
/** |
||||
* 加密方法 |
||||
* @param string $str |
||||
* @param $str |
||||
* @param $screct_key |
||||
* @return string |
||||
*/ |
||||
function encrypt($str, $screct_key) |
||||
{ |
||||
//AES, 128 模式加密数据 CBC |
||||
$screct_key = base64_decode($screct_key); |
||||
$str = trim($str); |
||||
$str = addPKCS7Padding($str); |
||||
|
||||
//设置全0的IV |
||||
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); |
||||
$iv_size = openssl_cipher_iv_length('AES-128-CBC'); |
||||
$iv = str_repeat("\0", $iv_size); |
||||
|
||||
$encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC, $iv); |
||||
$encrypt_str = openssl_encrypt($str,"AES-128-CBC",$screct_key,OPENSSL_RAW_DATA,$iv); |
||||
return base64_encode($encrypt_str); |
||||
} |
||||
|
||||
/** |
||||
* 解密方法 |
||||
* @param string $str |
||||
* @return string |
||||
* @param $str |
||||
* @param $screct_key |
||||
* @return false|string |
||||
*/ |
||||
function decrypt($str, $screct_key) |
||||
{ |
||||
//AES, 128 模式加密数据 CBC |
||||
$str = base64_decode($str); |
||||
$screct_key = base64_decode($screct_key); |
||||
|
||||
//设置全0的IV |
||||
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); |
||||
$iv_size = openssl_cipher_iv_length('AES-128-CBC'); |
||||
$iv = str_repeat("\0", $iv_size); |
||||
|
||||
$decrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC, $iv); |
||||
$decrypt_str = stripPKSC7Padding($decrypt_str); |
||||
$decrypt_str = openssl_decrypt($str,"AES-128-CBC",$screct_key,OPENSSL_RAW_DATA,$iv); |
||||
return $decrypt_str; |
||||
} |
||||
|
||||
/** |
||||
* 填充算法 |
||||
* @param string $source |
||||
* @return string |
||||
*/ |
||||
function addPKCS7Padding($source) |
||||
{ |
||||
$source = trim($source); |
||||
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); |
||||
|
||||
$pad = $block - (strlen($source) % $block); |
||||
if ($pad <= $block) { |
||||
$char = chr($pad); |
||||
$source .= str_repeat($char, $pad); |
||||
} |
||||
return $source; |
||||
} |
||||
|
||||
/** |
||||
* 移去填充算法 |
||||
* @param string $source |
||||
* @return string |
||||
*/ |
||||
function stripPKSC7Padding($source) |
||||
{ |
||||
$char = substr($source, -1); |
||||
$num = ord($char); |
||||
if ($num == 62) return $source; |
||||
$source = substr($source, 0, -$num); |
||||
return $source; |
||||
} |
Loading…
Reference in new issue