有没有方法将SHA256哈希字符串转换为Java字符串?

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

我有以下代码,我想从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 );
    }
}
java android sha256
1个回答
1
投票

简单回答:不,没有办法。

更长的答案:可能有一种使用暴力战略的方法。但这需要很长时间,而且效率太长。

看,哈希一般是为了让它无法逆转。您将String转换为一些Hash,这是不可逆转的。您可以查看Hashes和Encrypting的工作原理。

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

如果这很容易,只使用一行代码,散列的整个想法和过程就会出问题。

编辑:如果要将String转换为Hash,然后转换为Hex,最后转换为ASCII,则结果将是原始Hash。因此,这个想法不会成功。你无法以这种方式解密它。

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