检查Java Unit测试中是否对密码进行了哈希处理

时间:2014-03-25 14:47:01

标签: java unit-testing automated-tests bcrypt string-hashing

从纯文本密码开始并应用BCrypt算法,我如何测试它是否已经过哈希处理以实现Java单元测试?

1 个答案:

答案 0 :(得分:1)

使用加密散列函数"properties"的非常宽松的解释,如果只有散列值,则无法确定使用哪种散列函数来生成它。

对于密码和MAC,甚至还有一个特殊的“indistinguishability”属性可以以相同的方式松散地解释。更严格地说,它给出了两个输入值,一个密码和一个输出值,你无法识别输出是对应于第一个输入还是对应于第二个输入。

检查特定加密函数是否正确实现的方法之一,或者特定代码是否使用特定加密函数的方法之一是使用测试向量,其中每个项目完全描述所有输入数据和预期输出。

将所有这些应用于您的用例:使用受信任的bcrypt实现以{input,bcrypt(input)}的形式准备项目向量。创建一个测试,将输入提交到系统中,并检查输出是否等于预期值。

如果测试失败,您将知道被测系统使用的bcrypt实现被破坏或者被测系统根本不使用bcrypt(使用其他散列函数而不是bcrypt)

如果测试通过,您将知道被测系统至少使用适当的bcrypt测试向量中的值。