android - 在android中将数据从一个应用程序发送到另一个应用程序的加密
问题描述
我想将敏感数据从一个应用程序发送到另一个应用程序。
我使用 Intent 并通过 Bundle 发送数据。现在,我应该使用加密算法来加密要发送的数据,同时接收方应用程序将解密数据。
哪种算法最适合移动平台?
我浏览了 RSA 文档,建议不建议将它用于长文本加密。
我已经看到该算法使用随机密钥生成方法,这在我的情况下会导致问题,因为两个应用程序都需要共享相同的密钥来加密和解密。
解决方案
我浏览了 RSA 文档,建议不建议将它用于长文本加密。
真的
根据密钥长度,例如 pkcs#1.5 填充的 2048 密钥旨在加密 245 字节的最大值。一些实现框架执行的甚至更少(144 字节,..)
我已经看到该算法使用随机密钥生成方法,这在我的情况下会导致问题,因为两个应用程序都需要共享相同的密钥来加密和解密。
实际上 - 它是常用的两种方式的组合。见混合密码系统
基本上 - 每个应用程序都有自己的密钥对,并且应用程序共享目标方的公钥。您可以使用随机密钥进行数据加密,使用 rsa 加密数据密钥。然后放心使用 Intend 和 Bundle 移动加密数据和加密密钥。
这可能是一个很好的起点。
编辑:
我需要将数据从我的一个应用程序(A)发送到另一个应用程序(B)。因此,A 将加密数据并将数据加密发送给 B(密钥在应用程序 A 中生成)。
如果您将加密密钥(我们称之为数据密钥)与数据一起发送,那么任何拦截流量(意图或捆绑)的人都可以解密数据。所以这就是 RSA 进入游戏的地方。您可以加密数据密钥,只有 B 可以解密它
现在 B 必须解密数据。如果新的密钥生成代码将在应用程序 B 中编写,那么它将创建不同的密钥,因此将无法解密....
尝试搜索并了解非对称密码 (RSA) 的工作原理。完整的描述超出了问题的范围,你可能会问另一个人有什么不清楚的地方。
基本上 - 应用程序 B 需要创建一个密钥对(公钥和私钥)。公钥用于加密,私钥用于解密。A需要得到B的公钥来加密数据密钥。如何从 B 到 A 获取公钥取决于您(共享存储、在应用程序中配置,..)
如果您想在应用程序之间不共享公共秘密的情况下传递加密数据,那么 RSA 是一种可行的方法。
推荐阅读
- python - pyplot.fill_between:输入类型不支持 ufunc 'isfinite',
- c# - 实体框架在自定义属性中添加集后的列名无效
- python - 短路条件语句
- r - 在闪亮的应用程序中使用两个不同的操作按钮激活相同的事件
- python - 在没有单独服务器的情况下使用 Django 定期运行“任务”
- php - 循环嵌套 JSON 响应 PHP
- javascript - 反应动画动画组件未定义
- flutter - 使用扩展和非扩展面板颤动
- javascript - 为什么我不能在我的 SVG 路径上添加边框?
- node.js - 无法将 Angular Universal 部署到 Firebase 函数