Flutter - AES256加解密封装(CBC + PKCS7)

demo 地址: https://github.com/iotjin/jh_flutter_demo

aes加密使用的是 encrypt
md5使用的是 flustars
key的长度决定密文长度
除了aes另外还有base64和md5加密方法

JhEncryptUtils

/**
 *  jh_encrypt_utils.dart
 *
 *  Created by iotjin on 2020/08/18.
 *  description: base64 , aes加解密(CBC/PKCS7)
 */

import 'dart:convert';

import 'package:encrypt/encrypt.dart';
import 'package:flustars/flustars.dart';

var _KEY = "sdfg5468wwdfd542sd4asdf4sadfqd12"; 
var _IV = "0000000000000000";

//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.base64;
    } 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.decrypt64(encrypted, iv: iv);
      return decrypted;
    } catch (err) {
      print("aes decode error:$err");
      return encrypted;
    }
  }

调用

    var text = '123';
    print('明文:${text}');

    var base = JhEncryptUtils.encodeBase64(text);
    print('base64: ${base}');

    var enStr = JhEncryptUtils.aesEncrypt(text);
    print('AES 加密:${enStr}');
    var deStr = JhEncryptUtils.aesDecrypt(enStr);
    print('AES 解密:${deStr}');

    var md5 = JhEncryptUtils.encodeMd5(text);
    print('md5 :${md5}');

打印

flutter: 明文:123
flutter: base64: MTIz
flutter: AES 加密:jkrxORUNfAjv237qbO1o2A==
flutter: AES 解密:123
flutter: md5 :202cb962ac59075b964b07152d234b70
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值