前言

关于AES加密解密的笔记
之前写过一篇JavaAES PKCS7 实现方法的笔记
地址:
https://leanote.zzzmh.cn/blog/post/5cc2807b16199b7fec00034f

这次再实现一下 JavaScriptAES PKCS7
参考:
https://blog.csdn.net/fei565789229/article/details/87487250



代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>AES 测试</title>
  6. </head>
  7. <body>
  8. <label>加密前: </label><input id="data" type="text" placeholder="加密前" style="width: 80%"><br>
  9. <label>加密后: </label><input id="code" type="text" placeholder="加密后" style="width: 80%"><br>
  10. <label>解密后: </label><input id="decode" type="text" placeholder="解密后" style="width: 80%"><br>
  11. <button onclick="test()">test</button>
  12. <script src="https://cdn.staticfile.org/crypto-js/4.0.0/crypto-js.min.js" type="text/javascript"></script>
  13. <script>
  14. // 偏移量
  15. let iv = "0000000000000000";
  16. // 密钥,长度必须为16
  17. let secret_key = "1234567890123456";
  18. function parse(string) {
  19. return CryptoJS.enc.Utf8.parse(string);
  20. }
  21. function encrypt(data){
  22. // Encrypt
  23. return CryptoJS.AES.encrypt(parse(data), parse(secret_key), {
  24. iv: parse(iv),
  25. mode: CryptoJS.mode.CBC,
  26. padding: CryptoJS.pad.Pkcs7
  27. }).toString();
  28. }
  29. function decrypt(code){
  30. return CryptoJS.AES.decrypt(code, parse(secret_key),{
  31. iv: parse(iv),
  32. mode: CryptoJS.mode.CBC,
  33. padding: CryptoJS.pad.Pkcs7
  34. }).toString(CryptoJS.enc.Utf8);
  35. }
  36. function test() {
  37. const data = document.querySelector('#data').value;
  38. const code = encrypt(data);
  39. document.querySelector('#code').value = code;
  40. const decode = decrypt(code);
  41. document.querySelector('#decode').value = decode;
  42. }
  43. </script>
  44. </body>
  45. </html>


END

线上演示:
https://tczmh.gitee.io/aes-test/

效果截图:

Gitee源码:
https://gitee.com/tczmh/aes-test