我正在做一个以Firebase为数据库的Flutter消息应用程序,为了加密2个用户之间发送的消息,我已经使用了 rsa-encrypt 包来生成公钥和私钥对。
使用EncryptionData类生成密钥对的代码。
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());
}
}
Main.dart的代码是这样的
void main(){
EncryptFunctions encryptFunctions = new EncryptFunctions();
futureKeyPair = encryptFunctions.getKeyPair();
runApp(MyApp());
}
为了加密或解密字符串,我们使用同一个包中的 encrypt()和 decrypt()方法,futureKeyPair包含公钥和私钥,可以通过使用
keyPair = await futureKeyPair();
如何将私钥安全地存储在设备上,以完成端到端加密.这是我在Stackoverflow上的第一个问题,抱歉有任何格式错误。
你可以使用 shared_preferences
插件来存储键和值,例如。
addStringToSF() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('stringValue', "abc");
}