摘要:最近遇到的幾個網站在提交密碼時提交的已經是密文,也就是說在網絡上傳輸的密碼是密文,這樣提升了密碼在網絡傳輸中的安全性。今天一起來了解一下基于的前后端加解密流程。由于是塊加密,銘文被分割成固定長度的塊一般是字節長度,所以也是字節。
最近遇到的幾個網站在提交密碼時提交的已經是密文,也就是說在網絡上傳輸的密碼是密文,這樣提升了密碼在網絡傳輸中的安全性。
后端語言加解密已經有很成熟的方案了,前端的話Google之前出過一個crypto-js,為瀏覽器的js提供了加解密方案。今天一起來了解一下基于AES的前后端加解密流程。
Javascript安裝npm包 npm install crypto-js
加密代碼
const CryptoJS = require("crypto-js"); const key = CryptoJS.enc.Latin1.parse("1234567812345678"); const iv = CryptoJS.enc.Latin1.parse("1234567812345678"); const encoded = CryptoJS.AES.encrypt("hahaha", key, { iv: iv, mode: CryptoJS.mode.CBC, adding: CryptoJS.pad.ZeroPadding }).toString() console.log("encoded", encoded)
解密代碼
const key = CryptoJS.enc.Latin1.parse("123456781234567812345678"); const iv = CryptoJS.enc.Latin1.parse("1234567812345678"); const decoded = CryptoJS.AES.decrypt(encoded, key, { iv: iv, mode: CryptoJS.mode.CBC, adding: CryptoJS.pad.ZeroPadding }).toString(CryptoJS.enc.Utf8) console.log("decoded", decoded);
輸出如下
encoded 6bcgYd4f4ZgNOQH/3tqMpg== decoded hahahaPHP
直接使用openssl解密即可,代碼如下:
$encoded = "6bcgYd4f4ZgNOQH/3tqMpg=="; $key = "123456781234567812345678"; $iv = "1234567812345678"; var_dump(openssl_decrypt($encoded, "AES-192-CBC", $key, 0,$iv));
輸出結果:
string(6) "hahaha"
注意事項
AES加密位數跟密鑰key有關, 以下是密鑰位數和加密對應關系
16 => AES-128
24 => AES-192
32 => AES-256
iv是初始化向量. 超過16字節或者不足16字節都會被補足16字節或者截斷到16字節。由于AES是塊加密,銘文被分割成固定長度的塊(一般是16字節長度),所以iv也是16字節。
CBC是加密模式
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105550.html
摘要:下文中我們將分別使用和來實現加解密,二者同步加解密的要點為使用何種填充算法。下面我們給出填充算法的實現填充算法移去填充算法默認使用自動對待加密數據進行填充以對齊加密算法數據塊長度。需固定使用,并通過調整的長度,來實現加密算法。 對稱加解密算法中,當前最為安全的是 AES 加密算法(以前應該是是 DES 加密算法),PHP 提供了兩個可以用于 AES 加密算法的函數簇:Mcrypt 和 ...
摘要:擴展已經過時了大約年,并且用起來很復雜。因此它被廢棄并且被所取代。從起它將被從核心代碼中移除并且移到中。手冊在遷移頁面給出了替代方案就是用取代加密,支持加密要加密的數據加密加密后的數據解密要解密的數據加密解密后的數據可據需求,自行改編。 mcrypt 擴展已經過時了大約10年,并且用起來很復雜。因此它被廢棄并且被 OpenSSL 所取代。 從PHP 7.2起它將被從核心代碼中移除并且移...
摘要:非對稱加密與對稱加密相對的是非對稱加密,非對稱加密的核心思想是使用一對相對的密匙,分為公匙和私匙,私匙自己安全保存,而將公匙公開。 引言 互聯網的發展史上,安全性一直是開發者們相當重視的一個主題,為了實現數據傳輸安全,我們需要保證:數據來源(非偽造請求)、數據完整性(沒有被人修改過)、數據私密性(密文,無法直接讀取)等。雖然現在已經有SSL/TLS協議實現的HTTPS協議,但是因在客戶...
摘要:密鑰長度是位,超過位數密鑰被忽略??缯Z言做加密解密經常會出現問題,往往是填充方式不對編碼不一致或者加密解密模式沒有對應上造成。是為了兼容用加密的結果。 最近在對接客戶的CRM系統,獲取令牌時,要用DES方式加密解密,由于之前沒有搞錯這種加密方式,經過請教了百度和谷歌兩個老師后,結合了多篇文檔內容后,終于實現了。 一、DES介紹 DES 是對稱性加密里面常見一種,全稱為 Data Enc...
摘要:問題描述最近在開發微信小程序涉及到加密數據的解密用的是代碼在運行后報錯提示方法已過時了經研究得知是版本引起的可以使用方法代替解密首先要知道微信方使用的是加密的所以我們采用也應該對應對密文進行解密需要解密的密文解密的初始向量解密得到的明文 問題描述 最近在開發微信小程序涉及到加密數據(encryptedData)的解密,用的是PHP代碼,在運行后報錯mcrypt_module_ xxx ...
閱讀 2714·2021-11-17 17:01
閱讀 2092·2021-09-28 09:35
閱讀 3600·2021-09-01 11:04
閱讀 859·2020-06-22 14:41
閱讀 2983·2019-08-30 15:55
閱讀 2596·2019-08-30 15:43
閱讀 2319·2019-08-26 13:54
閱讀 2515·2019-08-26 13:48