我想将敏感数据从一个应用程序发送到另一个应用。
我使用Intent并通过Bundle发送数据。现在,我应该使用加密算法来加密要发送的数据,并并行地由接收器应用程序解密数据。
哪种算法最适合移动平台?
我看过RSA文档,文档中建议不要使用长文本加密。
我看到该算法使用了随机密钥生成方法,这在我的情况下会引起问题,因为两个应用程序都需要共享相同的密钥来加密和解密。
我看过RSA文档,建议不要使用长文本加密。
真实
根据密钥长度的不同,例如,使用pkcs#1.5填充的2048密钥最大加密245字节。一些实现框架强制执行更少(144字节,..(的
我看到算法使用了随机密钥生成方法,这在我的情况下会引起问题,因为两个应用程序需要共享相同的密钥来加密和解密。
实际上,它是两种常用方法的结合。参见混合密码系统
基本上,每个应用程序都有自己的密钥对,并且这些应用程序共享目标方的公钥。您可以使用随机密钥进行数据加密,并使用rsa对数据密钥进行加密。然后使用Intent和Bundle移动加密数据和加密密钥会感到安全。
这可能是一个很好的起点。
编辑:
我需要将数据从一个应用程序(A(发送到另一个(B(。因此,A将对数据进行加密,并将加密后的数据发送给B(密钥在应用程序A中生成(。
如果您在数据中明文发送加密密钥(我们称之为数据密钥(,任何拦截流量(intent或bundle(的人都可以解密数据。这就是RSA的用武之地。你可以用只有B才能解密的方式加密数据密钥
现在B必须解密数据。如果密钥生成的新代码将写入应用程序B,那么它将创建不同的密钥,因此将无法解密。。。。
尝试搜索并了解非对称密码(RSA(的工作原理。完整的描述超出了问题的范围,你可以问另一个人其中不清楚的地方
基本上,应用程序B需要创建一个密钥对(公钥和私钥(。公钥用于加密,私钥用于解密。A需要获得B的公钥来加密数据密钥。如何将公钥从B获取到A取决于您(共享存储、在应用程序中配置等(
如果您希望在不共享应用程序之间的公共机密的情况下传递加密数据,那么RSA就是一种选择。