如何让Perl crypt加密超过8个字符?

如何让Perl crypt加密超过8个字符?,perl,crypt,Perl,Crypt,当使用Perlcrypt函数时,只加密前8个字符。有没有办法让它使用更多的字符 例如: $crypted_password = crypt ("PassWord", "SALT"); 及 返回完全相同的结果$crypted_password具有完全相同的值 希望使用crypt,因为它是一些不可逆加密的快速简便的解决方案,但这一限制并不适用于任何严重的情况。引自: 传统上,结果是一个13字节的字符串:salt的前两个字节,然后是set[./0-9A-Za-z]中的11个字节,只有明文的前8个字节

当使用Perlcrypt函数时,只加密前8个字符。有没有办法让它使用更多的字符

例如:

$crypted_password = crypt ("PassWord", "SALT");

返回完全相同的结果$crypted_password具有完全相同的值

希望使用crypt,因为它是一些不可逆加密的快速简便的解决方案,但这一限制并不适用于任何严重的情况。

引自:

传统上,结果是一个13字节的字符串:salt的前两个字节,然后是set
[./0-9A-Za-z]
中的11个字节,只有明文的前8个字节是重要的。但可选的哈希方案(如MD5)、更高级别的安全方案(如C2)和非Unix平台上的实现可能会产生不同的字符串

因此,
crypt
的确切返回值取决于系统,但它通常使用只查看密码前8个字节的算法。这两个因素结合在一起,使得它成为便携式密码加密的一个糟糕的选择。如果您使用的系统具有更强的加密例程,并且不尝试在不兼容的系统上检查这些密码,那么您就没事了。但这听起来像是你在用一个操作系统和旧的烂DES程序

因此,更好的选择是使用CPAN之外的模块,以可预测、更安全的方式进行加密

一些搜索提供了一些有希望的选项(我没有使用过,也不能推荐一个选项;我只是在Metaspan上寻找有希望的关键字):


unix系统上的标准DES
crypt(3)
函数(perl的
crypt
是它的包装器)只查看前8个字节,是的。(加上盐只有两个字符)。如果你想要更好的安全性,你必须使用其他东西。为了给Shawn的评论提供更多的来源:from
perldoc-f crypt
:“创建一个与C库中crypt(3)函数完全相同的摘要字符串…”
man 3 crypt
:“…通过获取密钥前八个字符中每个字符的最低7位…”。因此,正如他所说:如果您需要更安全的东西,不要使用
crypt
。我的悲观主义者会说,不要在现代Perl发行版中包含“crypt”,因为人们会阅读“crypt”的手册条目,并跳过关于它有多安全的部分。一辆出厂时只有一个刹车片的汽车可能是个非常糟糕的主意。人类喜欢犯错误,并因跳过文件中他们本应阅读的部分或“遗漏”重要部分而臭名昭著。。。我的2美分。
$crypted_password = crypt ("PassWord123", "SALT");