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)
答案 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存储库中找到这样的信息: