登录加密方式解读

1.获取地址中通过DES加密过的参数v。

  1. 使用DES解密参数v值。 获取登录信息main
  2. 将main信息保存到session中
  3. 使用 main信息和 serverStr(一个字符串)去调用登录接口

4.1将main信息和serverStr封装成一个json数据info作为提交参数
serverStr为对应接口的一个字符串
Date和Time为当前日期和时间,
userId和menuId在cookie中的获取默认为空,
appid和appkey为产品固定字符串
sign 为随机字符串长度20

4.2 将info转化为提交的数据dataInfo
timestamp:时间字符串
nonce:随机字符串长度为10
appid:cookie中的获取默认为空(info中的appid)
data:对info进行AES加密获取到的数据。
加密密钥为固定值或后台给
signature:timestamp、nonce、data、sigkey四个排序拼接为字符串
后做SHA1哈希加密的结果。 作为签名。
sigkey为签名密钥后台给或固定值.
version:版本号,固定字符串

4.3 将4.2中拿到的dataInfo作为ajax请求的data数据,请求登录接口,请求成功返回responseData

4.4 对responseData进行SHA1验签和AES解密

4.4.1 拿到responseData中的timestamp、nonce、data和本地sigKey排序拼接为字符串进行SHA1哈希
加密生成signatureTwo签名
4.4.2signatureTwo和responseData中的signature做比较是否相等。
如果相等解密responseData中的data数据,如果不相等报错
4.4.3使用secKey对responseData中的data数据进行AES解密。
4.4.4将解密数据通过接口回调返回给ajax调用者


登录加密方式解读_第1张图片
image.png

过程

  1. 要发送的数据A

  2. 要发的数据A通过对称加密秘钥O(AES加密)得到密文数据B,数据B和其他签名数据C1和C2、签名关键D一起用哈希算法SHA1生成签名E (签名关键字D和秘钥O是前后台一起约定好的, C1,C2本地生成的)

  3. B和E和C1和C2一起发送给后台

  4. 后台怎么处理???
    4.1后台用签名关键字D,签名数据C1、C2和密文数据B用相同的哈希算法SHA1签名,生成新的签名E2, 判断E和E2是否想对,相等, 数据没有篡改过,安全。 然后用秘钥O解密数据B拿到登录信息A。 后面 组织要发送给前端的数据Y,使用加密秘钥O加密Y生成密文F,将密文F和签名关键字D和C1和C2一起哈希SHA1运算生成签名G。 将签名G和加密的数据F,C1,C2组织成数据M回传给前端
    4.2另外C1,C2可以是时间戳或者某规则字符串。 服务器可以通过比较发送的时间和接收的时间的差值来判断是否被拦截过,来确认秘钥O是否被破解过(破解秘钥耗时的)提高安全性,也可以判断规则字符串是否符合该规则

  5. 前端拿到返回的数据M(包含签名数据C1和C2,加密过的数据F,和一个签名G)

  6. 前端从M中拿到的签名数据C1、C2和加密过的数据F,加密关键字D生成签名G2

  7. G2和G对比,相等则数据没有篡改,安全

  8. 使用AES秘钥O解密数据F拿到返回的数据Y

另外非对称加密过程

假如现在 你向支付宝 转账(术语数据信息),为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:

  1. 首先你要确认是否是支付宝的数字证书,如果确认为支付宝身份后,则对方真实可信。可以向对方传送信息,

  2. 你准备好要传送的数字信息(明文)计算要转的多少钱,对方支付宝账号等;

  3. 你 对数字信息进行哈希运算,得到一个信息摘要(客户端主要职责);

  4. 你 用自己的私钥对信息摘要进行加密得到 你 的数字签名,并将其附在数字信息上;

  5. 你 随机产生一个加密密钥,并用此密码对要发送的信息进行加密(密文);

  6. 你用 支付宝的公钥对刚才随机产生的加密密钥进行加密,将加密后的 DES 密钥连同密文一起传送给支付宝;

  7. 支付宝收到 你 传送来的密文和加密过的 DES 密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 你随机产生的加密密钥;

  8. 支付宝 然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃;

  9. 支付宝 用你 的公钥对 你的的数字签名进行解密,得到信息摘要;

  10. 支付宝用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要;

  11. 支付宝将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。

  12. 确定收到信息,然后进行向对方进行付款交易,一次非对称密过程结束。在这后面的流程就不属于本次非对称加密的范畴,算支付宝个人的自我流程,也就是循环以上过程。

参考:https://www.jianshu.com/p/b078282653b3

你可能感兴趣的:(登录加密方式解读)