Самый быстрый ха sh расчет с любого языка до 20 символов - PullRequest
0 голосов
/ 14 марта 2020

Я ищу функцию преобразования в android из строки в 1-20 символов на любом языке (например, иврит, английский sh, китайский) в примерно 20 символов, например из hello world до HGWSIg2YYYqZ12OrgUjk

Результат ha sh должен быть:

  1. всегда одинаковым, при условии, что один и тот же строковый вход
  2. максимально приближен к истинной уникальности то есть избегать как можно больше разных строк, получая в результате одну и ту же строку ha sh.
  3. настолько быстро, насколько это возможно (поскольку при создании интерфейса будет много использоваться)

Цель состоит в том, чтобы преобразовать поле 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 "";
}

Исходный код отсюда

1 Ответ

0 голосов
/ 14 марта 2020

Если вы хотите добавить каждый символ в Hashset строк, чтобы избежать дублирования символов, как я понял:

String chars="HGWSIg2YYYqZ12OrgUjk"
Hashset<String> string=new Hashset<String>();

for(i=0;i<chars.length,i++){

string.add(chars.charAt(i));
}

после его завершения Hashset будет содержать каждый символ как элемент и предотвращать дублирование

...