Я новичок в безопасности Java, так что это может звучать глупо для вас, ребята. Я использую алгоритм triple-des для шифрования в том, что я использую хеш-значение в качестве ключей. Я использую sha-512 для хеширования, я слышал, что два одинаковых хеша будут такими же, но я получаю разные выходные данные для одной строки. Я прикрепляю код sha-512. Позвольте мне знать, в чем проблема, если это возможно.sha-512, возвращающий другое значение для той же строки
public class SHA256Algo {
public static String createHash(String text) throws UnsupportedEncodingException, NoSuchAlgorithmException
{
String encryptedText = "" ;
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.update(text.getBytes("UTF-16")); // Change this to "UTF-16" if needed
byte[] digest = md.digest();
String str = digest.toString() ;
return str ;
}
public static void main(String[] args) {
try {
System.out.println(createHash("tarun")) ;
System.out.println(createHash("tarun")) ;
} catch (UnsupportedEncodingException | NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
выход:
[B @ 32d2bb53
[B @ 29086036
toString() в массиве не имеет ожидаемого эффекта. – Arkadiy
Можете ли вы использовать сторонние библиотеки? Это было бы намного проще, если бы вы могли использовать Hash.sha512() в Guava. HashString (текст, Charsets.UTF_16) .toString() ', который выполнит именно то, что вы хотите. –