我正在测试 Dart 的加密哈希函数。我找不到有关解密的任何信息?谁能告诉我如何解密加密值?
这是例子;
import 'dart:convert';
import 'package:crypto/crypto.dart';
void main() async {
var key = utf8.encode('p@ssw0rd');
var bytes = utf8.encode("Dart and Aqueduct makes my life easier. Thank you.");
// TODO: ENCRYPTION
var hmacSha256 = new Hmac(sha256, key); // HMAC-SHA256
var digest = hmacSha256.convert(bytes);
print(“————ENCRYPTION—————“);
print("HMAC digest as bytes: ${digest.bytes}");
print("HMAC digest as hex string: $digest");
print('\r\n');
// TODO: DECRYPTION
????????????
print(“————DECRYPTION—————“);
print(?????????);
}
Run Code Online (Sandbox Code Playgroud)
IMO 最简单的方法是使用encrypt:
import 'package:encrypt/encrypt.dart';
final key = Key.fromUtf8('put32charactershereeeeeeeeeeeee!'); //32 chars
final iv = IV.fromUtf8('put16characters!'); //16 chars
//encrypt
String encryptMyData(String text) {
final e = Encrypter(AES(key, mode: AESMode.cbc));
final encrypted_data = e.encrypt(text, iv: iv);
return encrypted_data.base64;
}
//dycrypt
String decryptMyData(String text) {
final e = Encrypter(AES(key, mode: AESMode.cbc));
final decrypted_data = e.decrypt(Encrypted.fromBase64(text), iv: iv);
return decrypted_data;
}
Run Code Online (Sandbox Code Playgroud)
HMAC 是消息认证码。它是一个摘要,用于验证消息未被篡改,类似于签名。它是使用单向哈希函数(在本例中为 SHA256)构建的。它不是加密,并且无法逆转,因此您所拥有的值无法解密。
您可以使用 HMAC 做的唯一事情是,在给定 HMAC 和相应的纯文本的情况下,验证纯文本的来源以及它未被篡改。
查看Dart 加密库的 GitHub 页面,看起来它只支持摘要算法。没有列出加密算法,因此如果您想要进行实际上可以解密的双向加密,则需要使用不同的库。Cipher库看起来在这方面很有前途。
| 归档时间: |
|
| 查看次数: |
9732 次 |
| 最近记录: |