Есть ли какой-нибудь метод для преобразования строки хеша SHA256 в строку Java? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть следующий код, и я хочу строку Java из строки хеша SHA256. Есть ли способ преобразовать шестнадцатеричную строку в ее исходное значение?

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 голосов
/ 29 августа 2018

Простой ответ: Нет, нет пути.

Более длинный ответ: может быть способ использовать стратегию грубой силы. Но это займет много времени, слишком много, чтобы быть эффективным.

Видите ли, хеш вообще сделан, чтобы сделать невозможным обращение. Вы конвертируете String в некоторый Hash, и это нельзя изменить. Вы можете посмотреть, как работают хеши и шифрование.

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

Если бы это было так просто, используя всего одну строку кода, вся идея и процесс хеширования были бы проблематичными.

Edit: если вы хотите преобразовать String в Hash, то в Hex и, наконец, в ASCII, ваш результат будет исходным Hash. Поэтому идея не сработает. Вы не можете расшифровать это таким образом.

...