Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 如何在登录时将原始密码与数据库中的加密密码条目匹配 MessageDigest alg=MessageDigest.getInstance(“MD5”); alg.reset(); alg.update(password.getBytes()); 字节[]摘要=alg.digest(); StringBuffer hashedpasswd=新的StringBuffer(); 串hx; 对于(int i=0;i_Java_Database_Passwords_Md5_Password Encryption - Fatal编程技术网

Java 如何在登录时将原始密码与数据库中的加密密码条目匹配 MessageDigest alg=MessageDigest.getInstance(“MD5”); alg.reset(); alg.update(password.getBytes()); 字节[]摘要=alg.digest(); StringBuffer hashedpasswd=新的StringBuffer(); 串hx; 对于(int i=0;i

Java 如何在登录时将原始密码与数据库中的加密密码条目匹配 MessageDigest alg=MessageDigest.getInstance(“MD5”); alg.reset(); alg.update(password.getBytes()); 字节[]摘要=alg.digest(); StringBuffer hashedpasswd=新的StringBuffer(); 串hx; 对于(int i=0;i,java,database,passwords,md5,password-encryption,Java,Database,Passwords,Md5,Password Encryption,,在检查数据库时,使用与数据库中保存密码相同的算法对输入的密码进行散列。散列就是这样工作的。您不需要“解密”数据库中的密码,这是不可能的。您希望对输入的密码进行散列,并检查散列值(即db中的值和刚才散列的值)是否相等。这就是散列的整个概念。您不能“去散列”您只能对即将到来的数据进行散列,并将其与以前的散列值进行比较。加密(用户输入的密码)==getPasswordFromDatabase()这里要遵循的模式是,对传入密码进行单向散列,并将其存储在数据库表中。然后,在与数据库中存储的密码进行比较之

,在检查数据库时,使用与数据库中保存密码相同的算法对输入的密码进行散列。散列就是这样工作的。您不需要“解密”数据库中的密码,这是不可能的。您希望对输入的密码进行散列,并检查散列值(即db中的值和刚才散列的值)是否相等。这就是散列的整个概念。您不能“去散列”您只能对即将到来的数据进行散列,并将其与以前的散列值进行比较。

加密(用户输入的密码)==getPasswordFromDatabase()

这里要遵循的模式是,对传入密码进行单向散列,并将其存储在数据库表中。然后,在与数据库中存储的密码进行比较之前,获取每个传入的明文密码,并对其进行散列。使用相同的算法加密密码,并与数据库进行检查,无需解密相同的代码我应该在我的登录页面中添加相同的代码吗?那么我应该在登录页面中添加相同的代码,并通过输入密码来比较散列值,例如:admin123。是的,这是你应该做的。如果你的登录逻辑与后端代码使用相同的语言,那会更容易一些。我使用jsp查看其他功能,使用java代码。我对w不太熟悉使用JSP,但您在哪里将输入的值与数据库中的值进行比较?是使用java还是JSP?顺便说一句,您必须在登录时使用其中任何一个进行再次哈希。在比较password.equals(passwordDB)之前,请使用passwordDB执行相同的操作,passwordDB应返回hashedpassword。然后执行以下操作(password.equals(hashedpassword))或您在代码中使用的任何逻辑对其进行散列。
   MessageDigest alg = MessageDigest.getInstance("MD5");
   alg.reset(); 
   alg.update(password.getBytes());
   byte[] digest = alg.digest();
   StringBuffer hashedpasswd = new StringBuffer();
   String hx;
   for (int i=0;i<digest.length;i++){
   hx =  Integer.toHexString(0xFF & digest[i]);
   //0x03 is equal to 0x3, but we need 0x03 for our md5sum
   if(hx.length() == 1){hx = "0" + hx;}
   hashedpasswd.append(hx);
  }