final encryptedString = encrypter.encryptBytes(data, iv: iv);
//如果需要操作加密字节的,强烈建议采用上面这个函数!!!
************************************************************************
// 将Uint8List转换为String
String uint8ListToString(Uint8List data) {
String str = String.fromCharCodes(data, 0, data.length);
debugPrint('fromCharCodes $str len ${str.length}');
str = utf8.decode(data);
debugPrint('decode $str len ${str.length}');
return str;
}
final encryptedString = encrypter.encrypt(uint8ListToString(data), iv: iv);
之前在写小程序的时候,遇到了加密问题,需要加密字节流,原本我都是加密字符串的,结果当然就是遇到了加密错误,现在我要迁移程序到另一个平台上面,主要是偷懒,所以就采用了相同的实现方式,内容转字符串,字符串加密,然后掉坑里了.
String.fromCharCodes(data, 0, data.length);
上面这个函数再转字符串的时候是会丢掉它无法识别的内容的,尤其是在操作字节内容的时候.所以当我我去转换成字符串去加密的时候,另一端始终无法解密.......
所以当你采用的平台有支持字节操作的函数建议使用字节操作的,别像我一样硬转,dart 可以采用下面这个
final encryptedString = encrypter.encryptBytes(data, iv: iv);