• 分析各大常用的JS加密优缺点


    1. Base64编码:

      • 优点:

        • 简单,易于实现。
        • 不是真正的加密,只是编码,可以用于数据传输和存储。
      • 缺点:

        • 不提供数据保密性,容易被解码。
      • 示例代码:

        // 编码
        const encodedData = btoa('Hello, World!');
        console.log(encodedData);
        
        // 解码
        const decodedData = atob(encodedData);
        console.log(decodedData);
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
    2. 哈希函数:

      • 优点:

        • 提供数据完整性验证。
        • 相同输入始终生成相同的哈希值。
      • 缺点:

        • 不可逆,无法还原原始数据。
        • 容易受到彩虹表攻击。
      • 示例代码: 使用JavaScript的crypto.subtle来计算SHA-256哈希值的示例代码:

        async function calculateSHA256Hash(data) {
          const encoder = new TextEncoder();
          const dataBuffer = encoder.encode(data);
          const hashBuffer = await crypto.subtle.digest('SHA-256', dataBuffer);
          const hashArray = Array.from(new Uint8Array(hashBuffer));
          const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');
          return hashHex;
        }
        
        const originalData = 'Hello, World!';
        calculateSHA256Hash(originalData).then(hash => {
          console.log(hash); // SHA-256哈希值
        });
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
    3. 对称加密:

      • 优点:

        • 加密和解密速度快。
        • 适用于大量数据加密。
      • 缺点:

        • 密钥管理可能复杂。
        • 需要安全地传输密钥。
      • 示例代码: 使用Web Crypto API进行AES加密的示例代码:

        async function encryptData(data, key) {
          const encoder = new TextEncoder();
          const dataBuffer = encoder.encode(data);
          const encryptedData = await crypto.subtle.encrypt({ name: 'AES-GCM', iv: new Uint8Array(12) }, key, dataBuffer);
          return new Uint8Array(encryptedData);
        }
        
        async function decryptData(encryptedData, key) {
          const decryptedData = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: new Uint8Array(12) }, key, encryptedData);
          const decoder = new TextDecoder();
          return decoder.decode(decryptedData);
        }
        
        // 生成随机AES密钥
        crypto.subtle.generateKey({ name: 'AES-GCM', length: 256 }, true, ['encrypt', 'decrypt']).then(key => {
          const originalData = 'Hello, World!';
          encryptData(originalData, key)
            .then(encryptedData => decryptData(encryptedData, key))
            .then(decryptedData => {
              console.log(decryptedData); // 解密后的数据
            });
        });
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
    4. 非对称加密:

      • 优点:

        • 安全性高,一个密钥用于加密,另一个用于解密。
        • 适用于安全通信和数字签名。
      • 缺点:

        • 加密和解密速度相对较慢。
        • 密钥管理复杂。
      • 示例代码: 使用Node.js中的crypto模块执行RSA加密的示例代码:

        const crypto = require('crypto');
        
        // 生成RSA密钥对
        const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
          modulusLength: 2048,
          publicKeyEncoding: {
            type: 'spki',
            format: 'pem',
          },
          privateKeyEncoding: {
            type: 'pkcs8',
            format: 'pem',
          },
        });
        
        const originalData = 'Hello, World!';
        
        // 加密
        const encryptedData = crypto.publicEncrypt(publicKey, Buffer.from(originalData));
        console.log(encryptedData.toString('base64'));
        
        // 解密
        const decryptedData = crypto.privateDecrypt(privateKey, encryptedData);
        console.log(decryptedData.toString());
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
        • 24
    5. JS在线加密

    js在线加密是一款国内顶尖的js保护方案,已经有许多客户使用。同时配备了一键在线解密其他简单加密的功能.

  • 相关阅读:
    方案:数智化视频AI技术为智慧防汛筑基,构建防汛“数字堤坝”
    【JAVA秘籍功法篇-SpringBoot】SpringBoot如何集成Redis?
    推荐一个AI人工智能技术网站(一键收藏,应有尽有)
    代码随想录算法训练营第三十九天|62.不同路径, 63. 不同路径 II
    分布式缓存寻址算法
    pytorch 提取网络中的某一层并冻结其参数
    python 文本文件的编码格式:ASCII编码和UNICODE编码
    分享VR眼镜加密播放器OEM方案
    蓝桥杯-班级活动
    SpringMvc(一)-初识
  • 原文地址:https://blog.csdn.net/mxd01848/article/details/133000820