php如何使用3des加解密及hmacsha256加密
一、3des加解密
从PHP 7.2起它将被从核心代码中移除并且移到PECL中。PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt。
现整理PHP7.2中AES加密解密方法mcrypt_module_open()替换方案,以下为原加解密方法:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 ); } |
替换后,新方法:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | //加密 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 ; } |
加密方法:
?1 | openssl_encrypt( $data , $method , $password , $options , $iv ) |
解密方法:
?1 | 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()
?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://blog.csdn.net/qq_36611673/article/details/125162556
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。