• AES(ECB/CBC) JS实现加密解密


    https://github.com/sytelus/CryptoJS

    其中 CryptoJS 使用的谷歌开源 https://code.google.com/p/crypto-js/ 

    https://code.google.com/archive/p/crypto-js/downloads

    AES对称加密,比DES安全性高。
    AES分为ECB和CBC两种方式。
    CBC模式比ECB模式安全。
    ECB模式比CBC模式快。

    CBC加密解密方式

    下载完成后在页面中引入
    rollups/aes.js
    components/pad-zeropadding.js

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>aes</title>
    6. <script src="aes.js"></script>
    7. <script src="pad-zeropadding.js"></script>
    8. </head>
    9. <body>
    10. <script type="text/javascript">
    11. CBC();
    12. function CBC() {
    13. var key = "0000000671595991";
    14. var iv = "tdrdadq59tbss5n7";
    15. var pazzword = '123456';
    16. console.log('pazzword:' + pazzword);
    17. // aes 加密
    18. pazzword = encrypt(pazzword, key, iv);
    19. console.log('加密后:' + pazzword);
    20. if (pazzword.length == 24) {
    21. pazzword = decrypt(pazzword, key, iv);
    22. console.log('解密后:' + pazzword);
    23. }
    24. }
    25. // 加密
    26. function encrypt(data, key, iv) { //key,iv:16位的字符串
    27. var key1 = CryptoJS.enc.Latin1.parse(key);
    28. var iv1 = CryptoJS.enc.Latin1.parse(iv);
    29. return CryptoJS.AES.encrypt(data, key1, {
    30. iv: iv1,
    31. mode: CryptoJS.mode.CBC,
    32. padding: CryptoJS.pad.ZeroPadding
    33. }).toString();
    34. }
    35. // 解密
    36. function decrypt(data, key, iv) { //key,iv:16位的字符串
    37. var key1 = CryptoJS.enc.Latin1.parse(key);
    38. var iv1 = CryptoJS.enc.Latin1.parse(iv);
    39. var decrypted = CryptoJS.AES.decrypt(data, key1, {
    40. iv: iv1,
    41. mode: CryptoJS.mode.CBC,
    42. padding: CryptoJS.pad.ZeroPadding
    43. });
    44. return decrypted.toString(CryptoJS.enc.Utf8);
    45. }
    46. </script>
    47. </body>
    48. </html>

    ECB加密解密方式

    下载完成后在页面中引入
    rollups/aes.js
    components/mode-ecb.js
    components/pad-zeropadding.js

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>aes</title>
    6. <script src="aes.js"></script>
    7. <script src="mode-ecb.js"></script>
    8. <script src="pad-zeropadding.js"></script>
    9. </head>
    10. <body>
    11. <script type="text/javascript">
    12. ECB();
    13. function ECB() {
    14. var key = "0000000671595991";
    15. var iv = "tdrdadq59tbss5n7";
    16. var pazzword = '123456';
    17. console.log('pazzword:' + pazzword);
    18. // aes 加密
    19. pazzword = encrypt(pazzword, key, iv);
    20. console.log('加密后:' + pazzword);
    21. if (pazzword.length == 24) {
    22. pazzword = decrypt(pazzword, key, iv);
    23. console.log('解密后:' + pazzword);
    24. }
    25. }
    26. // 加密
    27. function encrypt(data, key, iv) { //key,iv:16位的字符串
    28. var key1 = CryptoJS.enc.Latin1.parse(key);
    29. var iv1 = CryptoJS.enc.Latin1.parse(iv);
    30. return CryptoJS.AES.encrypt(data, key1, {
    31. iv: iv1,
    32. mode: CryptoJS.mode.ECB,
    33. padding: CryptoJS.pad.ZeroPadding
    34. }).toString();
    35. }
    36. // 解密
    37. function decrypt(data, key, iv) { //key,iv:16位的字符串
    38. var key1 = CryptoJS.enc.Latin1.parse(key);
    39. var iv1 = CryptoJS.enc.Latin1.parse(iv);
    40. var decrypted = CryptoJS.AES.decrypt(data, key1, {
    41. iv: iv1,
    42. mode: CryptoJS.mode.ECB,
    43. padding: CryptoJS.pad.ZeroPadding
    44. });
    45. return decrypted.toString(CryptoJS.enc.Utf8);
    46. }
    47. </script>
    48. </body>
    49. </html>

    Java实现方式

    AES对称加密_小百菜的博客-CSDN博客

    注意修改代码中的填充方式:

    AES/CBC/PKCS5Padding 改为 AES/CBC/NoPadding
    AES/ECB/PKCS5Padding 改为 AES/ECB/NoPadding
    

    在线测试

    在线测试http://tool.chacuo.net/cryptaes

  • 相关阅读:
    后视镜为什么要检测反射率
    2023.11.18 Hadoop之 YARN
    嵌入式Linux—Framebuffer应用编程
    云计算及其应用知识点总结
    SSM框架之MyBatis入门(Maven工程实现全查功能,快速入门,适合小白)
    Java集中常见的排序
    [附源码]计算机毕业设计美发店会员管理系统Springboot程序
    一日一技:用Python做游戏有多简单 (2)
    Python 关键字 yield
    聚美优品API 根据ID取商品详情 Onebound跨境电商api接口
  • 原文地址:https://blog.csdn.net/u014644574/article/details/128128149