http/https 数据加密传输的一些简要思考

 

网络环境,http/https 数据传输,有时候我们需要特别保证数据传输的安全性和私密性,为了防止数据被串改和窃取,比较常见的做法,是采用https,按照ssl 协议进行加密传输,当然也有客户端对请求的数据进行签名,服务端对接收的数据进行验签,来达到保证数传输的准确性,除此之外,还有没有其他的方案呢?

这就需要我们了解 非对称加密的思想了  非对称加密算法

基于非对称加密的公私钥, 客户端可以用私钥对传输的数据进行加密,服务端可以用私钥对应的公钥,进行解密,从而能达到要求。  JAVA实现RSA生成公私钥/加解密/签名验签 

当然在公私钥加解密的过程中,也可以附加 签名和验签,来进一步保证的传输数据的私密性、安全性和正确性,具体思路如下:

思路方案一:

   /** 私钥加密-签名  ——>  验签-公钥解密
     * 客户端操作:
     *
     * 原串:{"aa":1}
     *
     * 私钥加密 {"context":"aaaxxx"}   aaaxxx为 {"aa":1} 的密文
     *
     * 签名并拼装请求数据  {"context":"aaaxxx","signData":"xxyy"}   xxyy为 对 {"context":"aaaxxx"} 的签名
     *
     * 服务端操作:
     *
     * 接收参数数据:{"context":"aaaxxx","signData":"xxyy"}
     *
     * 验签  true
     *
     * 公钥解密  aaaxxx ——> {"aa":1}
     *
     * 执行业务
     *
     */

思路方案二:

   /** 签名-私钥加密  ——> 公钥解密-验签
     *
     * 客户端:
     *
     * 原串:{"aa":1}
     *
     * 签名 {"aa":1,"signData":"xxyy"}
     *
     * 私钥加密  aaaxxx
     *
     *
     *
     * 服务端:
     *
     * 接收的密文: aaaxxx
     *
     * 公钥解密 : {"aa":1,"signData":"xxyy"}
     *
     * 验签 true
     *
     * 执行业务
     */

方案一和方案二只是加解密和签名的顺序不一样,功效上差别不大,相较于方案二,方案一额外增加了非业务字段key:contex,不算太可取,个人更倾向于方案二。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值