从字母数字字符串生成独立于语言的随机数生成器



我正在编写一个程序,希望能够从Parse.com随机生成的两个10个字符的字母数字字符串的种子中生成一个集合范围内的随机整数。(例如:"bGmwcRG6ch"one_answers"7AdFJ4VyY3")。我还希望无论我用什么语言运行这个程序,都能生成相同的数字。这个数字将对应于程序中存储的预定义用户名。

我遇到的最大问题是,我希望在未来能够添加更多的用户名(增加集合的范围),而不更改每个人的用户名。目前我有200个。

到目前为止(用Java编写):

public String generateUsername(String userId, String chatId)
{
    String s = userId + chatId;
    long seed = 0;
    for (int i = 0; i < s.length(); i++)
    {
        seed = seed + s.charAt(i);
    }
    Log.d("chatId", chatId);
    Log.d("userId", userId);
    Log.d("Seed: ", Long.toString(seed));        
}

日志输出:

11-07 14:58:45.902 10666-10666/?D/chatId:bGmwcRG6ch

11-07 14:58:45.902 10666-10666/?D/userId:7和FJ4VyY3

11-07 14:58:45.902 10666-10666/?D/种子::1669

任何建议都将不胜感激。

我认为到目前为止您编写的代码是完整和完美的,这个逻辑是由字母数字字符生成的独立于语言的随机数生成器。

因为这是根据字母数字字符的ASCII值计算Numeric值,并且ASCII值对于任何语言都是相同的。ASCII代表美国信息交换标准代码。

一种解决方案是标准哈希,要么是像SHA-1这样缓慢但安全的加密哈希,要么像FNV这样更快、不太安全的非加密哈希。在任何一种情况下,请务必仔细指定格式。例如,带有BOM的UTF-8与没有BOM的UTF-8具有不同的字节模式。

最新更新