Flutter base64字符串加密解密,图片base64编码及显示

前言

由于接口请求需要将请求内容加密再传输,其中一部就是讲内容进行base64编码,然后请求回来的数据也进行同样的base64解码

方式:使用系统的dart:convert库进行编码解码

// base64库
import 'dart:convert' as convert;
// 文件相关
import 'dart:io';
class Util {
/*
  * Base64加密
  */
  static String base64Encode(String data){
    var content = convert.utf8.encode(data);
    var digest = convert.base64Encode(content);
    return digest;
  }
  /*
  * Base64解密
  */
  static String base64Decode(String data){
    List<int> bytes = convert.base64Decode(data);
    // 网上找的很多都是String.fromCharCodes,这个中文会乱码
    //String txt1 = String.fromCharCodes(bytes);
    String result = convert.utf8.decode(bytes);
    return result;
  }

 /*
  * 通过图片路径将图片转换成Base64字符串
  */
  static Future image2Base64(String path) async {
    File file = new File(path);
    List<int> imageBytes = await file.readAsBytes();
    return convert.base64Encode(imageBytes);
  }
  /*
  * 将图片文件转换成Base64字符串
  */
  static Future imageFile2Base64(File file) async {
    List<int> imageBytes = await file.readAsBytes();
    return convert.base64Encode(imageBytes);
  }

 /*
  * 将Base64字符串的图片转换成图片
  */
  static Image Future base642Image(String base64Txt) async {
    String decodeTxt = convert.base64.decode(base64Txt);
    return Image.memory(decodeTxt,
            width:100,fit: BoxFit.fitWidth,
            gaplessPlayback:true, //防止重绘
            );
   }

}
testBase64() {
    String oriTxt =  '[{"name":"小明","mail":"[email protected]","age":89,"money":9999.99}]';
    String encodeTxt = Util.base64Encode(oriTxt);
    String decodeTxt = Util.base64Decode(encodeTxt);

    print(oriTxt);
    print(encodeTxt);
    print(decodeTxt);
  }

使用String.fromCharCodes测试结果:

[{"name":"小明","mail":"[email protected]","age":89,"money":9999.99}]
W3sibmFtZSI6IuWwj+aYjiIsIm1haWwiOiJ4aWFvbWluZ0BnYW1pbC5jb20iLCJhZ2UiOjg5LCJtb25leSI6OTk5OS45OX1d
[{"name":"å°�æ��","mail":"[email protected]","age":89,"money":9999.99}]

使用convert.utf8.decode测试结果:

[{"name":"小明","mail":"[email protected]","age":89,"money":9999.99}]
W3sibmFtZSI6IuWwj+aYjiIsIm1haWwiOiJ4aWFvbWluZ0BnYW1pbC5jb20iLCJhZ2UiOjg5LCJtb25leSI6OTk5OS45OX1d
[{"name":"小明","mail":"[email protected]","age":89,"money":9999.99}]

转载于:https://www.jianshu.com/p/d980780f40ad

猜你喜欢

转载自blog.csdn.net/weixin_34358092/article/details/91181347