Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在数据库中安全地存储1个密码_Java_Sql_Swing_Security_Passwords - Fatal编程技术网

Java 在数据库中安全地存储1个密码

Java 在数据库中安全地存储1个密码,java,sql,swing,security,passwords,Java,Sql,Swing,Security,Passwords,我有一个JavaSwing应用程序,它以一个登录页面开始,如果登录被验证,它应该将admin带到仪表板。因为只有一个管理员,所以只有一个用户名和密码组合 现在,我只是使用一个简单的插入查询将用户名和密码插入到sql表中。 我是新手,所以我不知道该怎么做 create table login ( Emp_id INT AUTO_INCREMENT PRIMARY KEY, Emp_Fname VARCHAR(50), Emp_Lname VARCHAR(50), U

我有一个JavaSwing应用程序,它以一个登录页面开始,如果登录被验证,它应该将admin带到仪表板。因为只有一个管理员,所以只有一个用户名和密码组合

现在,我只是使用一个简单的插入查询将用户名和密码插入到sql表中。 我是新手,所以我不知道该怎么做

create table login (
    Emp_id INT AUTO_INCREMENT PRIMARY KEY,
    Emp_Fname VARCHAR(50),
    Emp_Lname VARCHAR(50),
    Username VARCHAR(50),
    Password VARCHAR(50)
);
insert into login (Emp_id, Emp_Fname, Emp_Lname, Username, Password) values (1, 'TestFName', 'TestLName', 'Test', 'Test');

我希望密码加密或散列,而不是以明文形式存储。

我目前正在用手机输入密码,请原谅。看起来你希望你的密码看起来像:eive29ceic28e8c38d9h3ce9h而不是“password123”

您可以使用类似SHA-1的东西,它在java中与SHA256和SHA512集成。这两个都可以在谷歌快速搜索后找到。我个人在一个项目中使用了它们,但是使用一轮的结果作为下一轮的输入,递归地运行这个方法100次。然后,我使用以下方案扩展了字符串的长度:password+password backwards+password+password。在我的例子中,密码长度为4x512位,看起来相对安全。 之后,我将它保存到一个文件中,每次我想登录时,我都会获取输入并对其进行加密,然后将其与我文件中的密码进行比较。如果他们匹配,你就加入。我知道你可以用蛮力破解sha-1。如果您想要不同的东西,请尝试bcrypt、pbkdf2或argon2

我想给你链接,但在手机上很难。我希望这对你有用。否则,我将在明天上午发表评论


编辑:查看你的评论,这里有一个指向我所指算法的链接。只需将其放入for循环100次…

我目前正在用手机打字,请原谅。看起来你希望你的密码看起来像:eive29ceic28e8c38d9h3ce9h而不是“password123”

您可以使用类似SHA-1的东西,它在java中与SHA256和SHA512集成。这两个都可以在谷歌快速搜索后找到。我个人在一个项目中使用了它们,但是使用一轮的结果作为下一轮的输入,递归地运行这个方法100次。然后,我使用以下方案扩展了字符串的长度:password+password backwards+password+password。在我的例子中,密码长度为4x512位,看起来相对安全。 之后,我将它保存到一个文件中,每次我想登录时,我都会获取输入并对其进行加密,然后将其与我文件中的密码进行比较。如果他们匹配,你就加入。我知道你可以用蛮力破解sha-1。如果您想要不同的东西,请尝试bcrypt、pbkdf2或argon2

我想给你链接,但在手机上很难。我希望这对你有用。否则,我将在明天上午发表评论


编辑:查看你的评论,这里有一个指向我所指算法的链接。只需将其放入for循环100次…

看看这个或。请注意,密码字段的长度必须适合整个散列,否则您将失去一些机制优势请进行一些研究,例如,在web搜索中查看此或。请注意,密码字段的长度必须与整个哈希匹配,否则会失去一些机制优势请进行一些研究,例如,按照您的建议,在原始密码后添加不同形式的密码的web搜索不会大大提高安全性,事实上,这是因为正如你可能知道的那样:长度每次都战胜复杂性。因此,使用我的方法可以帮助延长暴力的持续时间。如果您需要更多的安全性,请自行构建一个算法,将长度扩展到10k或100k。性能损失更大(最小),但安全性更高按照您的建议,在原始密码的基础上附加不同形式的密码不会提高很多安全性,而是使用哈希盐。事实上确实如此,因为正如您可能知道的那样:每次长度都比复杂性高。因此,使用我的方法可以帮助延长暴力的持续时间。如果您需要更多的安全性,请自行构建一个算法,将长度扩展到10k或100k。性能损失更大(最小),但安全性更高