#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