前端加密实现

以下是对用户登录流程中信息加密机制的核心内容总结,涵盖所有加密环节、算法实现细节和密码传输流程:

一、整体加密体系架构

  1. ​分层加密机制​

    • ​第一层(终端加密)​​:SM2非对称加密 + SM3哈希摘要
    • ​第二层(传输加密)​​:AES对称加密(可选)
    • ​第三层(通信加密)​​:HTTPS协议保障
  2. ​加密环节覆盖​

    graph LR
    A[用户输入] --> B[密码SM2加密]
    B --> C[SM3哈希摘要]
    C --> D{是否启用AES}
    D -->|是| E[整个请求AES加密]
    D -->|否| F[直接传输]
    E --> G[服务器解密]
    F --> G

二、核心加密算法实现细节

1. 国密算法实现(SM2/SM3)

  • ​SM2非对称加密​

    sm2.doEncrypt(str, spk, 1) // 参数:明文、服务器公钥、加密模式
    • 曲线参数:256位素数域椭圆曲线
    • 密钥长度:256位(32字节)
    • 加密输出:04||X||Y||C(04标识未压缩点,X/Y为椭圆曲线点坐标,C为密文)
  • ​SM3哈希摘要​

    sm3(this.utf8Encode(cipherText))
    • 哈希长度:256位
    • 迭代压缩:64轮消息扩展
    • 抗碰撞性:设计强度2¹²⁸

2. AES传输加密

CryptoJS.AES.encrypt(content, key, {
  mode: CryptoJS.mode.ECB,      // 电子密码本模式
  padding: CryptoJS.pad.Pkcs7   // PKCS#7填充标准
})
  • 密钥处理:Base64.parse("GXyq3KiXdoulN/JJx7dDOQ==") → 128位密钥
  • 块大小:128位(16字节)
  • 加密轮数:10轮(128位密钥)

三、密码传输加密全流程

1. 密码加密阶段

  1. ​输入处理​​:

    • 用户名:uname.trim()(去除首尾空格)
    • 密码:原始字符串输入
  2. ​SM2加密​​:

    cipherText = sm2.doEncrypt(pwd, serverPublicKey)
  3. ​完整性保护​​:

    digest = sm3(utf8Encode(cipherText)) // 对密文哈希
  4. ​组合输出​​:
    cipherText + ' ' + digest(密文与摘要空格分隔)

2. 传输封装阶段

  • ​启用AES时​​:

    reqStr = AES.encrypt(JSON.stringify({
      user: trimmedUsername,
      password: "SM2密文+摘要"
    }))

    请求体:{ userName, data: { reqStr } }

  • ​未启用AES时​​:
    直接传输:{ user, password }

3. 服务器端验证流程

  1. 解密AES层(若启用)
  2. 验证SM3摘要:received_digest == sm3(received_cipherText)
  3. SM2解密:sm2.doDecrypt(cipherText, serverPrivateKey)
  4. 密码比对:decryptedPassword == DB_storedHash

四、辅助安全机制

1. 数字签名

sign = sm2Encrypt(userName + date + digest + clientSign + publicKey)
  • ​签名元素​​:
    • 时间戳:new Date().getTime()
    • 随机数:CryptoJS.MD5(timestamp + random)
    • 报文摘要:sm3(msgStr)

2. Token生成机制

token = AES.encrypt({
  timestamp: currentTime,
  nonce: MD5(timestamp + random + url)
}) + ' ' + MD5(key)
  • 有效期:基于时间戳控制
  • 防重放:随机数+URL绑定

五、安全特性分析

安全特性 实现方式 防护目标
保密性 SM2+AES双重加密 防中间人窃听
完整性 SM3摘要验证 防数据篡改
认证性 数字签名+Token 身份合法性验证
不可否认性 客户端私钥签名 操作可追溯
时效性 时间戳+随机数 防重放攻击

六、关键技术亮点

  1. ​国密算法融合​​:SM2/SM3/SM4完整生态应用
  2. ​密钥分离机制​​:
    • 客户端:动态生成密钥对(generateKeyPairHex())
    • 服务器:固定公钥分发

七、附录

参考地址 https://github.com/JuneAndGreen/sm-crypto

posted @ 2025-07-29 22:21  Yang9710  阅读(71)  评论(0)    收藏  举报