Flutter Base64 Aes加密解密

4,227 阅读1分钟

Aes加密解密

  • 依赖包:
    • encrypt: ^5.0.1
    • flustars: ^2.0.1
  • 环境:
    • Flutter (Channel stable, 2.2.3, on Microsoft Windows [Version 10.0.18363.1139], locale zh-CN)

*  Name:jh_encrypt_utils.dart
*
*  Time:Created by iotjin on 2021/09/23.
*  ConText:description: base64 , aes加解密(CBC/PKCS7)
*/
/// 引用上下文
import 'dart:convert';
///引用插件
import 'package:encrypt/encrypt.dart';
import 'package:flustars/flustars.dart';

///定义秘钥
var _KEY = "0123456789becoin";
///定义偏移量
var _IV = "0123456789becoin";

//128的keysize=16,192keysize=24,256keysize=32

class JhEncryptUtils {
 //Base64编码
 static String encodeBase64(String data) {
   return base64Encode(utf8.encode(data));
 }

 //Base64解码
 static String decodeBase64(String data) {
   return String.fromCharCodes(base64Decode(data));
 }

 // md5 加密 32位小写
 static String encodeMd5(String plainText) {
   return EncryptUtil.encodeMd5(plainText);
 }

 //AES加密
 static aesEncrypt(plainText) {
   try {
     final key = Key.fromUtf8(_KEY);
     final iv = IV.fromUtf8(_IV);
     /// 这里可以配置类型,
     final encrypter = Encrypter(AES(key, mode: AESMode.cbc));
     final encrypted = encrypter.encrypt(plainText, iv: iv);
     return encrypted.base16;
   } catch (err) {
     print("aes encode error:$err");
     return plainText;
   }
 }

 //AES解密
 static dynamic aesDecrypt(encrypted) {
   try {
     final key = Key.fromUtf8(_KEY);
     final iv = IV.fromUtf8(_IV);
     final encrypter = Encrypter(AES(key, mode: AESMode.cbc));
     final decrypted = encrypter.decrypt16(encrypted, iv: iv);
     return decrypted;
   } catch (err) {
     print("aes decode error:$err");
     return encrypted;
   }
 }
}

食用方法

/*
 * 调用加密方法
 */
var deStr = JhEncryptUtils.aesEncrypt(data.toString());

/*
 * 调用解密方法
 */
var enStr = JhEncryptUtils.aesDecrypt(data.toString());