Skip to content

A case of rsa+aes mixed encryption based on nodejs crypto

License

Notifications You must be signed in to change notification settings

Republix/RSA-AES-CASE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RSA+AES混合加密演示

模拟双方(node)加密通信的流程,使用分段加密解密RSA

english

演示

# 安装依赖
yarn

# 执行演示
yarn run start

流程

简化流程:

1 拿到服务端publicKey

2 通过双向加密通信交换publicKey,服务端返回加密的AES给客户端

3 客户端利用获取到的aes进行数据加密传送业务(敏感)数据

在流程开始前 服务端应有RSA公钥(serverPublicKey)私钥(serverPrivateKey),以及AES密钥(serverAESKey),客户端应有RSA公钥(clientPublicKey)私钥(clientPrivateKey)

  1. (第一次请求) 客户端请求服务端获取serverPublicKey
  2. 服务端将serverPublicKey返回给客户端
  3. (第一次响应) 客户端收到明文serverPublicKey
  4. (第二次请求) 客户端利用serverPublicKeyclientPublicKey进行加密得到加密后的公钥数据encryptedClientPublicKey, 将encryptedClientPublicKey发送给服务端
  5. 服务端利用serverPrivateKeyencryptedClientPublicKey进行解密,解密后得到的clientPublicKey
  6. 服务端利用clientPublicKeyserverAESKey进行加密得到encryptedAesKey并将其返回给客户端
  7. (第二次响应) 客户端拿到加密的AES数据encryptedAesKey, 利用自己的clientPrivateKey对其解密得到serverAESKey
  8. (第三次请求) 客户端将数据利用serverAESKey对要发送给后台的业务(敏感)数据进行加密, 发送利用aes加密后的数据
  9. 服务端拿到加密后的业务(敏感)数据并利用serverAESKey进行解密
  10. (第三次响应) 处理业务逻辑. 返回经serverAESKey加密的业务数据给客户端, 客户端利用serverAESKey进行aes解密得到关键数据

About

A case of rsa+aes mixed encryption based on nodejs crypto

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages