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

 更新时间:2022年09月21日 11:45:54   作者:.周周  
因为工作中要用到加密,接口中要求也是用密文传输数据,用到3des加密,就研究了一下,下面这篇文章主要给大家介绍了关于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 。

总结

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

相关文章

  • PHP mail 通过Windows的SMTP发送邮件失败的解决方案

    PHP mail 通过Windows的SMTP发送邮件失败的解决方案

    今天调试WordPress的邮件发送功能,总是提示:SMTP server response: 501 5.5.4 Invalid Address。用telnet测试SMTP是没有任何问题的
    2009-05-05
  • ExtJS与PHP、MySQL实现存储的方法

    ExtJS与PHP、MySQL实现存储的方法

    ExtJS与PHP、MySQL实现存储的方法,需要的朋友可以参考下,里面有详细的步骤。
    2010-04-04
  • 解析php file_exists无效的解决办法

    解析php file_exists无效的解决办法

    本篇文章是对php中file_exists无效的解决办法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法

    PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法

    北京时间是东8区,可能是时区问题.但是此前都没问题啊,经过google发现原来从php5.1.0开始,php.ini里加入了 date.timezone这个选项,默认情况下是关闭的
    2009-05-05
  • php防止恶意刷新与刷票的方法

    php防止恶意刷新与刷票的方法

    这篇文章主要介绍了php防止恶意刷新与刷票的方法,实例汇总了常用的cookie方法、session方法及文本数据方法等,具有不错的实用价值,需要的朋友可以参考下
    2014-11-11
  • Zend Framework中的简单工厂模式 图文

    Zend Framework中的简单工厂模式 图文

    某天又然后想到好久没复习设计模式了。综合一下,复习一个设计模式之后在ZF中找一下使用这模式的源码吧,不读所有源码,读读比较”高级”的部分吧,要说模式,暂时不知道是不是所有模式ZF里面都有,但是应该有足够的模式够我最近看了,在说可以找找其他开源的软件来找模式
    2012-07-07
  • PHPCMS遭遇会员投稿审核无效的解决方法

    PHPCMS遭遇会员投稿审核无效的解决方法

    本站的投稿平台突然遇到会员投稿之后,主编在后台审核功能失效的问题,在网站上搜了半天也没找到方法,先把小编的处理过程记录下来,分享给大家
    2017-01-01
  • PHP中define() 与 const定义常量的区别详解

    PHP中define() 与 const定义常量的区别详解

    这篇文章主要介绍了PHP中define() 与 const定义常量的区别,结合实例形式分析了php中使用define()与const定义常量的具体使用原理、技巧与相关用法区别,需要的朋友可以参考下
    2019-06-06
  • PHP操作数组的一些函数整理介绍

    PHP操作数组的一些函数整理介绍

    PHP中最常用到的数据结构就是数组,数组可以帮我们解决很大一部分的编程问题。其实有很多数组操作不用我们自己写,系统已经自带了相关的函数了。下面我们介绍一些关于PHP数组操作的函数,也许有些你没有听说过。
    2011-07-07
  • PHP串行化与反串行化实例分析

    PHP串行化与反串行化实例分析

    这篇文章主要介绍了PHP串行化与反串行化,结合实例形式分析了php面向对象程序设计及serialize与unserialize函数进行串行化、反串行化相关使用技巧,需要的朋友可以参考下
    2016-12-12

最新评论