我有点悖论。如何使用TDD(测试第一次)进行密码散列实施?
我试图在构建实现之前使用TDD为我的密码哈希方法构建测试。但是我没有事先想出预期的价值,没有先建立实施。
当然,通过简单的哈希实现,我可以找到一个基于已知密码/ salt创建预期值的站点。
我敢打赌,解决方案是为TDD制定一个例外,并放弃首先构建我的测试。相反,构建我的实现以提供适当的salt/hash值,然后针对这些值构建我的测试以防止回归。
但我想我会张贴这个看看有没有我没有想到的解决方案。
或者,也许有人会在他们脑海中产生哈希以便首先构建测试。
你打算发明一种新的哈希算法吗?如果没有,那么可以使用“现有技术”来计算这些数据。 – Thilo 2012-07-09 04:50:57
许多事情都会进入散列密码。例如,许多人使用:一些随机生成的值存储w/user +一些静态编译立即数值+密码。然后,在使用RFC2898时,散列值可以根据迭代次数进行更改。如果这些变量中的任何一个发生变化,认证将会中断(因此单元测试也应该这样做)。 – 2012-07-09 04:54:32
如果你不能先写测试,你怎么知道你写的代码是正确的?你是否会接受“正确”意味着“无论这个算法的第一版产生什么”?这里有没有其他的标准可以用来编写测试? – Domenic 2012-07-09 05:52:31