Как последовательно генерировать правильные хеш-строки SHA-384 в Java - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь сгенерировать файлы, затем хэшировать их содержимое и добавить хеш в конце содержимого файла.Я использую SHA-384, и мой код хэш-функции вставлен ниже.Проблема заключается в том, что при создании правильных хеш-строк возникает непоследовательность, поэтому хэш и содержимое файла становятся недействительными (не совпадают) для одних файлов, в то время как для других они действительны.Что я могу сделать, чтобы решить эту проблему?Я использую стороннее приложение для чтения и проверки файлов, поэтому, к сожалению, я не могу получить их функцию декодирования.

public static String hash384(byte[] inputBytes) throws Exception{
        try {
            Runtime.getRuntime().gc();
            String hash;
            MessageDigest messageDigest = MessageDigest.getInstance("SHA-384");
            messageDigest.update(inputBytes);
            byte[] digestedBytes = messageDigest.digest();
            hash = new String(digestedBytes, "windows-1251");
            return hash;
        } catch(Exception e) {
            e.printStackTrace();
        }
        return null;
    }

1 Ответ

0 голосов
/ 21 ноября 2018

Я бы предложил использовать DigestUtils из модуля commons-codec Apache, чтобы можно было написать буквально две строки кода:

import static org.apache.commons.codec.digest.MessageDigestAlgorithms.SHA_384;
...
// digest
byte[] digest = new DigestUtils(SHA_384).digest(new File(<file path>));
// hex digest
String hdigest = new DigestUtils(SHA_384).digestAsHex(new File(<file path>));
...