我发现这个 crypto
包,它的作用真的很神奇。
我现在已经完成了对如何转换 图像 到 MD5 这就是我发送至数据库的内容。
现在我的问题是,我把这些图片以MD5的形式取回来,但我不能把它们显示为 Image
.
我有一个想法,在那里我应该使用 Image.memory
它接受 Uint8List bytes
.
我还看到,我的MD5图像有一个功能是 .bytes
(例如 myMD5Image.bytes
),它正被 Image.memory
(例如 Image.memory(myMD5Image.bytes)
)
但它给出了一个错误。Exception: Could not instantiate image codec.
我想请大家提供建议或可能的解决方案。先谢谢你了!
EDIT:这是我的一部分代码,当用户在画布上画画的时候。
generateSignature() async {
if (_controller.isNotEmpty) {
var data = await _controller.toPngBytes();
var signatureMD5 = md5.convert(data);
print("BYTES : $data");
print("MD5 : $signatureMD5");
print("BACK TO BYTES : ${signatureMD5.bytes}");
showDialog(
context: context,
child: Dialog(
child: Column(
children: <Widget>[
//SHOWS IMAGE
Image.memory(
data,
filterQuality: FilterQuality.high,
),
//DOESNT SHOW IMAGE
Image.memory(
signatureMD5.bytes,
filterQuality: FilterQuality.high,
),
],
),
));
}
}
MD5是一个散列函数,所以一旦你把它应用到你的数据,它是不可逆的。因此,MD5(或SHA-1、Whirlpool等)不适合你的使用情况。
哈希的一个典型用途是在数据库中存储用户凭证。与其说密码是明文的,不如说你想存储它的哈希值,这样当用户进行身份验证时,平台会生成用户输入的密码的哈希值,并与数据库中存储的哈希值进行比较。如果吻合,那么密码是正确的,但它仍然是数据库中的哈希值。
这里有一些加密算法,你可以用它来代替。https:/blog.storagecraft.com5-通用加密算法。