Java 生成并验证随机字符串

Java 生成并验证随机字符串,java,android,random,Java,Android,Random,我需要基于另一个字符串使用Java生成一个字符串。但我还需要能够使用原始字符串检查生成的字符串是否有效。问题是,我需要一个Java应用程序,它可以为每个客户生成有效的代码,以允许他们执行某些操作,因此当他们使用它时,我需要能够验证他们输入的代码是否对该客户有效 原始字符串可以是唯一字段的电子邮件,也可以是id。。。同样,生成密钥的逻辑也需要在Android应用程序中完成,这样他们可以在离线时获得密钥,然后在Java应用程序中,我需要能够验证该密钥是否有效 通过java.util.random生成

我需要基于另一个字符串使用Java生成一个字符串。但我还需要能够使用原始字符串检查生成的字符串是否有效。问题是,我需要一个Java应用程序,它可以为每个客户生成有效的代码,以允许他们执行某些操作,因此当他们使用它时,我需要能够验证他们输入的代码是否对该客户有效


原始字符串可以是唯一字段的电子邮件,也可以是id。。。同样,生成密钥的逻辑也需要在Android应用程序中完成,这样他们可以在离线时获得密钥,然后在Java应用程序中,我需要能够验证该密钥是否有效

通过java.util.random生成随机字,通过StringBuilder生成求和字符 并使用String.contains进行检查

String specialWord = "abcde";

String wordNew = newWordBySpecialWord();//create word
Log.i("wordNew  ", wordNew);

Log.i("checking  ", String.valueOf(checking(wordNew))); //return true
Log.i("checking  ", String.valueOf(checking(wordNew+"gfrf"))); //return false



public String newWordBySpecialWord() {
    char[] chars = specialWord.toCharArray();
    StringBuilder sb = new StringBuilder();
    Random random = new Random();
    for (int i = 0; i < 16; i++) {
        char c = chars[random.nextInt(chars.length)];
        sb.append(c);
    }
    return sb.toString();
}

public boolean checking(String word) {
    for (char aChar : word.toCharArray()) {
        if (!specialWord.contains(String.valueOf(aChar))) {
            return false;
        }
    }
    return true;
}

很难理解您在寻找什么,但我认为MD5对于这项工作来说已经足够好了:如果您想为客户端提供一个临时令牌,那么该令牌应该存储在您的数据库中,以链接到帐户及其权限,如何存储令牌由您决定,但为了使其具有可读性,只需使用Base64编码,不需要encryptionUUID并将UUID和客户ID存储在您再次发布基本相同答案的位置,但在此期间它并没有变得更好。检查时,只包含原始特殊单词字符的每个单词都将通过。例如,`wordNew+acba是有效的。换句话说,如果原始单词中至少有一个字母,只需26次尝试就可以猜出有效的标记。此外,我们无法确定原始单词是什么。因此,没有机会发现该代码是否对该客户有效。