如何将MD5转换回图像?

问题描述 投票:0回答:1

我发现这个 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,
                ),
              ],
            ),
          ));
    }
  }
flutter dart flutter-layout
1个回答
0
投票

MD5是一个散列函数,所以一旦你把它应用到你的数据,它是不可逆的。因此,MD5(或SHA-1、Whirlpool等)不适合你的使用情况。

哈希的一个典型用途是在数据库中存储用户凭证。与其说密码是明文的,不如说你想存储它的哈希值,这样当用户进行身份验证时,平台会生成用户输入的密码的哈希值,并与数据库中存储的哈希值进行比较。如果吻合,那么密码是正确的,但它仍然是数据库中的哈希值。

这里有一些加密算法,你可以用它来代替。https:/blog.storagecraft.com5-通用加密算法。

© www.soinside.com 2019 - 2024. All rights reserved.