Это код, используемый в C#Как я могу использовать те же SHA512 из C# в Java
public static string Encode_SHA512(string input) {
try {
using (SHA512 sha = SHA512.Create()) {
byte[] hash = sha.ComputeHash(Encoding.Unicode.GetBytes(input));
return Convert.ToBase64String(hash);
}
} catch (Exception ex) {
throw new Exception("Error al generar hash SHA512", ex);
}
}
И это код, используемый в Java (один из многих попыток)
public static String Encode_SHA512(String input) {
MessageDigest md = MessageDigest.getInstance("SHA-512");
byte[] digest = md.digest(input.getBytes("UTF-16LE"));
return String.format("%0128x", new BigInteger(1, digest));
}
Но всегда результат другой. Как я могу использовать одно и то же шифрование кода C# в java?
Ваш код никогда не преобразуется в base64. Если ошибка сохраняется, причиной может быть различное заполнение или кодировка символов. – Paul
Пожалуйста, отлаживайте свой код и выясните, откуда взялась разница. Удостоверьтесь, что он сначала работает для массива из 4 байтов, а затем добавляет байтовую байтовую логику. –
Вы вполне уверены, что 'input.getBytes (« UTF-16LE ») и' Encoding.Unicode.GetBytes (input) 'используют одну и ту же кодировку? –