dart 加密踩坑

 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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值