gpt4 book ai didi

java - 检查 Java 单元测试中密码是否经过哈希处理

转载 作者:行者123 更新时间:2023-12-01 13:13:37 24 4
gpt4 key购买 nike

从纯文本密码开始并应用 BCrypt 算法,如何测试它是否已被散列以执行 Java 单元测试?

最佳答案

使用 "properties" 的非常宽松的解释对于加密哈希函数,如果您只有哈希值,您将无法确定使用哪种哈希函数来生成它。

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

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

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

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

如果测试通过,您将知道被测系统至少对测试 vector 中的值使用正确的 bcrypt。

关于java - 检查 Java 单元测试中密码是否经过哈希处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22638064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com