【发布时间】:2011-04-01 21:09:06
【问题描述】:
现在我正在使用 Zend 框架和 phpunit。这是我的困境。
当我创建一个用户时,我在用户表中散列密码。我添加了两种盐,一种来自应用程序的静态盐,另一种是随机生成的。我使用数据库 SHA 函数,然后使用 UNHEX 将密码存储在二进制列中。为了告诉数据库如何散列密码,我使用 Zend_Db_Expr 像这样:
protected function _createPasswordDbExpression( $password )
{
$quoted = $this->getDbTable()->getAdapter()->quoteInto( 'UNHEX( SHA1( ? ) )', $password );
$binaryPassword = new Zend_Db_Expr( $quoted );
return $binaryPassword;
}
到目前为止,我一直在使用 xml 数据集来指定预期结果,但现在,使用散列密码,我不知道该怎么做。
我看到了解决方案,但必须有更好的方法。
我可以预先散列一个或多个密码,并且只在我的测试期间和我的 xml 文件中使用它。
还有其他更好、更可测试的解决方案吗?
当 phpunit 尝试直接插入“散列”密码时,我不知道这个二进制列会如何影响事情。
【问题讨论】: