做接口的时候需要 token 做加密解密,就随手写了一个 对称加密 的,不多说,干货来了,粘贴就能用,请叫我 琦雷锋
加密:
/**
* 加密方法
*/
function encrypt($plaintext = '')
{
# 密钥是 16 进制字符串格式
$key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3"); // 这个秘钥是 32位<自己可以改变秘钥>,一般放在项目的配置文件中
# 为 CBC 模式创建随机的初始向量
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); // 初始向量长度 2
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); // 创建随机的向量值 <长度16位>
$iv = substr($iv,0,16); // 防止向量长度 超过 16位
$ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,$plaintext, MCRYPT_MODE_CBC, $iv); //(因为默认是使用 0 来补齐数据)
$ciphertext = $iv . $ciphertext; // 将初始向量附加在密文之后,以供解密时使用
return base64_encode($ciphertext); // 对密文进行 base64 编码
}
解密:
/*
* 解密方法
*/
function decrypt($ciphertext)
{
$ciphertext_dec = base64_decode($ciphertext);
$key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3"); // 这个秘钥是 32位<自己可以改变秘钥>,一般放在项目的配置文件中
$iv_size = 16; // 向量长度 16
$iv = substr($ciphertext_dec, 0, $iv_size); // 向量值
$ciphertext_dec = substr($ciphertext_dec, $iv_size); // 获取除初始向量外的密文
return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,$ciphertext_dec, MCRYPT_MODE_CBC, $iv);
}
调用:
$userId = 1;
$token = encrypt($userId);
$usernewId = decrypt($token);
echo $usernewId;
【完结】