前言
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==