我試圖將密碼存儲到數據庫與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. 如何解密存儲在數據庫中的shiro密碼..?
- 3. 在數據庫中存儲密碼哈希的未加密鹽
- 4. 將密碼加密存儲到數據庫中
- 5. 加密密碼並存儲在數據庫中android
- 6. 存儲加密密碼和salt或僅存儲加密密碼?
- 7. Prestashop - 如何加密數據庫密碼?
- 8. Rails數據庫 - 如何使用用戶密碼存儲加密數據?
- 9. 在Web數據庫中存儲密碼?
- 10. 密碼加密和密碼存儲 - Perl
- 11. 如何在Android中的SQLite數據庫中存儲AES密碼?
- 12. 在加密的cookie中存儲密碼?
- 13. Capistrano:爲Laravel存儲數據庫密碼
- 14. 如何在JSONStore中存儲加密密鑰/密碼
- 15. 用於在數據庫中存儲加密密鑰的數據庫類型
- 16. 加密數據庫上的密碼
- 17. 將加密密碼存儲在xml中
- 18. 如何在C#中的cookies中存儲加密的密碼?
- 19. 如何在數據庫中存儲鹽漬散列密碼
- 20. 如何在數據庫中存儲密碼?
- 21. 加密的Subversion存儲庫
- 22. 建議如何在數據庫中加密用戶密碼?
- 23. Woocommerce數據存儲在數據庫中的加密格式
- 24. 如何加密Solr的DataInputHandler(DIH)使用的數據庫密碼?
- 25. 如何存儲密碼以解密安全數據?
- 26. 正在將數據庫密碼存入未加密的_bug_?
- 27. 在數據庫中存儲用戶密碼/數據
- 28. 如何加密/解密SQLite數據庫中的數據?
- 29. AES加密 - 在Android上存儲密碼
- 30. 如何加密密碼並將其保存在MySQL數據庫中。
-1建議使用快速散列函數。見http://security.stackexchange.com/a/242/5501 – 2012-06-28 14:39:58