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加解密内容请搜索编程宝库以前的文章,希望以后支持编程宝库

 方法一、使用phpword和tcpdf1. 使用composer 安装 phpword和tcpdf composer require phpoffice/phpword compo ...