摘要:最近遇到的幾個網(wǎng)站在提交密碼時提交的已經(jīng)是密文,也就是說在網(wǎng)絡(luò)上傳輸?shù)拿艽a是密文,這樣提升了密碼在網(wǎng)絡(luò)傳輸中的安全性。今天一起來了解一下基于的前后端加解密流程。由于是塊加密,銘文被分割成固定長度的塊一般是字節(jié)長度,所以也是字節(jié)。
最近遇到的幾個網(wǎng)站在提交密碼時提交的已經(jīng)是密文,也就是說在網(wǎng)絡(luò)上傳輸?shù)拿艽a是密文,這樣提升了密碼在網(wǎng)絡(luò)傳輸中的安全性。
后端語言加解密已經(jīng)有很成熟的方案了,前端的話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));
輸出結(jié)果:
string(6) "hahaha"
注意事項
AES加密位數(shù)跟密鑰key有關(guān), 以下是密鑰位數(shù)和加密對應(yīng)關(guān)系
16 => AES-128
24 => AES-192
32 => AES-256
iv是初始化向量. 超過16字節(jié)或者不足16字節(jié)都會被補足16字節(jié)或者截斷到16字節(jié)。由于AES是塊加密,銘文被分割成固定長度的塊(一般是16字節(jié)長度),所以iv也是16字節(jié)。
CBC是加密模式
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105550.html
摘要:下文中我們將分別使用和來實現(xiàn)加解密,二者同步加解密的要點為使用何種填充算法。下面我們給出填充算法的實現(xiàn)填充算法移去填充算法默認使用自動對待加密數(shù)據(jù)進行填充以對齊加密算法數(shù)據(jù)塊長度。需固定使用,并通過調(diào)整的長度,來實現(xiàn)加密算法。 對稱加解密算法中,當(dāng)前最為安全的是 AES 加密算法(以前應(yīng)該是是 DES 加密算法),PHP 提供了兩個可以用于 AES 加密算法的函數(shù)簇:Mcrypt 和 ...
摘要:擴展已經(jīng)過時了大約年,并且用起來很復(fù)雜。因此它被廢棄并且被所取代。從起它將被從核心代碼中移除并且移到中。手冊在遷移頁面給出了替代方案就是用取代加密,支持加密要加密的數(shù)據(jù)加密加密后的數(shù)據(jù)解密要解密的數(shù)據(jù)加密解密后的數(shù)據(jù)可據(jù)需求,自行改編。 mcrypt 擴展已經(jīng)過時了大約10年,并且用起來很復(fù)雜。因此它被廢棄并且被 OpenSSL 所取代。 從PHP 7.2起它將被從核心代碼中移除并且移...
摘要:非對稱加密與對稱加密相對的是非對稱加密,非對稱加密的核心思想是使用一對相對的密匙,分為公匙和私匙,私匙自己安全保存,而將公匙公開。 引言 互聯(lián)網(wǎng)的發(fā)展史上,安全性一直是開發(fā)者們相當(dāng)重視的一個主題,為了實現(xiàn)數(shù)據(jù)傳輸安全,我們需要保證:數(shù)據(jù)來源(非偽造請求)、數(shù)據(jù)完整性(沒有被人修改過)、數(shù)據(jù)私密性(密文,無法直接讀?。┑?。雖然現(xiàn)在已經(jīng)有SSL/TLS協(xié)議實現(xiàn)的HTTPS協(xié)議,但是因在客戶...
摘要:密鑰長度是位,超過位數(shù)密鑰被忽略??缯Z言做加密解密經(jīng)常會出現(xiàn)問題,往往是填充方式不對編碼不一致或者加密解密模式?jīng)]有對應(yīng)上造成。是為了兼容用加密的結(jié)果。 最近在對接客戶的CRM系統(tǒng),獲取令牌時,要用DES方式加密解密,由于之前沒有搞錯這種加密方式,經(jīng)過請教了百度和谷歌兩個老師后,結(jié)合了多篇文檔內(nèi)容后,終于實現(xiàn)了。 一、DES介紹 DES 是對稱性加密里面常見一種,全稱為 Data Enc...
摘要:問題描述最近在開發(fā)微信小程序涉及到加密數(shù)據(jù)的解密用的是代碼在運行后報錯提示方法已過時了經(jīng)研究得知是版本引起的可以使用方法代替解密首先要知道微信方使用的是加密的所以我們采用也應(yīng)該對應(yīng)對密文進行解密需要解密的密文解密的初始向量解密得到的明文 問題描述 最近在開發(fā)微信小程序涉及到加密數(shù)據(jù)(encryptedData)的解密,用的是PHP代碼,在運行后報錯mcrypt_module_ xxx ...
閱讀 2725·2021-11-17 17:01
閱讀 2100·2021-09-28 09:35
閱讀 3610·2021-09-01 11:04
閱讀 879·2020-06-22 14:41
閱讀 2993·2019-08-30 15:55
閱讀 2605·2019-08-30 15:43
閱讀 2331·2019-08-26 13:54
閱讀 2524·2019-08-26 13:48