java - RSA key key 静态生成

标签 java android security cryptography jax-rs

我用这个答案来指导自己here ,其中解释了如何使用 AES 和 RSA。

我成功地使用一个 util 类实现了 AES 部分,在该类中我使用密码来生成 key 。该密码不会更改,其目的是在编码并将其保存到数据库之前对密码进行加密。然后,每当我需要解密该密码时,我都可以使用相同的密码短语来解密,这应该生成相同的 key 。我已经成功了。

现在我的问题从 RSA 开始。我必须通过 Java JAX-RS Web 服务通过 JSON 发送信息来注册用户。由于“技术”原因,HTTPS/SSL 是不可能的。因此,我至少尝试发送使用公钥加密的密码。并用服务器上的私钥解密。

然后我使用 AES 对其进行加密并将其存储在数据库中。

如果我每次都必须生成不同的 key ,那么在这一切发生之前,我的客户端(android)如何知道公钥?

最佳答案

您不必每次都生成新的 RSA key 。您可以简单地每次使用公钥进行加密。如果数据太大,那么您应该尝试使用混合加密(即每次生成随机 AES key ,用它加密消息,然后用 RSA key 对的公钥加密 AES key )。

您只需在 Android 应用程序中分发公钥即可。

如果您想存储用于身份验证的密码,最好不要在服务器上使用对称加密,在服务器上生成盐并对密码执行 PBKDF2。然后存储盐和PBKDF2的结果。然后,每当进行身份验证尝试时,检索盐,再次执行 PBKDF2 函数并将结果与​​数据库中的值进行比较。

关于java - RSA key key 静态生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086424/

相关文章:

Java 代码,安全

java - BindingResult 和 bean 名称 'phonebook' 的普通目标对象都不能作为请求属性

java - 处理中带有纹理的三角形

android - 通过标签在另一个 fragment 中查找子 fragment

android - Gradle 构建工具找不到 play-services-tasks.aar?为什么?

Spring Security - GrantedAuthority 和基于角色的访问

security - 为什么自动脚本首选公用 key 身份验证?

java - 当我单击“like”按钮时,它不会调用设置要调用的方法

java - 如何获取树表的选定行?

java - Android ExpandedListView 希望 SwipeToDismiss 仅适用于群组