这几天公司给了一个项目,说为了用户安全性,须要加密,我在网上找了一些加密,发现Crypto-JS 挺好的用的 我就用了Crypto-JS DES加密,期间出现一些错误,发现这些错误都在我引入的Crypto-JS文件里面,刚开始觉得文件引入错误,从新引入了几遍仍是不行,都会出现错。
不说了上代码,代码我也是借鉴的网上的,大部分都相同。
须要Crypto-JS引入文件的网上也有不少,能够去找一下。javascript
```javascript <body> <div> 加密前:<textarea id="source" value="" style="width:500px;height:90px;" /></textarea> <hr> 加密后:<textarea id="target" value="" style="width:500px;height:90px;" ></textarea> <hr> <input type="button" onclick="test();" name="" value="加密" /> <hr> 密文:<textarea id="sourceS" value="" width="400px" style="width:500px;height:90px;" ></textarea> <hr> 解密后:<textarea id="jiemi" value="" style="width:500px;height:90px;" ></textarea> <hr> <input type="button" onclick="test1();" onclick="text2()" name="" value="解密"/> </div> </body> <script type="text/javascript"> var key = 'BOTWAVEE'; //CBC模式加密 function encryptByDESModeCBC(message) { var keyHex = CryptoJS.enc.Utf8.parse(key); var ivHex = CryptoJS.enc.Utf8.parse(key); encrypted = CryptoJS.DES.encrypt(message, keyHex, { iv:ivHex, mode: CryptoJS.mode.CBC, padding:CryptoJS.pad.Pkcs7 } ); return encrypted.ciphertext.toString(); } //CBC模式解密 function decryptByDESModeCBC(ciphertext2) { var keyHex = CryptoJS.enc.Utf8.parse(key); var ivHex = CryptoJS.enc.Utf8.parse(key); // direct decrypt ciphertext var decrypted = CryptoJS.DES.decrypt({ ciphertext: CryptoJS.enc.Hex.parse(ciphertext2) }, keyHex, { iv:ivHex, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8); } //DES ECB模式加密 function encryptByDESModeEBC(message){ var keyHex = CryptoJS.enc.Utf8.parse(key); var encrypted = CryptoJS.DES.encrypt(message, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return encrypted.ciphertext.toString(); } //DES ECB模式解密 function decryptByDESModeEBC(ciphertext){ var keyHex = CryptoJS.enc.Utf8.parse(key); var decrypted = CryptoJS.DES.decrypt({ ciphertext: CryptoJS.enc.Hex.parse(ciphertext) }, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); var result_value = decrypted.toString(CryptoJS.enc.Utf8); return result_value; } function test(){ var source = $("#source").val(); var cc = encryptByDESModeEBC(CryptoJS.enc.Utf8.parse(source)); $("#target").val(cc); } function test1(){ var source = $("#sourceS").val(); var dd = decryptByDESModeEBC(source); $("#jiemi").val(dd); } </script> ```
接下来要引入DES的文件,
java
```javascript <script type="text/javascript" src="js/tripledes.js" ></script> <script type="text/javascript" src="js/mode-ecb.js" ></script> ```
除了要引入这俩个文件外,还要引入jq文件,固然,若是你代码里面没有用到jq就不用引发jq文件了。
而后你运行会这个错误
没有引入Crypto-JS文件,明明已经引入了,网上找了一些,发现还要引入一个整体的文件,就是这个安全
<script type="text/javascript" src="js/core.js" ></script>
这个总能够吧,结果发现还有错误,
未定义为 ‘extend’ 但是代码里面也没有这个,最后发现还少一个引入文件加密
<script type="text/javascript" src="js/cipher-core.js" ></script>
把这个引入就能够了,
**还有一个值的注意,引入文件时,这个文件必定要放在最上面,否则还会报错**code
<script type="text/javascript" src="js/core.js" ></script>
好了,大体也就这样,但愿对你们有帮助,最后代码结果
blog