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');
Run Code Online (Sandbox Code Playgroud)
但是我甚至无法导入该库以使用SHA256对象...这些都不起作用:
import 'dart:crypto';
import 'crypto';
Run Code Online (Sandbox Code Playgroud)
我在Dart目录中找不到SHA256(我使用的是Dart 1.0.0 STABLE)
该加密包必须是用进口:
import 'package:crypto/crypto.dart';
Run Code Online (Sandbox Code Playgroud)
此外,您粘贴的代码段已过时.你应该做 :
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
}
Run Code Online (Sandbox Code Playgroud)
小智 6
2013年的答案再次过时,因为加密包的 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2371 次 |
| 最近记录: |