对称加密-利用mcrypt实现加密解密(1)
来源:互联网 发布:中小企业 云计算 编辑:程序博客网 时间:2024/06/05 19:04
做接口的时候需要 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;【完结】
阅读全文
1 0
- 对称加密-利用mcrypt实现加密解密(1)
- 对称加密-利用mcrypt实现加密解密(2)
- 利用mcrypt做AES加密解密
- Php Mcrypt 加密解密
- php mcrypt 加密解密
- mcrypt加密解密
- AES加密解密(使用php扩展mcrypt实现AES加密)
- Mcrypt加密解密乱码处理
- PHP mcrypt 加密解密函数
- php 加密解密算法-mcrypt
- java加密解密--对称加密
- 对称加密解密模块
- 对称加密解密模块
- 对称加密解密模块
- 对称加密解密
- 对称加密解密模块
- 对称加密解密类
- perl对称加密解密
- POJ 3273.Monthly Expense
- [知了堂学习笔记]_JavaScript之内置对象
- 通过adb shell设置日志开关
- [知了堂学习笔记]_JS内置对象
- 消息队列
- 对称加密-利用mcrypt实现加密解密(1)
- apt-get update 更新失败----如何清除破损而且陈旧的PPA仓库 (W: Failed to fetch http://ppa.launchpad.net/jonathonf/pyt)
- Bootstrap之表单控件状态
- jQuery向下弹出遮罩图片相册代码
- SpringMVC 拦截器不拦截静态资源的三种处理方式
- Win10 Python3.6下安装PyTorch
- skiplist的简单实现(c语言版)
- Node Js form-data格式传输文件
- Golang错误和异常处理的正确姿势