• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

php 使用3des加解密、hmacsha256加密

武飞扬头像
.周周
帮助1

一、3des加解密

从PHP 7.2起它将被从核心代码中移除并且移到PECL中。PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt。

现整理PHP7.2中AES加密解密方法mcrypt_module_open()替换方案,以下为原加解密方法:

  1.  
    function encrypt($str) {
  2.  
     
  3.  
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
  4.  
     
  5.  
    mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));
  6.  
     
  7.  
    $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  8.  
     
  9.  
    $pad = $block - (strlen($str) % $block);
  10.  
     
  11.  
    $str .= str_repeat(chr($pad), $pad);
  12.  
     
  13.  
    $encrypted = mcrypt_generic($td, $str);
  14.  
     
  15.  
    mcrypt_generic_deinit($td);
  16.  
     
  17.  
    mcrypt_module_close($td);
  18.  
     
  19.  
    return base64_encode($encrypted);
  20.  
     
  21.  
    }
  22.  
     
  23.  
    function decrypt($code) {
  24.  
     
  25.  
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
  26.  
     
  27.  
    mcrypt_generic_init($td, $this->key, $this->hexToStr($this->hex_iv));
  28.  
     
  29.  
    $str = mdecrypt_generic($td, base64_decode($code));
  30.  
     
  31.  
    $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
  32.  
     
  33.  
    mcrypt_generic_deinit($td);
  34.  
     
  35.  
    mcrypt_module_close($td);
  36.  
     
  37.  
    return $this->strippadding($str);
  38.  
     
  39.  
    }
学新通

替换后,新方法:

  1.  
    //加密
  2.  
    public function encrypt($data)
  3.  
    {
  4.  
     
  5.  
    if ($data== null || empty($data)) {
  6.  
    return $data;
  7.  
    }
  8.  
    $secret_key = "your key";
  9.  
    $iv = "your iv";
  10.  
    $result= base64_encode(openssl_encrypt( $data, "aes-256-cbc", $secret_key, OPENSSL_RAW_DATA, $iv));
  11.  
     
  12.  
    return $result;
  13.  
     
  14.  
    }
  15.  
     
  16.  
    //解密
  17.  
    public function decode($data)
  18.  
    {
  19.  
    if ($data== null || empty($data)) {
  20.  
    return $data;
  21.  
    }
  22.  
    $secret_key = "your key";
  23.  
    $iv = "your iv";
  24.  
    $result= openssl_decrypt(base64_decode($data), "aes-256-cbc", $secret_key, OPENSSL_RAW_DATA, $iv);
  25.  
     
  26.  
    return $result;
  27.  
     
  28.  
    }
学新通

加密方法:

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
系列文章
更多 icon
同类精品
更多 icon
继续加载