ThefFirsttThelLast
彭率
采纳率90%
2019-07-18 10:54

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

40
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 2年前

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

    (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

    点赞 1 评论 复制链接分享
  • French_fries Burcy Wen 2年前

    1、可以采用RSA算法加密,生成处一对公私钥,把公钥提供给对方,自己留有私钥。
    2、对方传输数据时,使用公钥进行加密数据,
    3、自己接收到数据时,使用私钥进行解密。

    点赞 评论 复制链接分享
  • oyljerry oyljerry 2年前

    动态密钥就是为了保证每次传输数据的时候都是不同的密钥,这样没法一次破解,就能对所有的数据都能解密,而第三方标识就是为了验证第三方可以合法的获取到动态密钥

    点赞 1 评论 复制链接分享

为你推荐