婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP實現的AES 128位加密算法示例

PHP實現的AES 128位加密算法示例

熱門標簽:江蘇電商外呼系統運營商 聊城電話外呼系統公司 德陽中江如何申請400開頭電話 銅川電話機器人價格 沛縣400電話辦理 青白江地圖標注 辦理重慶400電話 智能電話機器人好公司門薩維 AI電話機器人OEM貼牌

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

/*
加密算法一般分為兩種:對稱加密算法和非對稱加密算法。
對稱加密
對稱加密算法是消息發送者和接收者使用同一個密匙,發送者使用密匙加密了文件,
接收者使用同樣的密匙解密,獲取信息。常見的對稱加密算法有:des/aes/3des.
對稱加密算法的特點有:速度快,加密前后文件大小變化不大,但是密匙的保管是個大問題
,因為消息發送方和接收方任意一方的密匙丟失,都會導致信息傳輸變得不安全。
非對稱加密
與對稱加密相對的是非對稱加密,非對稱加密的核心思想是使用一對相對的密匙
分為公匙和私匙,私匙自己安全保存,而將公匙公開。公鑰與私鑰是一對,如果用公鑰對數據進行加密,
只有用對應的私鑰才能解密;如果用私鑰對數據進行加密,那么只有用對應的公鑰才能解密發送數據前只需要使用接收方的公匙加密就行了。
常見的非對稱加密算法有RSA/DSA:非對稱加密雖然沒有密匙保存問題,但其計算量大,加密速度很慢,有時候我們還需要對大塊數據進行分塊加密。
數字簽名
為了保證數據的完整性,還需要通過散列函數計算得到一個散列值,這個散列值被稱為數字簽名。其特點有:
無論原始數據是多大,結果的長度相同的;
輸入一樣,輸出也相同;
對輸入的微小改變,會使結果產生很大的變化;
加密過程不可逆,無法通過散列值得到原來的數據;
常見的數字簽名算法有md5,hash1等算法。
PHP的openssl擴展
openssl擴展使用openssl加密擴展包,封裝了多個用于加密解密相關的PHP函數,極大地方便了對數據的加密解密。 常用的函數有:
對稱加密相關:
string openssl_encrypt ( string $data , string $method , string $password)
其中$data為其要加密的數據,$method是加密要使用的方法,$password是要使用的密匙,函數返回加密后的數據;
其中$method列表可以使用openssl_get_cipher_methods()來獲取
其解密函數為 string openssl_encrypt ( string $data , string $method , string $password)
非對稱加密相關:
它們都只需要傳入證書文件(一般是.pem文件);
使用公匙加密數據,其中$data是要加密的數據;$crypted是一個引用變量,加密后的數據會被放入這個變量中;$key是要傳入的公匙數據;
由于被加密數據分組時,有可能不會正好為加密位數bit的整數倍,所以需要$padding(填充補齊),
$padding的可選項有 OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING,分別為PKCS1填充,或不使用填充;
簽名函數:$data為要簽名的數據;$signature為簽名結果的引用變量;$priv_key_id為簽名所使用的私匙;$signature_alg為簽名要使用的算法
,其算法列表可以使用openssl_get_md_methods()得到
驗簽函數:與簽名函數相對,只不過它要傳入與私匙對應的公匙;其結果為簽名驗證結果,1為成功,0為失敗,-1則表示錯誤;
 * */
/*
 * 基于百度云API的例子
 * 密碼一律采用AES 128位加密算法進行加密,用SK的前16位作為密鑰,
 * 加密后生成的二進制字節流需要轉成十六進制,并以字符串的形式傳到服務端
 * */
function aes128WithFirst16Char($adminPass, $secretAccessKey)
{
  $adminPass = pkcs5Pad($adminPass);
  //把key值截取成16位的
  $secretAccessKey = substr($secretAccessKey, 0, 16);
  //進行AES加密
  $crypted = openssl_encrypt($adminPass, 'AES-128-ECB', $secretAccessKey, OPENSSL_RAW_DATA);
  //把字符串轉換為16進制
  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:關于加密解密感興趣的朋友還可以參考本站在線工具:

文字在線加密解密工具(包含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

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php加密方法總結》、《PHP編碼與轉碼操作技巧匯總》、《PHP數學運算技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP數據結構與算法教程》、《php程序設計算法總結》及《php正則表達式用法總結》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP實現二維數組按照指定的字段進行排序算法示例
  • PHP實現基于3DES算法加密解密字符串示例
  • PHP實現二維數組中的查找算法小結
  • PHP封裝的非對稱加密RSA算法示例
  • 50個優秀經典PHP算法大集合 附源碼

標簽:濟寧 迪慶 鷹潭 三亞 烏魯木齊 赤峰 山南 南寧

巨人網絡通訊聲明:本文標題《PHP實現的AES 128位加密算法示例》,本文關鍵詞  PHP,實現,的,AES,128位,加密,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現的AES 128位加密算法示例》相關的同類信息!
  • 本頁收集關于PHP實現的AES 128位加密算法示例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 土默特左旗| 新丰县| 太仆寺旗| 响水县| 石景山区| 宜黄县| 天津市| 定远县| 色达县| 惠州市| 阿克| 安吉县| 朝阳县| 五寨县| 绥阳县| 长治市| 蒲城县| 汕尾市| 三门县| 田东县| 古田县| 海盐县| 余江县| 仪征市| 赣州市| 江安县| 章丘市| 武威市| 贵溪市| 山东| 赫章县| 铁岭市| 东乡族自治县| 彩票| 乌拉特中旗| 广州市| 临颍县| 桃源县| 阿克陶县| 郎溪县| 盱眙县|