由于python程序随后几天返回*0
:
import crypt
# broken:
>>> crypt.crypt('pw', '$6$rounds=5000$0123456789abcdef')
'*0'
# works:
>>> crypt.crypt("pw", '$6$0123456789abcdef')
'$6$0123456789abcdef$zAYvvEJcrKSqV2KUPTUM1K9eaGv20n9mUjWSDZW0QnwBRk0L...'
>>> crypt.crypt('pw', '$6$rounds=5001$0123456789abcdef')
'$6$rounds=5001$0123456789abcdef$mG98GkftS5iu1VOpowpXm1fgefTbWnRm4rbw...'
>>> crypt.crypt("pw", '$6$rounds=4999$0123456789abcdef')
'$6$rounds=4999$0123456789abcdef$ulXwrQtpwNd/t6NVUJo53AXMpp40IrpCHFyC...'
我对一个使用crypt_r
的小型C程序也做了同样的处理,结果是一样的。我在一些帖子中读到,*0
和{
{{cd7>中支持第二个参数{cd7>,因为第二个参数在cd7>中是受支持的。为什么我不能把rounds
设置为5000?
我用的是Fedora28和Glibc2.27。对于不同的Python版本(甚至Python2和Python3),结果是相同的。在PHP中使用crypt
也可以正常工作。但最有趣的是,在Docker容器(fedora:28
)中运行相同的命令可以工作:
有人知道这种行为的原因吗?在
{包含^ a1:
这是introduced in a commit “Add more tests based on gaps in line coverage.”的评论:
我建议打开一个问题,如果这导致太多的兼容性问题。或者,您可以删除
rounds=5000
规范,但根据快速浏览,我觉得该更改似乎应该恢复。它不是glibc中最初的libcrypt
实现的一部分。在相关问题 更多 >
编程相关推荐