Java 在数据库中安全地存储1个密码
我有一个JavaSwing应用程序,它以一个登录页面开始,如果登录被验证,它应该将admin带到仪表板。因为只有一个管理员,所以只有一个用户名和密码组合 现在,我只是使用一个简单的插入查询将用户名和密码插入到sql表中。 我是新手,所以我不知道该怎么做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
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。性能损失更大(最小),但安全性更高