Java 传输和存储数据的安全方式
我正在编写一个客户机-服务器应用程序。客户端和服务器之间的通信使用JavaRMI。我已经设置了RMI,以便它使用Java 传输和存储数据的安全方式,java,security,encryption,Java,Security,Encryption,我正在编写一个客户机-服务器应用程序。客户端和服务器之间的通信使用JavaRMI。我已经设置了RMI,以便它使用SSLSockets,因此通信是安全的。但是现在我希望我的客户机输入密码,密码需要发送到服务器并以安全的方式存储在那里 问题1:发送此密码时是否需要加密,或者使用SSLSockets就足够了 问题2:我正在考虑在服务器上使用hashfunction(如SHA1)对其进行加密,然后将其与存储值进行比较 问题3:如何以安全的方式存储这些密码?我想把它们放在本地。我应该创建一个数据库并存储
SSLSockets
,因此通信是安全的。但是现在我希望我的客户机输入密码,密码需要发送到服务器并以安全的方式存储在那里
- 问题1:发送此密码时是否需要加密,或者使用
就足够了SSLSockets
- 问题2:我正在考虑在服务器上使用hashfunction(如
)对其进行加密,然后将其与存储值进行比较SHA1
- 问题3:如何以安全的方式存储这些密码?我想把它们放在本地。我应该创建一个数据库并存储加密的密码吗?这方面的常见做法是什么
SHA1
:
问题3:
在数据库中的某个特定表中存储密码是一种非常常见的做法。我建议将哈希密码与所谓的密码一起使用,因此协议为:
- 用户正在注册或更改密码并向您发送其密码
- 我们生成一些很长的随机字符串,我们将其用作盐
- 现在,我们需要计算数据库中的值
sha1()
方法:
String salt = generateLongRandomString();
String hashToStore = sha1(sha1(password) + salt);
- 现在,我们需要在数据库中为每个用户存储至少三个字段:
或类似的内容,可能是username
<代码>哈希存储<代码>盐李>email
- 用户希望进行身份验证并向您发送其密码
- 您可以通过用户名或电子邮件检索此用户存储的哈希和salt李>
- 您可以使用我上面写的公式重新计算散列,并将其与存储值进行比较。如果匹配,则用户是真实的,您可以通知他/她