JavaScript實(shí)現(xiàn)加密與解密詳解
目前原生JS貌似并沒(méi)有提供MD5計(jì)算相關(guān)的函數(shù)方法,只能自己實(shí)現(xiàn)或者使用前輩大神寫好的。
一、使用crypto.js庫(kù)進(jìn)行加密
GitHub的 https://github.com/brix/crypto-js 上下載該js。
它可以單獨(dú)引入所需要加密方式的js;也可以引入一個(gè)crypto-js.js 這個(gè)文件,它相當(dāng)于引入了所有的加密方式。
用法:
<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script>
<script type="text/javascript">
var encrypted = CryptoJS.AES(...);
var encrypted = CryptoJS.SHA256(...);
</script>1、舉例:
Hash加密:
//加密實(shí)例一
console.log("加密結(jié)果一 MD5:"+CryptoJS.MD5("你好"));
//加密實(shí)例二
var pwd="passwor";
console.log("加密結(jié)果二 Hmac-MD5: "+CryptoJS.HmacMD5("你好",pwd));AES對(duì)稱加密:
普通文本加密
// 加密
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();
// 解密
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var originalText = bytes.toString(CryptoJS.enc.Utf8);
console.log(originalText); // 'my message'對(duì)象加密
var data = [{id: 1}, {id: 2}]
// 加密
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();
// 解密
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
console.log(decryptedData); // [{id: 1}, {id: 2}]Custom Key and IV
var key = CryptoJS.enc.Utf8.parse('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); //密鑰
var iv = CryptoJS.enc.Utf8.parse('1234567812345678');
// 加密
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });
// 解密
var decrypted =CryptoJS.AES.decrypt(encrypted,key,
{
iv:iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
});
var originalText = decrypted.toString(CryptoJS.enc.Utf8); Block Modes and Padding
var key = CryptoJS.enc.Utf8.parse('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); //密鑰
var iv = CryptoJS.enc.Utf8.parse('1234567812345678');
var encrypted =CryptoJS.AES.encrypt("Message", ,key,
{
iv:iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
}); //返回的是base64格式的密文2、API
See: https://cryptojs.gitbook.io/docs/
編碼工具:
var words = CryptoJS.enc.Base64.parse("SGVsbG8sIFdvcmxkIQ==");
?var base64 = CryptoJS.enc.Base64.stringify(words);
?
var words = CryptoJS.enc.Hex.parse("48656c6c6f2c20576f726c6421");
?var hex = CryptoJS.enc.Hex.stringify(words);
?
var words = CryptoJS.enc.Utf8.parse("");
?var utf8 = CryptoJS.enc.Utf8.stringify(words);二、使用JavaScript-MD5庫(kù)進(jìn)行加密
GitHub的 https://github.com/blueimp/JavaScript-MD5 上下載該js。
舉例:
Calculate the (hex-encoded) MD5 hash of a given string value:
var hash = md5('value') // "2063c1608d6e0baf80249c42e2be5804"
var v1= md5('{"name":"嘻嘻嘻嘻嘻嘻嘻嘻嘻","age":22}'); //56b21847ed32d2d96cf74077b22342ebCalculate the (hex-encoded) HMAC-MD5 hash of a given string value and key:
var hash = md5('value', 'key') // "01433efd5f16327ea4b31144572c67f6"Calculate the raw MD5 hash of a given string value:
var hash = md5('value', null, true)Calculate the raw HMAC-MD5 hash of a given string value and key:
var hash = md5('value', 'key', true)到此這篇關(guān)于JavaScript實(shí)現(xiàn)加密與解密詳解的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 常規(guī)常用的JavaScript加密解密實(shí)例demo
- crypto-js對(duì)稱加密解密的使用方式詳解(vue與java端)
- 使用JS前端加密庫(kù)sm-crypto實(shí)現(xiàn)國(guó)密sm2、sm3和sm4加密與解密
- vue項(xiàng)目中使用crypto-js實(shí)現(xiàn)加密解密方式
- js前端加密庫(kù)Crypto-js進(jìn)行MD5/SHA256/BASE64/AES加解密的方法與示例
- JavaScript中常見(jiàn)加密解密方法總結(jié)
- JavaScript實(shí)現(xiàn)的簡(jiǎn)單加密解密操作示例
- JavaScript插件為什么看不懂,使用了什么技術(shù)?(示例講解)
相關(guān)文章
JavaScript全屏和退出全屏事件總結(jié)(附代碼)
這篇文章主要介紹了JavaScript全屏和退出全屏事件,先通過(guò)window.ieIsfSceen = false或true進(jìn)行判斷是否為全屏,在進(jìn)行進(jìn)入全屏和退出全屏的操作,需要的朋友可以參考下2017-08-08
關(guān)于javascript sort()排序你可能忽略的一點(diǎn)理解
最近在研究Javascript發(fā)現(xiàn)了其中一些之前忽略的問(wèn)題,所以想著總結(jié)分享出來(lái),下面這篇文章主要給大家介紹了關(guān)于javascript sort()排序你可能忽略的一點(diǎn)理解,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-07-07
JS中的form.submit()不能提交表單的錯(cuò)誤原因
這篇文章主要介紹了JS中的form.submit()不能提交表單的錯(cuò)誤原因,本文最后得出結(jié)論是按鈕的ID、名稱不要使用submit,需要的朋友可以參考下2014-10-10
JavaScript數(shù)據(jù)結(jié)構(gòu)yocto queue隊(duì)列鏈表代碼分析
這篇文章主要為大家介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)yocto queue隊(duì)列鏈表代碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
JavaScript動(dòng)態(tài)添加css樣式和script標(biāo)簽
這篇文章主要介紹了JavaScript動(dòng)態(tài)添加css樣式和script標(biāo)簽的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
js原生代碼實(shí)現(xiàn)輪播圖的實(shí)例講解
下面小編就為大家?guī)?lái)一篇js原生代碼實(shí)現(xiàn)輪播圖的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07

