Android 如何在flatter中存储密钥对?
我正在开发一个以Firebase为数据库的颤振消息传递应用程序。 为了加密两个用户之间发送的消息,我在应用程序开始时使用包生成公钥和私钥对 用于使用EncryptionData类生成密钥对的代码:Android 如何在flatter中存储密钥对?,android,flutter,dart,encryption,rsa,Android,Flutter,Dart,Encryption,Rsa,我正在开发一个以Firebase为数据库的颤振消息传递应用程序。 为了加密两个用户之间发送的消息,我在应用程序开始时使用包生成公钥和私钥对 用于使用EncryptionData类生成密钥对的代码: import 'package:rsa_encrypt/rsa_encrypt.dart'; import 'package:pointycastle/api.dart' as crypto; Future<crypto.AsymmetricKeyPair> fu
import 'package:rsa_encrypt/rsa_encrypt.dart';
import 'package:pointycastle/api.dart' as crypto;
Future<crypto.AsymmetricKeyPair> futureKeyPair;
crypto.AsymmetricKeyPair keyPair;
class EncryptFunctions{
Future<crypto.AsymmetricKeyPair<crypto.PublicKey,crypto.PrivateKey>> getKeyPair(){
var helper = RsaKeyHelper();
return helper.computeRSAKeyPair(helper.getSecureRandom());
}
}
为了加密或解密字符串,我们使用来自同一个包的加密和解密方法。
futureKeyPair包含公钥和私钥,可以使用
keyPair = await futureKeyPair();
如何在设备上安全地存储私钥以完成端到端加密。
这是我关于Stackoverflow的第一个问题。
很抱歉出现任何格式错误。您可以使用共享首选项插件存储键和值,例如:
addStringToSF() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('stringValue', "abc");
}
您可以使用shared_preferences插件存储键和值,例如:
addStringToSF() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('stringValue', "abc");
}
Android具有密钥链和密钥库api: iOS有钥匙链: 截至2020年12月,我还不知道有哪个flutter包对这些api进行了抽象
除非您想编写自己的软件包,否则您可能最想使用的软件包可能是将密钥对存储在android的Keystore和iOS的Keychain中,然后使用密钥加密数据,然后再存储在android的SharedReference中。只需查看代码了解详细信息。Android具有密钥链和密钥库api: iOS有钥匙链: 截至2020年12月,我还不知道有哪个flutter包对这些api进行了抽象
除非您想编写自己的软件包,否则您可能最想使用的软件包可能是将密钥对存储在android的Keystore和iOS的Keychain中,然后使用密钥加密数据,然后再存储在android的SharedReference中。请查看代码以了解详细信息。我已经考虑过这一点,但认为会有更好的方法来存储密钥?如果您想在设备文件中存储具有值的密钥,这是最好的方法。存储具有共享首选项的密钥不是可变的,例如,如果用户重新安装应用程序或删除存储信息,密钥将丢失,任何新创建的密钥都会使以前加密的数据变得无用。那么解决这个问题的最佳方法是什么呢?那么你最好使用firebase实时数据库,并将其存储在那里我考虑过,但认为会有更好的方法存储密钥?如果你想在设备文件中存储具有值的密钥,这是最好的方法不会存储具有共享\u首选项的密钥是可变的,例如,如果用户重新安装应用程序或删除存储信息,则密钥将丢失,任何新创建的密钥都会使以前加密的数据无效。那么,解决这个问题的最佳方法是什么呢?那么您最好使用firebase实时数据库,并将其存储在那里