记一个Aes的加密方式,aes为对称加密,加密和解密的密钥时一样的
使用php 的openssl_encrypt函数,
cbc加密方式需要有加密向量iv,当没有加密向量时,将它设置与密钥一样
nopadding填充方式,需要手动对加密字符串填充,要求字符串位数为16的倍数,不够的用0填充
另外还有 OPENSSL_RAW_DATA方式【会用PKCS#7进行补位】, OPENSSL_ZERO_PADDING方式
加密完之后的一些特殊字符比如 / + =,需要进行替换,替换为什么要与解密方一致
直接上代码:
class Aes
{
/**
* var string $method 加解密方法,可通过openssl_get_cipher_methods()获得
*/
protected $method;
/**
* var string $secret_key 加解密的密钥
*/
protected $secret_key;
/**
* var string $iv 加解密的向量,有些方法需要设置比如CBC
*/
protected $iv;
/**
* var string $options 填充类型
*/
protected $options;
/**
* 构造函数
*
* @param string $key 密钥
* @param string $method 加密方式
* @param string $iv iv向量
* @param mixed $options 填充类型,nopadding为3(OPENSSL_NO_PADDING)
*
*/
public function __construct($key, $method = 'AES-128-CBC', $iv = '', $options =