Я ищу функцию преобразования в android из строки в 1-20 символов на любом языке (например, иврит, английский sh, китайский) в примерно 20 символов, например из hello world
до HGWSIg2YYYqZ12OrgUjk
Результат ha sh должен быть:
- всегда одинаковым, при условии, что один и тот же строковый вход
- максимально приближен к истинной уникальности то есть избегать как можно больше разных строк, получая в результате одну и ту же строку ha sh.
- настолько быстро, насколько это возможно (поскольку при создании интерфейса будет много использоваться)
Цель состоит в том, чтобы преобразовать поле description
в базе данных firestore в его идентификатор документа, таким образом предотвращая дублирование description
автоматически с минимальными издержками
В настоящее время я использую следующий код, который, кажется, работает , но я не уверен, что это лучший подход
public static String getHash(String input)
{
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(input.getBytes());
byte[] messageDigest = digest.digest();
// Create Hex String
StringBuilder hexString = new StringBuilder();
for (byte b : messageDigest) hexString.append( Integer.toHexString( 0xFF & b ) );
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
Исходный код отсюда