• HTML使用 crypto-js-AES 加密


    HTML引入crypto-js.min.js

    <script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>

    vue安装crypto-js

    npm install crypto-js

    加解密方法

    1. const key = CryptoJS.enc.Utf8.parse("1234567890hijklm"); // 十六位十六进制数作为密钥
    2. const iv = CryptoJS.enc.Utf8.parse('1234567890abcdef'); // 十六位十六进制数作为密钥偏移量
    3. /* 加密方法 */
    4. function myEncrypt(word) {
    5. const srcs = CryptoJS.enc.Utf8.parse(word);
    6. const encrypted = CryptoJS.AES.encrypt(srcs, key, {
    7. iv,
    8. mode: CryptoJS.mode.CBC,
    9. padding: CryptoJS.pad.Pkcs7
    10. });
    11. return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
    12. }
    13. /* 解密方法 */
    14. function myDecrypt(word) {
    15. const encryptedHexStr = CryptoJS.enc.Base64.parse(word);
    16. const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    17. const decrypt = CryptoJS.AES.decrypt(srcs, key, {
    18. iv,
    19. mode: CryptoJS.mode.CBC,
    20. padding: CryptoJS.pad.Pkcs7
    21. });
    22. const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    23. return decryptedStr.toString();
    24. }

    使用

    1. const inputVal = '12345'; // 加密内容
    2. let encPwd = myEncrypt(inputVal); // 加密方法
    3. encPwd = JSON.stringify(encPwd); // 将JavaScript对象转换为字符串
    4. encPwd = JSON.parse(encPwd); // 将字符串解析为JavaScript对象
    5. const decPwd = myDecrypt(encPwd); // 解密方法
    6. const UGC = '原内容:' + inputVal; // 原内容
    7. const nencrypted = '加密后:' + encPwd; // 加密后
    8. const decrypted = '解密后:' + decPwd; // 解密后
    9. document.getElementById('box').innerHTML = UGC + '
      '
      + nencrypted + '
      '
      + decrypted;

    完整代码

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>crypto-js-AES加密</title>
    6. <!-- 加密 -->
    7. <script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>
    8. </head>
    9. <body>
    10. <input type="text" id="frame" placeholder="请输入加密内容" />
    11. <button id="btn">加密</button>
    12. <div id="box" style="margin-top: 20px"></div>
    13. </body>
    14. <script>
    15. document.getElementById("btn").onclick = function() {
    16. const inputVal = document.getElementById("frame").value; // 加密内容
    17. if (!inputVal) {
    18. alert('请输入加密内容');
    19. return;
    20. }
    21. let encPwd = myEncrypt(inputVal); // 加密方法
    22. encPwd = JSON.stringify(encPwd); // 将JavaScript对象转换为字符串
    23. encPwd = JSON.parse(encPwd); // 将字符串解析为JavaScript对象
    24. const decPwd = myDecrypt(encPwd); // 解密方法
    25. const UGC = '原内容:' + inputVal; // 原内容
    26. const nencrypted = '加密后:' + encPwd; // 加密后
    27. const decrypted = '解密后:' + decPwd; // 解密后
    28. document.getElementById('box').innerHTML = UGC + '
      '
      + nencrypted + '
      '
      + decrypted;
    29. };
    30. </script>
    31. <!-- CryptoJS.js -->
    32. <script>
    33. const key = CryptoJS.enc.Utf8.parse("1234567890hijklm"); // 十六位十六进制数作为密钥
    34. const iv = CryptoJS.enc.Utf8.parse('1234567890abcdef'); // 十六位十六进制数作为密钥偏移量
    35. /* 加密方法 */
    36. function myEncrypt(word) {
    37. const srcs = CryptoJS.enc.Utf8.parse(word);
    38. const encrypted = CryptoJS.AES.encrypt(srcs, key, {
    39. iv,
    40. mode: CryptoJS.mode.CBC,
    41. padding: CryptoJS.pad.Pkcs7
    42. });
    43. return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
    44. }
    45. /* 解密方法 */
    46. function myDecrypt(word) {
    47. const encryptedHexStr = CryptoJS.enc.Base64.parse(word);
    48. const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    49. const decrypt = CryptoJS.AES.decrypt(srcs, key, {
    50. iv,
    51. mode: CryptoJS.mode.CBC,
    52. padding: CryptoJS.pad.Pkcs7
    53. });
    54. const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    55. return decryptedStr.toString();
    56. }
    57. </script>
    58. </html>

    更多加密方法可参考:

    JS中利用CryptoJS进行MD5/SHA256/BASE64/AES加密解密的方法与示例

  • 相关阅读:
    GPT-3 内幕机制可视化解析
    剑指 Offer II 037. 小行星碰撞
    Linux中通配符、shell元字符、转义符
    多网络设备存在时,如何配置其上网优先级?
    Map.Entry理解和应用
    mathlive在vue中使用
    ipython、jupyter 在代码执行前修改待执行的代码
    Bean的生命周期及演示
    GitHub标星百万的程序员转架构之路,竟被阿里用作内部晋升参考
    小程序底层架构剖析
  • 原文地址:https://blog.csdn.net/AdminGuan/article/details/126850974