https://github.com/dart-lang/crypto
一个用于Hash的算法实现,包涵常用的:MD5
,SHA1
,SHA256
使用MD5,SHA1,SHA256计算数据hash
import "package:crypto/crypto.dart";
import 'package:crypto/src/digest_sink.dart';
import "dart:convert";
main() {
var bytes=utf8.encode("计算字符串hash");
print(md5.convert(bytes));
print(sha1.convert(bytes));
print(sha256.convert(bytes));
}
使用MD5,SHA1,SHA256计算比较大的数据hash
import 'dart:io';
import "package:crypto/crypto.dart";
import 'package:crypto/src/digest_sink.dart';
main() async {
var filePath=r"D:\Download\jre-8u201-windows-x64.exe";
var uri=Uri.file(filePath,windows: true);
var file=File.fromUri(uri);
var ds=DigestSink();
var bytesCs=md5.startChunkedConversion(ds);
await for (var bytes in file.openRead()){
bytesCs.add(bytes);
}
bytesCs.close();
print(ds.value);
}
参数化hash算法,可选密码参数
import "package:crypto/crypto.dart";
import 'package:crypto/src/digest_sink.dart';
import "dart:convert";
main() {
var bytes=utf8.encode("计算字符串hash");
//简单数据的hash
print(Hmac(md5, []).convert(bytes));
//hash大数据,分段处理
//Hmac接受两个参数:
//第一个决定使用的hash算法
//第二个设置一个key(密码,如果有必要的话),可以保证你的hash结果别人hash不出来
var md5Hmac=Hmac(md5, []);
var ds=DigestSink();
var bytesCs = md5Hmac.startChunkedConversion(ds);
bytesCs.add(bytes);
bytesCs.add(bytes);
bytesCs.close();
print(ds.value);
}