校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > PHP實(shí)現(xiàn)的AES 128位加密算法示例

PHP實(shí)現(xiàn)的AES 128位加密算法示例

熱門標(biāo)簽:江蘇電商外呼系統(tǒng)運(yùn)營(yíng)商 聊城電話外呼系統(tǒng)公司 德陽(yáng)中江如何申請(qǐng)400開(kāi)頭電話 銅川電話機(jī)器人價(jià)格 沛縣400電話辦理 青白江地圖標(biāo)注 辦理重慶400電話 智能電話機(jī)器人好公司門薩維 AI電話機(jī)器人OEM貼牌

本文實(shí)例講述了PHP實(shí)現(xiàn)的AES 128位加密算法。分享給大家供大家參考,具體如下:

/*
加密算法一般分為兩種:對(duì)稱加密算法和非對(duì)稱加密算法。
對(duì)稱加密
對(duì)稱加密算法是消息發(fā)送者和接收者使用同一個(gè)密匙,發(fā)送者使用密匙加密了文件,
接收者使用同樣的密匙解密,獲取信息。常見(jiàn)的對(duì)稱加密算法有:des/aes/3des.
對(duì)稱加密算法的特點(diǎn)有:速度快,加密前后文件大小變化不大,但是密匙的保管是個(gè)大問(wèn)題
,因?yàn)橄l(fā)送方和接收方任意一方的密匙丟失,都會(huì)導(dǎo)致信息傳輸變得不安全。
非對(duì)稱加密
與對(duì)稱加密相對(duì)的是非對(duì)稱加密,非對(duì)稱加密的核心思想是使用一對(duì)相對(duì)的密匙
分為公匙和私匙,私匙自己安全保存,而將公匙公開(kāi)。公鑰與私鑰是一對(duì),如果用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,
只有用對(duì)應(yīng)的私鑰才能解密;如果用私鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公鑰才能解密發(fā)送數(shù)據(jù)前只需要使用接收方的公匙加密就行了。
常見(jiàn)的非對(duì)稱加密算法有RSA/DSA:非對(duì)稱加密雖然沒(méi)有密匙保存問(wèn)題,但其計(jì)算量大,加密速度很慢,有時(shí)候我們還需要對(duì)大塊數(shù)據(jù)進(jìn)行分塊加密。
數(shù)字簽名
為了保證數(shù)據(jù)的完整性,還需要通過(guò)散列函數(shù)計(jì)算得到一個(gè)散列值,這個(gè)散列值被稱為數(shù)字簽名。其特點(diǎn)有:
無(wú)論原始數(shù)據(jù)是多大,結(jié)果的長(zhǎng)度相同的;
輸入一樣,輸出也相同;
對(duì)輸入的微小改變,會(huì)使結(jié)果產(chǎn)生很大的變化;
加密過(guò)程不可逆,無(wú)法通過(guò)散列值得到原來(lái)的數(shù)據(jù);
常見(jiàn)的數(shù)字簽名算法有md5,hash1等算法。
PHP的openssl擴(kuò)展
openssl擴(kuò)展使用openssl加密擴(kuò)展包,封裝了多個(gè)用于加密解密相關(guān)的PHP函數(shù),極大地方便了對(duì)數(shù)據(jù)的加密解密。 常用的函數(shù)有:
對(duì)稱加密相關(guān):
string openssl_encrypt ( string $data , string $method , string $password)
其中$data為其要加密的數(shù)據(jù),$method是加密要使用的方法,$password是要使用的密匙,函數(shù)返回加密后的數(shù)據(jù);
其中$method列表可以使用openssl_get_cipher_methods()來(lái)獲取
其解密函數(shù)為 string openssl_encrypt ( string $data , string $method , string $password)
非對(duì)稱加密相關(guān):
它們都只需要傳入證書文件(一般是.pem文件);
使用公匙加密數(shù)據(jù),其中$data是要加密的數(shù)據(jù);$crypted是一個(gè)引用變量,加密后的數(shù)據(jù)會(huì)被放入這個(gè)變量中;$key是要傳入的公匙數(shù)據(jù);
由于被加密數(shù)據(jù)分組時(shí),有可能不會(huì)正好為加密位數(shù)bit的整數(shù)倍,所以需要$padding(填充補(bǔ)齊),
$padding的可選項(xiàng)有 OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING,分別為PKCS1填充,或不使用填充;
簽名函數(shù):$data為要簽名的數(shù)據(jù);$signature為簽名結(jié)果的引用變量;$priv_key_id為簽名所使用的私匙;$signature_alg為簽名要使用的算法
,其算法列表可以使用openssl_get_md_methods()得到
驗(yàn)簽函數(shù):與簽名函數(shù)相對(duì),只不過(guò)它要傳入與私匙對(duì)應(yīng)的公匙;其結(jié)果為簽名驗(yàn)證結(jié)果,1為成功,0為失敗,-1則表示錯(cuò)誤;
 * */
/*
 * 基于百度云API的例子
 * 密碼一律采用AES 128位加密算法進(jìn)行加密,用SK的前16位作為密鑰,
 * 加密后生成的二進(jìn)制字節(jié)流需要轉(zhuǎn)成十六進(jìn)制,并以字符串的形式傳到服務(wù)端
 * */
function aes128WithFirst16Char($adminPass, $secretAccessKey)
{
  $adminPass = pkcs5Pad($adminPass);
  //把key值截取成16位的
  $secretAccessKey = substr($secretAccessKey, 0, 16);
  //進(jìn)行AES加密
  $crypted = openssl_encrypt($adminPass, 'AES-128-ECB', $secretAccessKey, OPENSSL_RAW_DATA);
  //把字符串轉(zhuǎn)換為16進(jìn)制
  return bin2hex(substr($crypted, 0, 16));
}
//把密碼填充成16位
function pkcs5Pad($adminPass)
{
  $pad = 16 - (strlen($adminPass) % 16);
  return $adminPass . str_repeat(chr($pad), $pad);
}
echo aes128WithFirst16Char('加密的密碼','key值');

PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:

文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php加密方法總結(jié)》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》及《php正則表達(dá)式用法總結(jié)》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP實(shí)現(xiàn)二維數(shù)組按照指定的字段進(jìn)行排序算法示例
  • PHP實(shí)現(xiàn)基于3DES算法加密解密字符串示例
  • PHP實(shí)現(xiàn)二維數(shù)組中的查找算法小結(jié)
  • PHP封裝的非對(duì)稱加密RSA算法示例
  • 50個(gè)優(yōu)秀經(jīng)典PHP算法大集合 附源碼

標(biāo)簽:濟(jì)寧 迪慶 鷹潭 三亞 烏魯木齊 赤峰 山南 南寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實(shí)現(xiàn)的AES 128位加密算法示例》,本文關(guān)鍵詞  PHP,實(shí)現(xiàn),的,AES,128位,加密,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP實(shí)現(xiàn)的AES 128位加密算法示例》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于PHP實(shí)現(xiàn)的AES 128位加密算法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 东乡县| 南城县| 合作市| 怀集县| 铁岭市| 中卫市| 两当县| 湛江市| 敖汉旗| 武平县| 阳原县| 磐石市| 达日县| 永春县| 保靖县| 瑞金市| 湛江市| 南开区| 虎林市| 扎鲁特旗| 绍兴县| 韶山市| 漳平市| 沽源县| 霍山县| 城固县| 衡山县| 临桂县| 鄄城县| 吉林市| 大余县| 彭州市| 三都| 门源| 股票| 丽江市| 宜昌市| 绩溪县| 广饶县| 仪征市| 澄城县|