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

时间:2018-08-29 07:45:19

标签: java android sha256

我有以下代码,我想要一个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 );
    }
}

1 个答案:

答案 0 :(得分:1)

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

更长的答案:也许有一种使用蛮力策略的方法。但是要花很长时间,效率太高。

请参阅,通常使哈希成为不可能反转。您将字符串转换为一些哈希,并且不能将其反转。 您可以看看哈希和加密的工作原理。

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

如果那样简单,仅使用一行代码,则整个散列的思想和过程将是有问题的。

编辑:如果要将字符串转换为哈希,然后转换为十六进制,最后转换为ASCII,则结果将是原始哈希。因此,这个想法行不通。您无法通过这种方式对其进行解密。