php 使用3des加解密、hmacsha256加密
一、3des加解密
从PHP 7.2起它将被从核心代码中移除并且移到PECL中。PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt。
现整理PHP7.2中AES加密解密方法mcrypt_module_open()替换方案,以下为原加解密方法:
-
function encrypt($str) {
-
-
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
-
-
mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));
-
-
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
-
-
$pad = $block - (strlen($str) % $block);
-
-
$str .= str_repeat(chr($pad), $pad);
-
-
$encrypted = mcrypt_generic($td, $str);
-
-
mcrypt_generic_deinit($td);
-
-
mcrypt_module_close($td);
-
-
return base64_encode($encrypted);
-
-
}
-
-
function decrypt($code) {
-
-
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
-
-
mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));
-
-
$str = mdecrypt_generic($td, base64_decode($code));
-
-
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
-
-
mcrypt_generic_deinit($td);
-
-
mcrypt_module_close($td);
-
-
return $this->strippadding($str);
-
-
}
替换后,新方法:
-
//加密
-
public function encrypt($data)
-
{
-
-
if ($data== null || empty($data)) {
-
return $data;
-
}
-
$secret_key = "your key";
-
$iv = "your iv";
-
$result= base64_encode(openssl_encrypt( $data, "aes-256-cbc", $secret_key, OPENSSL_RAW_DATA, $iv));
-
-
return $result;
-
-
}
-
-
//解密
-
public function decode($data)
-
{
-
if ($data== null || empty($data)) {
-
return $data;
-
}
-
$secret_key = "your key";
-
$iv = "your iv";
-
$result= openssl_decrypt(base64_decode($data), "aes-256-cbc", $secret_key, OPENSSL_RAW_DATA, $iv);
-
-
return $result;
-
-
}
加密方法:
openssl_encrypt($data, $method, $password, $options, $iv)
解密方法:
openssl_decrypt($data, $method, $password, $options, $iv)
参数说明:
$data 加密明文
$method 加密方法
1、DES-ECB
2、DES-CBC
3、DES-CTR
4、DES-OFB
5、DES-CFB
$passwd 加密密钥[密码]
$options 数据格式选项(可选)【选项有:】
1、0
2、OPENSSL_RAW_DATA=1
3、OPENSSL_ZERO_PADDING=2
4、OPENSSL_NO_PADDING=3
$iv 密初始化向量(可选)
DES 是对称性加密里面常见一种,是一种使用密钥加密的块算法。
二、hmacsha256加密
使用hash_hmac()
string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )
参数
algo
要使用的哈希算法名称,例如:"md5","sha256","haval160,4" 等。 如何获取受支持的算法清单,请参见 hash_algos() 。
data
要进行哈希运算的消息。
key
使用 HMAC 生成信息摘要时所使用的密钥。
raw_output
设置为 TRUE 输出原始二进制数据, 设置为 FALSE 输出小写 16 进制字符串。
返回值
如果 raw_output 设置为 TRUE , 则返回原始二进制数据表示的信息摘要, 否则返回 16 进制小写字符串格式表示的信息摘要。 如果 algo 参数指定的不是受支持的算法,返回 FALSE 。
这篇好文章是转载于:编程之路
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 编程之路
- 本文地址: /boutique/detail/tanhgffhba
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01