我想使用encrypt package加密/解密我的数据。 但是,该应用程序需要很长时间才能执行并向UI显示数据。因此,我正在寻找改进代码的最佳方法。
我已经创建了一个这样的模型。
class Users{
String id;
String name;
String surname;
}
Users(
{this.id, this.name, this.surname});
Map<String, Object> toMap() => {
'id': id,
'name': encryptData(name, key),
'surname': encryptData(surname,key)
};
Users.fromMap(Map<String, dynamic> u) {
id = u['id'];
name= decryptData(u['name'], key);
surname= decryptData(u['surname'], key);
}
我还想解密每次使用时要调用的数据,并在将其存储在数据库中时对其进行加密。 我使用下面的代码进行加密
String decryptData(String field, List<int> strkey) {
try {
final key = Key.fromBase64(base64Encode(Uint8List.fromList(strkey)));
final iv = IV.fromUtf8('utf8_string');
final encrypter = Encrypter(AES(key, mode: AESMode.cbc));
final decrypt= encrypter.decrypt(Encrypted.fromBase64(field.base64), iv: iv);
return decrypt;
} catch (Ex) {
print('DECRYPError===${Ex}');
return field;
}
}
String encryptData(String field, List<int> strkey) {
try {
final key = Key.fromBase64(base64Encode(Uint8List.fromList(strkey)));
final iv = IV.fromUtf8('utf8_string');
final encrypter = Encrypter(AES(key, mode: AESMode.cbc));
final encrypted = encrypter.encrypt(field, iv: iv);
return encrypted.base64;
} catch (Ex) {
print('CRYPError===${Ex}');
return field;
}
}
答案 0 :(得分:0)
在序列化中创建一个数据传输对象类,然后传输数据。
创建一个DTO对象,序列化和反序列化将负责数据的加密和解密
在该DTO类中声明私有数据成员以及公共setter和getter方法。也是参数化的构造函数。