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

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

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

3个回答

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

(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

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

ThefFirsttThelLast
彭率 如何利用动态密钥对数据进行加密和解密?
9 个月之前 回复

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

French_fries
Burcy Wen 回复彭率: 这个说来话长,估计得几个博客文章吧,你百度上搜下,应该一大把,都是RSA加解密算法,你带上你使用的语言,估计能查出demo示例来
9 个月之前 回复
ThefFirsttThelLast
彭率 密钥是怎么对数据进行加密、解密的?
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问