今天要介绍的是Flutter加密核心库Crypto的使用。

一、加密库核心能力

支持以下哈希算法:

  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
  • SHA-512/224
  • SHA-512/256
  • MD5
  • HMAC(例如 HMAC-MD5、HMAC-SHA1、HMAC-SHA256)

二、依赖安装

flutter pub add crypto

三、实战案例

3.1、MD5

var bytes = utf8.encode("foobar");
var hash = md5.convert(bytes);
debugPrint("md5 as bytes: ${hash.bytes} ${hash.bytes.length}");
debugPrint("md5 as hex string: $hash");

// 输出结果 3858f62230ac3c915f300c664312c63f

3.2、sha哈希算法

  • 简单使用
// sha1
var bytes = utf8.encode("foobar"); 
var digest = sha1.convert(bytes);
debugPrint("Digest as bytes: ${digest.bytes}  ${digest.bytes.length}");
debugPrint("Digest as hex string: $digest");

// sha256
var bytes = utf8.encode("foobar"); 
var digest1 = sha256.convert(bytes);
debugPrint("Digest as bytes: ${digest1.bytes} ${digest1.bytes.length}");
debugPrint("Digest as hex string: $digest1");
  • 分块加密案例
var firstChunk = utf8.encode("foo");
var secondChunk = utf8.encode("bar");

var output = AccumulatorSink<Digest>(); // flutter pub add convert   使用该函数需要引入框架
var input = sha512.startChunkedConversion(output);
input.add(firstChunk);
input.add(secondChunk); 
input.close();
digest = output.events.single;

debugPrint("Digest as bytes: ${digest.bytes} ${digest.bytes.length}");
debugPrint("Digest as hex string: $digest");

3.3、HMAC哈希算法

var bytes = utf8.encode("foobar");
var key = utf8.encode('p@ssw0rd');
var hmacSha256 = Hmac(sha512, key);
digest = hmacSha256.convert(bytes);

debugPrint("HMAC digest as bytes: ${digest.bytes} ${digest.bytes.length}");
debugPrint("HMAC digest as hex string: $digest");

以上便是常用算法在dart中的使用了。

后续文章优先在 WX公众号 “天天开发” 中发布,如有需要请搜索关注!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐