php如何使用3des加解密及hmacsha256加密
一、3des加解密
從PHP 7.2起它將被從核心代碼中移除并且移到PECL中。PHP手冊(cè)在7.1遷移頁(yè)面給出了替代方案,就是用OpenSSL取代MCrypt。
現(xiàn)整理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)
參數(shù)說(shuō)明:
$data 加密明文
$method 加密方法
1、DES-ECB
2、DES-CBC
3、DES-CTR
4、DES-OFB
5、DES-CFB
$passwd 加密密鑰[密碼]
$options 數(shù)據(jù)格式選項(xiàng)(可選)【選項(xiàng)有:】
1、0
2、OPENSSL_RAW_DATA=1
3、OPENSSL_ZERO_PADDING=2
4、OPENSSL_NO_PADDING=3
$iv 密初始化向量(可選)
DES 是對(duì)稱性加密里面常見(jiàn)一種,是一種使用密鑰加密的塊算法。
二、hmacsha256加密
使用hash_hmac()
string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )
參數(shù)
algo
要使用的哈希算法名稱,例如:"md5","sha256","haval160,4" 等。 如何獲取受支持的算法清單,請(qǐng)參見(jiàn) hash_algos() 。
data
要進(jìn)行哈希運(yùn)算的消息。
key
使用 HMAC 生成信息摘要時(shí)所使用的密鑰。
raw_output
設(shè)置為 TRUE 輸出原始二進(jìn)制數(shù)據(jù), 設(shè)置為 FALSE 輸出小寫(xiě) 16 進(jìn)制字符串。
返回值
如果 raw_output 設(shè)置為 TRUE , 則返回原始二進(jìn)制數(shù)據(jù)表示的信息摘要, 否則返回 16 進(jìn)制小寫(xiě)字符串格式表示的信息摘要。 如果 algo 參數(shù)指定的不是受支持的算法,返回 FALSE 。
總結(jié)
到此這篇關(guān)于php如何使用3des加解密及hmacsha256加密的文章就介紹到這了,更多相關(guān)php用3des加解密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用PHP偽造referer突破網(wǎng)盤(pán)禁止外連的代碼
一般的國(guó)內(nèi)網(wǎng)盤(pán)為控制流量,都會(huì)禁止網(wǎng)盤(pán)內(nèi)的文件外鏈。點(diǎn)網(wǎng)盤(pán)里文件的鏈接一般都會(huì)轉(zhuǎn)到專門(mén)的下載頁(yè)面,必須從這個(gè)頁(yè)面才能下載文件。2008-06-06
PHP實(shí)現(xiàn)將標(biāo)點(diǎn)符號(hào)正則替換為空格的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)將標(biāo)點(diǎn)符號(hào)正則替換為空格的方法,結(jié)合實(shí)例形式分析了php針對(duì)符號(hào)的正則匹配相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
學(xué)習(xí)PHP的數(shù)組總結(jié)【經(jīng)驗(yàn)】
這篇文章主要介紹了學(xué)習(xí)PHP的數(shù)組總結(jié)【經(jīng)驗(yàn)】,需要的朋友可以參考下2016-05-05
探討多鍵值cookie(php中cookie存取數(shù)組)的詳解
本篇文章是對(duì)多鍵值cookie(php中cookie存取數(shù)組)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
PHP將整個(gè)網(wǎng)站生成HTML純靜態(tài)網(wǎng)頁(yè)的方法總結(jié)
我經(jīng)常會(huì)在網(wǎng)上看到有人問(wèn)怎么將整個(gè)動(dòng)態(tài)的網(wǎng)站靜態(tài)化,其實(shí)實(shí)現(xiàn)的方法很簡(jiǎn)單2012-02-02

