Получение SHA256 в формате base64 с использованием DigestUtils

#java #hash #base64 #sha256

#java #хэш #base64 #sha256

Вопрос:

Я пытаюсь получить хэш SHA256 строки в формате base64.

Я использую DigestUtils from org.apache.commons.codec.digest . Я не знаю, как получить формат Base64, хотя я могу получить шестнадцатеричный формат.

 Sha256String = org.apache.commons.codec.digest.DigestUtils.sha256Hex(StringText);
  

Используя "a" в качестве stringtest, эта строка возвращает

 ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
  

Но что мне действительно нужно, так это ypeBEsobvcr6wjGzmiPcTaeG7/gUfE5yuYB3ha/uSLs .

Я читал без остановки и не могу понять, как это сделать.

Теперь я пытаюсь это

 Byte[] digest = org.apache.commons.codec.digest.DigestUtils.sha256(StringText);
  

И мне нужно сохранить его в переменной, поэтому я пытаюсь это

 String OutStr = new String(digest);
  

Не повезло. Я не знаю, где еще искать справку, потому что я много раз читал все запросы Google (и если ответ есть, я его не вижу)

Я не пишу на Java, но на этот раз мне это нужно, чтобы начать работать! Любовь!

Комментарии:

1. в конечном итоге подача этого byte[] в Base64.Encoder.encodeToString()

Ответ №1:

Вы можете использовать Base64.Encoder.encodeToString() метод для преобразования массива байтов в Base64 .

Вот краткий пример: (поскольку я не знаком с вашей утилизацией, просто замените некоторые данные на ваш байтовый массив)

 byte[] data = someData;
MessageDigest digester = MessageDigest.getInstance("SHA-256");
digester.update(data);
String base64Encoded = Base64.getEncoder().encodeToString(digester.digest());
  

Комментарии:

1. Большое вам спасибо! Я сделал это благодаря вам обоим @Carlos Heuberger