Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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 如何以安全的方式存储用户名和密码_Java_Passwords_Password Encryption - Fatal编程技术网

Java 如何以安全的方式存储用户名和密码

Java 如何以安全的方式存储用户名和密码,java,passwords,password-encryption,Java,Passwords,Password Encryption,我正在构建一个java web应用程序,它必须与active directory(AD)服务器和另一个web服务(WS)服务器通信。AD&WS都需要使用相同的用户名和密码集进行身份验证。我应该如何以安全的方式存储用户名和密码 我目前正在考虑将加密密码存储在数据库中,而密钥存储在web应用程序中,该应用程序捆绑在.war文件中。应用服务器和数据库服务器位于不同的计算机中。这是完成这项任务的适当方式吗?请建议是否有更好的方法来执行此操作您可以使用支持加密功能的MessageDigest类(例如,MD

我正在构建一个java web应用程序,它必须与active directory(AD)服务器和另一个web服务(WS)服务器通信。AD&WS都需要使用相同的用户名和密码集进行身份验证。我应该如何以安全的方式存储用户名和密码


我目前正在考虑将加密密码存储在数据库中,而密钥存储在web应用程序中,该应用程序捆绑在.war文件中。应用服务器和数据库服务器位于不同的计算机中。这是完成这项任务的适当方式吗?请建议是否有更好的方法来执行此操作

您可以使用支持加密功能的
MessageDigest
类(例如,MD5),并使用它将客户端上的字符串密码转换为字节数组,然后将其传输到服务器。您不需要在服务器上保存字符串,只需要比较编码字节数组。 例如:


尝试将集中式用户身份验证作为一项服务,并使用cookie存储用户信息。

您可以对密码和用户名进行编码,并将其存储在您想要的位置。并在阅读后对其进行解码。 幸运的是,在我的应用程序中,我创建了一个库包,其中包含编码和解码字符串的类。你应该给我你的电子邮件,这样我就可以发送jar文件给你

要编码,您可以使用与此类似的代码

 String encode(String s){
char[] ret=new char[s.length];
for(int i=0;i<s.length();i++)
{
 ret[i]=(char)((s.charAt(i)+23)*i+12);
 }
String encoded=new String(ret);
return encoded;
 }
您可以写相反的代码来解码编码的字符串。
不要使用自己的算法复制它

有没有可能使用属性或环境变量注入它?我以前想过在属性文件中存储用户名和密码。在我的例子中,使用属性文件需要部署web应用程序,这是由另一个团队完成的,并且需要一系列过程。如果密码被更改,这可能需要一天的时间来更新,这不是首选。请求的web服务不是由我们开发的。请求必须以以下形式发送:。我不能以web服务不允许的摘要形式发送密码。这非常危险!不要用这个!如果攻击者获得对服务器的访问权,则编码完全不起任何作用。编码不是加密。
 String encode(String s){
char[] ret=new char[s.length];
for(int i=0;i<s.length();i++)
{
 ret[i]=(char)((s.charAt(i)+23)*i+12);
 }
String encoded=new String(ret);
return encoded;
 }