我在c中第一次使用crypt()函数。我刚刚运行了一些初始测试,因此实际上并没有使用这些测试,特别是恒定的盐值。 :)
我运行以下代码:
crypt(password, "$1$k7de83ka7");
根据我对crypt文档的理解,这个提供的salt值应该指定crypt()在MD5模式下运行,这将产生格式为“$ 1 $”的哈希。 $ 1 $指定使用MD5进行哈希处理的值。这就是我理解它应该起作用的方式。
但是,当我测试上面的代码时,返回的值是“$ 1ciFuWRySk3A”,所以它似乎缺少一个'$'字符。我做错了导致这个问题吗?
答案 0 :(得分:1)
crypt(password, "$1$k7de83ka7");
我认为您没有正确地调用crypt
,请参见手册页:
如果salt是以字符“$ id $”开头的字符串 后跟一个以“$”结尾的字符串: $ id $ salt $ encrypted
然后id标识加密方法。
你不应该指望它返回一个包含$(不一定)
的字符串成功时,返回指向加密密码的指针。上 错误,返回NULL。