彭率 2019-07-18 10:54 采纳率: 40%
浏览 923
已采纳

第三方应用接入数据传输加密方案

应用场景:程序内部需要和第三方程序进行数据交互,设计了加密方案
加密流程:
1.程序在交互开始前已经提供给第三方某个标识
2.第三方根据该标识访问我方加密服务获取动态密钥
3.第三方根据动态密钥对即将传输给我方的数据进行加密,
并将动态密钥和加密后的数据传递给我方
4.我方根据得到的动态密钥,对数据进行解密
说明:加密算法使用我方提供的jar包

本人对加密的业务流程及方法并不熟悉,希望那位能对加密的流程
进行一个详细的说明,尤其是动态密钥在各个环节的用途

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-07-18 19:17
    关注

    首先要搞清楚为什么要加密,主要是解决这么几个问题:

    (1)确保服务器和客户端之间的通讯如果被窃听,那么窃听者无法知道传输的明文数据是什么。
    (2)对于服务器来说,确保只有你认可的客户端在和你通讯,别的伪造的客户端无权和你通讯。
    (3)对于服务器来说,确保客户端传输来的数据,通过中间网络转发的时候,数据没有被篡改。

    因此你可以用一种非对称的加密算法,解释下为什么能做到这3点。
    对于非对称的加密算法,通讯的双方各需要一个密钥,你生成随机的2个密钥,你掌握一个密钥(k1),叫做私钥,你给第三方一个(k2),叫做公钥。
    如果你要和很多第三方通讯,那么你需要生成很多不同的密钥,总之,不同的第三方有不同的密钥。
    当你需要和某个第三方通讯的时候,你用你的k1对发送的数据加密。把数据传输给第三方,第三方用你给的k2解密得到原文。第三方给你回传数据正好相反。

    对于问题(1),窃听者没有密钥,所以无法对数据解密,知道你们在通讯的内容
    对于问题(2),只有授权的一方有密钥,如果他没有密钥,他加密的数据也是无法解密的,因此是无效的数据。
    对于问题(3),因为加密、解密用的密钥不同,所以第三方无法篡改或者伪造你发出的加密数据,他只能解密你的数据,而不能反过来制作加密的数据。
    因此即便他知道整个加密算法的原理(比如对你的jar反编译,得到了算法和密钥),知道公钥,但是它不能冒充你。

    那么非对称算法的原理是什么呢,这个主要利用的是大质数因数分解比较困难,而公钥、私钥分别是两个超大的质数。

    上面说的是理论,以java为例,你可以用aes rsa或者des,因为它们都是非对称的加密算法。其中运用最广泛的是aes,甚至现代cpu都在硬件上直接实现了aes。
    可以参考:

    https://www.cnblogs.com/chen-lhx/p/5817161.html
    https://blog.51cto.com/1385903/2094164

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题