如何存储 RSA 私钥,public 密钥
How To Store RSA private,public keys
我正在开发一个 android 消息传递应用程序。当用户注册时,会生成 rsa 私钥和 public 密钥,并使用这些密钥和 aes 消息进行加密和解密。
私钥存储在服务器的phone和public密钥中。如果用户重置或卸载应用程序,所有密钥都会丢失,因此无法解密旧消息。
如何在用户卸载应用程序时检索旧私钥而不将其存储在服务器中?
在 Android 中保存数据的方法有很多种。数据库、SavedInstanceState、SharePreferences 和文件。只有文件在您的应用程序被用户卸载后仍然存在。将其保存在文件中是您唯一的选择。
您是使用 Android Keystore 来存储密钥还是使用您自己的文件存储?
Android 密钥库
使用 Android 密钥库无法恢复密钥,因为它们只能由创建它们的应用程序使用,如果有实质性更改,它们将被丢弃。
我猜您正在使用 RSA 密钥协商 AES 对称加密密钥。因此,您需要备份 AES 加密密钥(例如在服务器中...),并建立一种机制来恢复密钥,如常见的 "remember password" 实用程序
自定义密钥存储
如果您在没有 AndroidKeystore 的情况下将密钥存储到设备中,您可以定义自己的机制来恢复密钥。例如,用密码对密钥进行加密,将密钥存放到设备的public目录中。然后可以恢复密钥提示用户输入密码
注意:考虑每种情况下的安全风险。例如,将未加密的 AES 密钥存入服务器意味着恶意服务器可以解密消息。或者弱恢复密钥机制会降低系统的整体安全级别
我正在开发一个 android 消息传递应用程序。当用户注册时,会生成 rsa 私钥和 public 密钥,并使用这些密钥和 aes 消息进行加密和解密。
私钥存储在服务器的phone和public密钥中。如果用户重置或卸载应用程序,所有密钥都会丢失,因此无法解密旧消息。
如何在用户卸载应用程序时检索旧私钥而不将其存储在服务器中?
在 Android 中保存数据的方法有很多种。数据库、SavedInstanceState、SharePreferences 和文件。只有文件在您的应用程序被用户卸载后仍然存在。将其保存在文件中是您唯一的选择。
您是使用 Android Keystore 来存储密钥还是使用您自己的文件存储?
Android 密钥库
使用 Android 密钥库无法恢复密钥,因为它们只能由创建它们的应用程序使用,如果有实质性更改,它们将被丢弃。
我猜您正在使用 RSA 密钥协商 AES 对称加密密钥。因此,您需要备份 AES 加密密钥(例如在服务器中...),并建立一种机制来恢复密钥,如常见的 "remember password" 实用程序
自定义密钥存储
如果您在没有 AndroidKeystore 的情况下将密钥存储到设备中,您可以定义自己的机制来恢复密钥。例如,用密码对密钥进行加密,将密钥存放到设备的public目录中。然后可以恢复密钥提示用户输入密码
注意:考虑每种情况下的安全风险。例如,将未加密的 AES 密钥存入服务器意味着恶意服务器可以解密消息。或者弱恢复密钥机制会降低系统的整体安全级别