根据字符串生成不同的密码 - 激活密钥

时间:2013-05-08 14:02:21

标签: java

我正在尝试通过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来保存用户信息。

1 个答案:

答案 0 :(得分:1)

您应该查看哈希存储密码,然后在登录时再次哈希并比较哈希值。

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

哈希(正确使用和实现时)具有非常好的密码存储和验证属性: 该程序无法逆转。因此,即使有人访问您的用户凭据表,他们也无法了解您的用户密码。通过对新输入进行散列并比较散列来检查输入的密码与存储的散列。

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

你也应该研究哈希的盐,但从简单的哈希开始,一旦你理解了基础知识就继续。