当前位置: 首页 > news >正文

前端加密实现

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

一、整体加密体系架构

  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

sm2和sm3参考地址 https://github.com/yazhouZhang/js-sm2-sm3-sm4-sm9-zuc/tree/master
http://www.vanclimg.com/news/1875.html

相关文章:

  • SQL注入漏洞
  • MX galaxy Day16
  • 30天总结-第二十八天
  • 金华の第二场模拟赛
  • [Unity] 项目的一些系统架构思想
  • 多github账号的仓库配置
  • Project 2024 专业增强版安装激活步骤(附安装包)2025最新详细教程
  • MX galaxy Day15
  • Plant Com | 将基因编辑与组学、人工智能和先进农业技术相结合以提高作物产量
  • PhenoAssistant:一个用于自动植物表型分析的人工智能系统
  • 在Docker中,可以在一个容器中同时运行多个应用进程吗?
  • Computomics:利用先进的机器学习实现预测性植物育种
  • 在运维工作中,Docker 与 Kvm 有何区别?
  • 利用分子与数量遗传学最大化作物改良的遗传增益
  • 在运维工作中,详细说一下 Docker 有什么作用?
  • 7.29总结
  • busybox的编译简介
  • 基因组辅助作物改良
  • 洛谷题解:P1514 [NOIP 2010 提高组] 引水入城
  • 如何利用机器学习构建种质资源/品种分子鉴定系统?
  • 科学通报 | 万向元:生物育种技术助力作物杂种优势利用
  • 7-29
  • DP 优化 - 决策单调性与四边形不等式优化
  • 科学通报 | 大豆杂种优势利用的挑战与创新路径
  • 整合多组学先验信息来提升肉牛基因组预测的准确性
  • windows下的/data目录
  • 2025/7/29 总结
  • gComm 综述:大数据驱动的水稻群体基因组学研究
  • 基于遗传标记的连锁作图(QTL定位)群体
  • 软工作业day28