0

我正在尝试通过 Java 上的密码激活我的程序。基本上,在用户注册时,将询问由授权人员提供的“教师通行证”,如果正确,程序将允许用户自行使用。

学生也可以使用该程序,但他们无法访问其中的某些内容。

private static String encrypt()
{   
    String s = "CORNFLAKES";
    String pass = "";
    Random rnd = new Random();
    int i = rnd.nextInt(s.length());
    for(int j = 0; j < 7; j++)
    {
        pass += ""+ i + s.charAt(i);
        i = rnd.nextInt(s.length());
    }
    return pass;
} 

private static boolean decrypt (String s)
{   
    if(s.length() != 14)
        return false;
    String teacherPass = "CORNFLAKES";
    String[] tokens = s.split("A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|Q|P|R|S|T|U|V|W|X|Y|Z");
    int loc;
    for(int i = 0; i< 7; i++)
    {
        loc = Integer.parseInt(tokens[i]);
        if(s.charAt(2*i+1) != teacherPass.charAt(loc))
            return false;
    }


    return true;
}

肯定有更好的解决方案,但它是什么?顺便说一句,我使用 MySQL 来保存用户信息。

4

1 回答 1

1

您应该研究用于存储密码的散列,然后在登录时再次对其进行散列并比较散列。

例如: http ://en.wikipedia.org/wiki/SHA-2

散列(如果使用和实施得当)具有非常好的密码存储和验证属性:该过程不能逆转。因此,即使有人要访问您的用户凭据表,他们也不会了解您的用户密码。通过对新输入进行哈希处理并比较哈希值来检查输入的密码与存储的哈希值。

如果你不是安全专家,你也不应该自己写这样的东西,因为你总是会犯一个小错误,使整个系统不安全。使用合适的库。

您还应该研究哈希的盐,但是从简单的哈希开始,一旦您了解了基础知识就继续前进。

于 2013-05-08T14:08:12.410 回答