【发布时间】:2019-04-19 07:40:27
【问题描述】:
当使用 Perl crypt 函数时,只有前 8 个字符被加密。有没有办法让它使用更多的字符?
举个例子:
$crypted_password = crypt ("PassWord", "SALT");
和
$crypted_password = crypt ("PassWord123", "SALT");
返回完全相同的结果。 $crypted_password 具有完全相同的值。
很想使用 crypt,因为它是一些不可逆加密的快速简便的解决方案,但这个限制不会使它对任何严重的事情有用。
【问题讨论】:
-
unix 系统上的标准 DES
crypt(3)函数(perl 的crypt是一个包装器)只查看前 8 个字节,是的。 (加上盐只有两个字符)。如果你想要更好的安全性,你必须使用别的东西。 -
为 Shawn 的评论提供更多来源:来自
perldoc -f crypt:"创建一个与 C 库中的 crypt(3) 函数完全相同的摘要字符串..."。man 3 crypt: "...通过获取密钥的 前八个字符中每个字符的最低 7 位..."。因此就像他说的:如果您需要更安全的东西,请不要使用crypt。 -
我的悲观主义者会说,不要在现代 Perl 发行版中包含“crypt”,因为人们会阅读“crypt”的手册条目并跳过有关它有多安全的部分。一辆出厂时只有一个刹车片的汽车可能是一个非常糟糕的主意。人类喜欢犯错误,并且因跳过或“错过”他们应该阅读的文件的重要部分而臭名昭著......我的 2 美分。