Dart 加密解密(AES/CBC/PKCS7Padding)

2,870 阅读1分钟

前言

Java 的 API 进行了加密解密处理,使用的是 "AES/CBC/PKCS7Padding" , Flutter(Dart) 如何使用相同的算法加密解密呢。
网上有高手给出了答案。

Dart 加密解密(AES/CBC/PKCS7Padding)

使用的加密解密库:

encrypt | Dart Package (flutter-io.cn)

[译]Dart 加密解密库 encrypt - 掘金 (juejin.cn)

代码:

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

void main() {
  // 加密目标字符串
  const s = 'hello, world';
  // Key
  final key = encrypt.Key.fromUtf8('12345678901234561234567890123456');
  // IV
  final iv = encrypt.IV.fromUtf8('1234567890123456');

  final encryptor = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: 'PKCS7'));

  final encrypted = encryptor.encrypt(s, iv: iv);
  final decrypted = encryptor.decrypt(encrypted, iv: iv);

  print(decrypted);
  print(encrypted.base64);
}

运行结果:

hello, world
N0/g1B5NZwlpVTBBT7s2Gw==