有什么方法可以将 SHA256 哈希字符串转换为 Java 字符串吗?



我有以下代码,我想要一个来自 SHA256 哈希字符串的 Java 字符串。有没有办法将十六进制字符串转换为其原始值?

public class CryptoHash {
public static void main( String[] args ) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance( "SHA-256" );
String text = "Text to hash, cryptographically.";
// Change this to UTF-16 if needed
md.update( text.getBytes( StandardCharsets.UTF_8 ) );
byte[] digest = md.digest();
String hex = String.format( "%064x", new BigInteger( 1, digest ) );
System.out.println( hex );
}
}

简单的答案:不,没有办法。

更长的答案:可能有一种方法可以使用蛮力策略。但这需要很长时间,太长了,效率不高。

看,哈希一般是为了使其无法逆转。您将字符串转换为某个哈希,这无法逆转。 你可以看看哈希和加密是如何工作的。

https://www.cryptocompare.com/coins/guides/how-does-a-hashing-algorithm-work/

如果这么简单,只使用一行代码,整个散列的想法和过程就会有问题。

编辑:如果要将字符串转换为哈希,然后转换为十六进制,最后转换为ASCII,您的结果将是原始哈希。因此,这个想法不会成功。您无法以这种方式解密它。

最新更新