在Dart中计算SHA256校验和

时间:2013-12-26 16:11:23

标签: dart

dart中有一个“crypto”库,如下所示: https://api.dartlang.org/docs/channels/stable/latest/crypto.html

我想计算客户端上给定字符串的SHA256校验和, 可能会是这样的:

    var sha256 = new SHA256();
    sha256.add('message'.codeUnits);
    var digest = sha256.close();
    var hexString = CryptoUtils.bytesToHex(digest);
    assert(hexString ==
      'ab530a13e45914982b79f9b7e3fba994cfd1f3fb22f71cea1afbf02b460c6d1d');

但是我甚至无法导入该库以使用SHA256对象... 这些都不起作用:

    import 'dart:crypto';
    import 'crypto';

我在Dart目录中找不到SHA256(我使用的是Dart 1.0.0 STABLE)

3 个答案:

答案 0 :(得分:8)

crypto package必须导入:

import 'package:crypto/crypto.dart';

此外,您粘贴的代码段已过时。你应该这样做:

import 'package:crypto/crypto.dart';

main() {
  var sha256 = new SHA256();
  sha256.add('message'.codeUnits);
  var digest = sha256.close();
  var hexString = CryptoUtils.bytesToHex(digest);
  print(hexString ==
      'ab530a13e45914982b79f9b7e3fba994cfd1f3fb22f71cea1afbf02b460c6d1d'); //true
}

答案 1 :(得分:5)

2013年的答案再次过时,因为crypto package's API已更新并简化:

import 'dart:convert';
import 'package:crypto/crypto.dart';

main() {
    List<int> bytes = UTF8.encode('message');
    String hash = sha256.convert(bytes).toString();
    assert(hash == 'ab530a13e45914982b79f9b7e3fba994cfd1f3fb22f71cea1afbf02b460c6d1d');  // true
    print(hash);
}

答案 2 :(得分:3)

1)将加密依赖项添加到pubspec.yaml:

dependencies:
  crypto: any

2)将正确的import语句添加到.dart程序中:

import 'package:crypto/crypto.dart';

3)运行pub get(在Dart编辑器中:工具 - &gt; Pub Get)

-

您可以在加密包的pub存储库中找到这样的信息:

http://pub.dartlang.org/packages/crypto