【问题标题】:How to decode SHA384 hash?如何解码 SHA384 哈希?
【发布时间】:2016-06-29 02:44:44
【问题描述】:

我正在创建一个 SHA384 哈希。我想解码那个哈希。有没有办法做到这一点?请帮忙

下面是获取hash的代码

public String getHash(String message) {
    String algorithm = "SHA384";
    String hex = "";
    try {
        byte[] buffer = message.getBytes();
        MessageDigest md = MessageDigest.getInstance(algorithm);
        md.update(buffer);
        byte[] digest = md.digest();

        for(int i = 0 ; i < digest.length ; i++) {
            int b = digest[i] & 0xff;
            if (Integer.toHexString(b).length() == 1) hex = hex + "0";
            hex  = hex + Integer.toHexString(b);
        }
        return hex;
    } catch(NoSuchAlgorithmException e) {
        e.printStackTrace();
        return null;
    }

}

【问题讨论】:

  • “解码哈希”是什么意思?哈希在设计上是单向的。
  • 喜欢这里的编码和解码md5hashing.net/hashing/sha384
  • 此站点将消息及其哈希值存储在数据库中。它不适用于任意散列。

标签: android hash sha


【解决方案1】:

加密安全散列函数是这样一种函数,它可以将给定的任意长度输入以不可逆(计算上不可行)的方式处理成固定长度的输出。此类函数包括 MD5 和 SHA(安全哈希算法)系列(1、224、256、384、512 等)。

一旦获取输入的哈希值,就无法返回原始输入。此属性可用于验证消息完整性,因为对相同消息进行散列会产生相同的散列。

您访问的网站只是将哈希及其输入并排存储,并为您的哈希进行数据库查找以尝试找到可能的输入(如果之前已添加到数据库中)。

【讨论】:

  • 我可以那样做吗?就像通过创建我自己的数据库并将哈希存储在其中并进行数据库查找以进行解码?
  • @user3864752 是的,你可以,但你需要建立一个无限大的数据库来保存所有可能的输入。我真的不明白你想做什么。你要做的不是decoding,而是一个简单的表格查找。
  • 是的,没错。但还有另一个问题。我在 C# 中加密并想在 Android/java 中解密
  • 那么这个developer.android.com/reference/javax/crypto/Cipher.html 类呢。我们可以用它来解密吗
  • @user3864752 如果您正在研究数据加密,散列算法不是要走的路。考虑使用像 AES 这样的密码来进行对称加密。您建议的 Cipher 类可用于 AES,因此您可以阅读。
猜你喜欢
  • 1970-01-01
  • 2020-11-05
  • 2012-04-23
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 2017-12-01
相关资源
最近更新 更多