crypto
这个加密库支持
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512
- SHA-512/224
- SHA-512/256
- MD5
- HMAC (i.e. HMAC-MD5, HMAC-SHA1, HMAC-SHA256)
添加引用
在pubspec.yaml 中添加如下配置
crypto: ^3.0.1
使用起来也很容易,比如说sha256加密
import 'package:crypto/crypto.dart';
import 'dart:convert';
void main() {
var bytes = utf8.encode("需要加密的数据");
var digest = sha256.convert(bytes);
print("Digest as bytes: ${digest.bytes}");
print("Digest as hex string: $digest");
}
sha1 和md5 也是同理
var bytes = utf8.encode("foobar");
var digest = md5.convert(bytes);
其他更多的使用,比如HMAC加密等 请看官方文档 crypto
encrypt
这个加密库支持
- CBC AESMode.cbc
- CFB-64 AESMode.cfb64
- CTR AESMode.ctr
- ECB AESMode.ecb
- OFB-64/GCTR AESMode.ofb64Gctr
- OFB-64 AESMode.ofb64
- SIC AESMode.sic
添加引用
在pubspec.yaml 中添加如下配置
encrypt: ^5.0.1
使用
class AESUtil {
static String generateAES(String data, String keyStr, String ivStr) {
final plainText = data;
final key = Key.fromUtf8(keyStr);
final iv = IV.fromUtf8(ivStr);
final encrypter = Encrypter(AES(key, mode: AESMode.cbc));
final encrypted = encrypter.encrypt(plainText, iv: iv);
print("generateAES:" + encrypted.base64);
return encrypted.base64;
}
}
默认是 SIC AESMode.sic ,这里我指定使用CBC AESMode.cbc 模式,当然也可以指定为其他模式
final encrypter = Encrypter(AES(key, mode: AESMode.cbc));
No/zero padding 的话,需要将padding传为null
final encrypter = Encrypter(AES(key, mode: AESMode.cbc, padding: null));
更多该库的使用,详见官方文档 encrypt
crypt
这个库没用过,先记录一下,以备以后用,详见crypt
|