Вы используете класс java.security.MessageDigest
в Java.Но обратите внимание, что хеши обычно применяются к двоичным данным, а не к строкам - поэтому сначала необходимо преобразовать строку в байтовый массив, обычно с помощью метода String.getBytes(String)
, - убедитесь, что вы используете перегрузку, которая задаеткодирование, а не использование платформы по умолчанию.Например (исключение обработки исключено):
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
byte[] data = text.getBytes("UTF-8");
byte[] hash = sha1.digest(data);
Как только вы получите хеш в виде байтового массива, вы можете захотеть преобразовать его обратно в текст - что должно быть сделано либо в шестнадцатеричном виде, либо, возможно, в виде Base64Например, используя кодек Apache Commons .
Если вы пытаетесь сопоставить хеш SHA-1, созданный PHP, вам необходимо выяснить, какая кодировка это Используется при преобразовании строки в байты, и как впоследствии она представляет хеш.