我试图将密码存储到数据库与JSP和Servlet的帮助下加密形式。我该怎么做?如何存储数据库中加密的密码?
回答
尝试这样的事情对数据进行加密。
MessageDigest md = MessageDigest.getInstance("MD5");
......
synchronized (md) {
md.reset();
byte[] hash = md.digest(plainTextPassword.getBytes("CP1252"));
StringBuffer sb = new StringBuffer();
for (int i = 0; i < hash.length; ++i) {
sb.append(Integer.toHexString((hash[i] & 0xFF) | 0x100).toUpperCase().substring(1, 3));
}
String password = sb.toString();
}
你也可以使用类似下面的东西。下面是一个加密方法,它接受一个字符串输入并返回并加密字符串。您可以将密码传递给此方法。
public static String crypt(String str) {
if (str == null || str.length() == 0) {
throw new IllegalArgumentException(
"String to encrypt cannot be null or zero length");
}
StringBuffer hexString = new StringBuffer();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte[] hash = md.digest();
for (int i = 0; i < hash.length; i++) {
if ((0xff & hash[i]) < 0x10) {
hexString.append("0"
+ Integer.toHexString((0xFF & hash[i])));
} else {
hexString.append(Integer.toHexString(0xFF & hash[i]));
}
}
} catch (NoSuchAlgorithmException e) {
}
return hexString.toString();
}
-1建议使用快速散列函数。见http://security.stackexchange.com/a/242/5501 – 2012-06-28 14:38:22
@Andrey Botalov。好的有效的点。感谢您的有用链接。 – ashishjmeshram 2012-06-28 14:49:56
自写算法是一种安全风险,并且很难维护。
MD5是not secure。
使用bcrypt算法,通过jBcrypt(开放源代码)提供:
// Hash a password
String hashed = BCrypt.hashpw(password, BCrypt.gensalt());
// Check that an unencrypted password matches or not
if (BCrypt.checkpw(candidate, hashed))
System.out.println("It matches");
else
System.out.println("It does not match");
如果你使用Maven,你可以在你的pom.xml 插入下面的依赖使该库(如果新版本可以请让我知道):
<dependency>
<groupId>de.svenkubiak</groupId>
<artifactId>jBCrypt</artifactId>
<version>0.4.1</version>
</dependency>
如何在我的代码中使用它 – 2017-02-28 11:05:42
@VedPrakash:我添加了一段关于从Maven获取它的段落,这有帮助吗? – 2017-03-01 03:10:19
@Nicolass拉乌尔谢谢主席先生 – 2017-03-01 06:28:25
- 1. 如何在AES数据库中存储AES加密密码
- 2. 加密/解密存储在精简数据库中的密码
- 3. 如何密码储存在数据库
- 4. 如何存储数据库密码?
- 5. 如何存储数据库密码
- 6. 如何解密存储在数据库中的shiro密码..?
- 7. 在数据库中存储密码哈希的未加密盐
- 8. 加密密码并存储在数据库中android
- 9. 将密码加密存储到数据库中
- 10. 存储加密密码和salt或仅存储加密密码?
- 11. Prestashop - 如何加密数据库密码?
- 12. Rails数据库 - 如何使用用户密码存储加密数据?
- 13. 解密存储在哈希码数据库中的密码
- 14. 在Web数据库中存储密码?
- 15. 如何在mysql数据库中存储盐以实现安全密码加密?
- 16. 如何以加密形式在oracle 11g数据库中存储密码字段?
- 17. 加密SQLite数据库中的密码?
- 18. 存储密码的数据库
- 19. 密码加密和密码存储 - Perl
- 20. 如何存储和检索使用c#加密的数据库连接密码
- 21. 如何在Android中的SQLite数据库中存储AES密码?
- 22. 在加密的cookie中存储密码?
- 23. 在数据库中加密密码
- 24. Capistrano:为Laravel存储数据库密码
- 25. 存储/从数据库读取密码
- 26. 加密密码以匹配存储的加密密码。
- 27. 如何在JSONStore中存储加密密钥/密码
- 28. 用于在数据库中存储加密密钥的数据库类型
- 29. 加密数据库上的密码
- 30. Rails加密SQL Server数据库database.yml中的数据库密码
-1建议使用快速散列函数。见http://security.stackexchange.com/a/242/5501 – 2012-06-28 14:39:58