前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 ># crypto类库

# crypto类库

作者头像
用户1175783
发布2019-09-10 14:42:09
1.5K0
发布2019-09-10 14:42:09
举报
文章被收录于专栏:用户1175783的专栏

# crypto类库

https://github.com/dart-lang/crypto 一个用于Hash的算法实现,包涵常用的:MD5SHA1,SHA256

使用MD5,SHA1,SHA256计算数据hash

代码语言:javascript
复制
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

代码语言:javascript
复制
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算法,可选密码参数

代码语言:javascript
复制
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);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # crypto类库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档