呼叫加密方法,不工作?

时间:2010-08-26 20:26:19

标签: php oop encryption

我有一个名为Membership的类,其中我有两种方法。第一个叫做validateUser,第二个叫做encryptPass。问题是即使我调用encryptPass方法,它也会返回原始密码。换一种说法;它似乎并没有实际返回数据或它没有正确调用方法?

我是OOP的新手,所以不要因为我现在不太了解而判断我。

这就是我称之为方法的样子:

  //validate password and hash it if valid
  if(strlen($password) > 25 || strlen($password) < 4) {
   $password = $this->encryptPass($password);
   $errorArray[] = "Löenordet måste vara mellan 4-25 tecken långt.";
  }

这就是实际的encryptPass方法的样子:

 function encryptPass($password) {
  $salt = substr($password, 2, 4);
  $password = md5(md5($password));
  $password = substr($password, 0, 20) . $salt . substr($password, 0, 20);
  $password = md5($password);
  return $password;
 }

我把你自己看到的自定义加密算法汇总在一起,也许我会以某种方式搞砸了?

提前致谢!

2 个答案:

答案 0 :(得分:1)

除非您的$ password字符串超过25个字符或小于4,否则不会调用您的encryptPass()方法。您确定这是正确的逻辑吗?

答案 1 :(得分:0)

您正在检查if(strlen($password) > 25 || strlen($password) < 4),其中英文为“如果字符串的长度大于25或小于4”,这可能不是正确的逻辑。你可能打算做

if (strlen($password) > 4 && strlen($password) < 25)

将检查长度在5到24个字符之间的密码,或

if (strlen($password) >= 4 && strlen($password) <= 25)

如果您想检查长度在4到25个字符之间的密码。