出品 | 漫云科技
整理 | 赵建平
1.封装方法类,命名为AESUtil.php
<?php
/**
* AES加解密工具类
* Class AESUtil
* @package utils
*/
class AESUtil
{
const EBC_MODE = "AES-128-ECB";
/**
* AES加密,模式为:AES/ECB/PKCK7Padding
* @param string $data
* @param string $secKey
* @return string
*/
public static function encryptECB(string $data, string $secKey){
$encrypted = openssl_encrypt($data, self::EBC_MODE, $secKey, OPENSSL_RAW_DATA);
if($encrypted === false){
throw new Exception("aes加密失败" );
}
return base64_encode($encrypted);
}
/**
* AES解密,模式为:AES/ECB/PKCK7Padding
* @param string $data
* @param string $secKey
* @return string
* @throws SDKException
*/
public static function decryptECB(string $data, string $secKey){
$decrypted = openssl_decrypt(base64_decode($data), self::EBC_MODE, $secKey, OPENSSL_RAW_DATA);
if($decrypted === false){
throw new Exception( "aes解密失败");
}
return $decrypted;
}
}
2.生成随机秘钥方法类,命名为RandomUtil.php
<?php
/**
* 随机数生成工具类
* 用于生成随机秘钥
* Class RandomUtil
* @package utils
*/
class RandomUtil {
const CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
/**
* 生成指定长度的随机字符串
* @entity int $length
* @return string
*/
public static function randomStr( $length = 16 ) {
$str = "";
$strLen = strlen(static::CHARS) - 1;
for ($i = 0; $i < $length; $i++) {
$str .= static::CHARS[mt_rand(0, $strLen)];
}
return $str;
}
}
3.进行参数加密
<?php
// 1.生成随机秘钥
$secKey = RandomUtil::randomStr();
// 2.进行参数加密
$str = '1231321';
$newstr = AESUtil::encryptECB(str , $secKey);// 加密
echo $newstr.PHP_EOL;
// 3.使用的时候解密
$str = AESUtil::decryptECB(str , $secKey);// 解密
echo $str;
// 打印结果为:1231321