非对称加密+数字签名+对称加密基本交互原理

主要内容:纯文字说明如何实现基于RSA+DES+数字签名实现的业务交互流程

说明 内容
A的私钥 A-PRIVATE-KEY
B的公钥 B-PUBLIC-KEY
B的私钥 B-PRIVATE-KEY
A的公钥 A-PUBLIC-KEY
发送内容 content "IloveU"
对称加密 encryptKey "2023pwd!@#"
对称加密算法 3DES
摘要算法 MD5

第一步:
A用密钥encryptKey,对 发送内容content 用对称加密算法3DES对称加密aes(content,encryptKey),结果假定为"U2FsdGVkX1/t+ZN8kgO0ItmGoNfBuBHUPaVR3rSrSt4="

第二步:
A用md5对 content 生成摘要:md5(content),结果假为"91AFEAB3EC15EBC7F82DB66C6D443ACB"

第三步:
A用"A-PRIVATE-KEY",对摘要md5(content)的结果进行签名。

第四步:
A用B的公钥对第一步的随机密钥key加密,可附带说明对称加密算法为3DES,摘要算法为MD5。
A-PRIVATE-KEY(encryptKey,summaryAlgorithm,encryptAlgorithm)结果假定为:"U2FsdGVkX1+gTjW/2dQl1/8YD5Xl9w"

综上,A向B的放松内容为以下字段

array (
   //经过A签名的摘要(md5生成摘要后,对此摘要进行签名)
  'contentSummary' => '91AFEAB3EC15EBC7F82DB66C6D443ACB',
  //通过对称加密算法加密的原始数据(加密数据)
  'encryptContent' => 'U2FsdGVkX1/t+ZN8kgO0ItmGoNfBuBHUPaVR3rSrSt4=',
  //用B的公钥加密的摘要算法、对称加密算法,对称加密key三个字段
  'encryptKey' => 'U2FsdGVkX1+gTjW/2dQl1/8YD5Xl9w',
)
接收方 B 内容
加密内容: encryptContent U2FsdGVkX1/t+ZN8kgO0ItmGoNfBuBHUPaVR3rSrSt4=
加密key: encryptKey U2FsdGVkX1+gTjW/2dQl1/8YD5Xl9w
加密内容摘要: contentSummary 91AFEAB3EC15EBC7F82DB66C6D443ACB

第一步:
B用自己的私钥解密加密key字段“encryptKey”,得到摘要算法、对称加密算法、对称加密的key,对应的值为MD4,3DES,2023pwd!@#
第二步:
B对加密内容字段 "encryptContent”.利用第一步得到的结果3DES算法和对称加密的key进行数据解密,得到原始内容的明文。再次用第一步得到的md5摘要算法(无需key),重新生成生一份(明文)摘要留作备用。

第三步:
B用A的公钥解密A发送的 “加密内容摘要contentSummary”字段得到一份摘要的明文,与第二步的重新生成的摘要做对比。如果一致,代表通信数据未被篡改。且此时A不能抵赖,因为A用自己的私钥已经对摘要算法进行了签名。同时数据由于本身通过aes进行加解密,也保证了数据的保密性。

备注:CA证书注册,生成,验证等细节略过。

你可能感兴趣的:(rsa加密解密)