加密数据的最佳方法

时间:2019-11-19 09:51:54

标签: encryption flutter

我想使用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;
          }
       }

1 个答案:

答案 0 :(得分:0)

在序列化中创建一个数据传输对象类,然后传输数据。

创建一个DTO对象,序列化和反序列化将负责数据的加密和解密

在该DTO类中声明私有数据成员以及公共setter和getter方法。也是参数化的构造函数。

相关问题