翼度科技»论坛 编程开发 PHP 查看内容

php如何使用3des加解密及hmacsha256加密

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
一、3des加解密

从PHP 7.2起它将被从核心代码中移除并且移到PECL中。PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt。
现整理PHP7.2中AES加密解密方法mcrypt_module_open()替换方案,以下为原加解密方法:
  1. function encrypt($str) {
  2.          $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
  3.          mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));
  4.          $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);  
  5.         $pad = $block - (strlen($str) % $block);  
  6.         $str .= str_repeat(chr($pad), $pad);  
  7.         $encrypted = mcrypt_generic($td, $str);
  8.          mcrypt_generic_deinit($td);
  9.          mcrypt_module_close($td);  
  10.         return base64_encode($encrypted);  
  11.     }

  12.     function decrypt($code) {  
  13.         $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');  
  14.         mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));  
  15.         $str = mdecrypt_generic($td, base64_decode($code));  
  16.         $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  17.          mcrypt_generic_deinit($td);
  18.         mcrypt_module_close($td);
  19.         return $this->strippadding($str);
  20.     }
复制代码
替换后,新方法:
  1. //加密
  2. public function encrypt($data)
  3. {

  4.     if ($data== null || empty($data)) {
  5.         return $data;
  6.     }
  7.     $secret_key = "your key";
  8.     $iv = "your iv";
  9.     $result= base64_encode(openssl_encrypt( $data, "aes-256-cbc", $secret_key, OPENSSL_RAW_DATA, $iv));

  10.     return $result;
  11.    
  12. }

  13. //解密
  14. public function decode($data)
  15. {
  16.     if ($data== null || empty($data)) {
  17.         return $data;
  18.     }
  19.     $secret_key = "your key";
  20.     $iv = "your iv";
  21.     $result= openssl_decrypt(base64_decode($data), "aes-256-cbc", $secret_key, OPENSSL_RAW_DATA, $iv);

  22.     return $result;
  23.    
  24. }
复制代码
加密方法:
  1. openssl_encrypt($data, $method, $password, $options, $iv)
复制代码
解密方法:
  1. openssl_decrypt($data, $method, $password, $options, $iv)
复制代码
参数说明:
$data 加密明文
$method 加密方法
  1. 1、DES-ECB2、DES-CBC3、DES-CTR4、DES-OFB5、DES-CFB
复制代码
$passwd 加密密钥[密码]
$options 数据格式选项(可选)【选项有:】
  1. 1、02、OPENSSL_RAW_DATA=13、OPENSSL_ZERO_PADDING=24、OPENSSL_NO_PADDING=3
复制代码
$iv 密初始化向量(可选)
DES 是对称性加密里面常见一种,是一种使用密钥加密的块算法。

二、hmacsha256加密

使用hash_hmac()
  1. 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 。

总结

到此这篇关于php如何使用3des加解密及hmacsha256加密的文章就介绍到这了,更多相关php用3des加解密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/article/263334.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具