3

我第一次在 c 中使用 crypt() 函数。我只是在运行一些初始测试,因此实际上不会使用这些测试,尤其是恒定的盐值。:)

我运行以下代码:

crypt(password, "$1$k7de83ka7");

根据我对 crypt 文档的理解,这个提供的 salt 值应该指定 crypt() 在 MD5 模式下运行,这将产生格式为“$1$”的哈希。$1$ 指定使用 MD5 散列的值。这就是我理解它应该起作用的方式。

但是,当我测试上面的代码时,返回的值是“$1ciFuWRySk3A”,所以它似乎缺少一个“$”字符。我做错了什么导致这个问题吗?

4

1 回答 1

1
crypt(password, "$1$k7de83ka7");

从手册页中,我认为您的调用不crypt正确:

如果 salt 是一个以字符 "$id$" 开头的字符串,后跟一个以 "$" 结尾的字符串$id$salt$encrypted

然后 id 标识加密方法。

而且你不应该期望它返回一个包含 $ 的字符串(不一定)

成功时,返回一个指向加密密码的指针。出错时,返回 NULL。

于 2012-11-15T18:46:52.600 回答