js加密报文

2020-11-01  本文已影响0人  海豚先生的博客

案例一

非对称加密阶段:

1、前端调用login接口,后端返回publicKey;
2、前端根据publicKey对生成的randomNumber16加密生成clientPrivateKey,并传输给后端,后端根据secretKey解密出randomNumber16,生成并返回给前端对称密钥serverPrivateKey。
  - clientPrivateKey = getEncryptKey(randomNumber16,publicKey)
3、前端根据serverPrivateKey生成sm4PrivateKey,使用sm4PrivateKey加解密报文;
  - strKey = 3desDecrypt(serverPrivateKey,randomNumber16)
  - sm4PrivateKey = f(randomNumber16,strKey)  use:md5/substring/other fn

对称加密阶段:

1、请求报文加密;
  - sm4Encrypt(body)
2、响应报文解密
  - sm4Decrypt(body)

案例二

用户端保存一对publicKey
1、login获取token
2、aesKey = getEncryptKey(randomNumber16, publicKey)
  - 加密依赖包:jsencrypt
  - randomNumber16 = randomString(16)
  - publicKey 客户端的一个常量
3、报文加密 aes
encryptBody = encryptFn(body,aesKey) ,axios的data
md5Key = md5Fn(encryptBody),headers中的sign
  - 依赖包: js-md5、jsrsasign(验签)
4、报文解密aes
decryptFn(resoponse,aesKey)
上一篇 下一篇

猜你喜欢

热点阅读