crypto模块的目的是为了提供通用的加密和哈希算法。用纯JavaScript代码实现这些功能不是不可能,但速度会非常慢。Nodejs用C/C++实现这些算法后,通过cypto这个模块暴露为JavaScript接口,这样用起来方便,运行速度也快。
<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
<script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.js" charset="utf-8"></script>
</head>
<body>
<div >
<h3>密文:<p id="test" >占位</p></h3>
</div>
<hr></hr>
<div >
<h3>明文:<p id="test1" >占位</p></h3>
</div>
<script type="text/javascript">
var message="QVTi/Z2Hmq8CE6yj3zbw2A==" //998加密后的值
baseUid = "00456761jianghtopictruck" //密匙
iv_base = "360chetopictruck" //偏移量
icc = 998 //明文
s = icc.toString()
e()
d()
//加密
function e(){
var t = CryptoJS.enc.Latin1.parse(baseUid),
i = CryptoJS.enc.Latin1.parse(iv_base),
n = CryptoJS.AES.encrypt(s, t, {
iv: i,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
document.getElementById("test").innerHTML=encodeURI(n.toString());
}
//解密
function d() {
var t = CryptoJS.enc.Latin1.parse(baseUid),
i = CryptoJS.enc.Latin1.parse(iv_base)
var decrypted=CryptoJS.AES.decrypt(message,t,{
iv : i,
mode : CryptoJS.mode.CBC,
padding : CryptoJS.pad.ZeroPadding
});
document.getElementById("test1").innerHTML=decrypted.toString(CryptoJS.enc.Utf8)
}
</script>
</body>
</html>
注意:需要注意解码时的编码