在Android上从任何一种语言到20个字符的最快哈希计算[关闭]

问题描述 投票:0回答:1

我正在android中寻找从1到20个字符的字符串转换为任何语言(例如希伯来语,英语,中文)到大约20个字符的转换函数。从hello worldHGWSIg2YYYqZ12OrgUjk

散列结果应为:

  1. 假定相同的字符串输入,始终相同
  2. 尽可能接近真实唯一性,即避免尽可能多的不同字符串导致相同的哈希字符串。
  3. 尽可能快(因为制作UI时会经常使用)

目的是将Firestore数据库中的description字段转换为其文档ID,从而以最小的开销自动防止description的重复

当在网上查找和堆栈溢出的答案时,我可以看到诸如下一个解决方案:

public static byte[] getSHA(String input) throws NoSuchAlgorithmException
    {
        // Static getInstance method is called with hashing SHA
        MessageDigest md = MessageDigest.getInstance("SHA-256");

        // digest() method called
        // to calculate message digest of an input
        // and return array of byte 
        return md.digest(input.getBytes( StandardCharsets.UTF_8));
    }

public String md5(String s) {
    try {
        // Create MD5 Hash
        MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
        digest.update(s.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuffer hexString = new StringBuffer();
        for (int i=0; i<messageDigest.length; i++)
            hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
        return hexString.toString();

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return "";
}

我没有测试它们,因为即使它们起作用了,也很难证明它们是实现我的目标的最佳选择。>

我正在android中寻找一种转换功能,将任何语言(例如希伯来语,英语,中文)的1-20个字符转换成大约20个字符。从hello world到HGWSIg2YYYqZ12OrgUjk哈希...

android hash
1个回答
0
投票

如果您想在字符串的哈希集中添加每个字符,以避免重复的字符,据我所知:

© www.soinside.com 2019 - 2024. All rights reserved.