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

时间:2019-04-19 07:40:27

标签: perl crypt

使用Perl crypt 功能时,仅对前8个字符进行加密。有办法让它使用更多字符吗?

例如:

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

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

返回完全相同的结果。 $ crypted_pa​​ssword 的值完全相同。

很乐意使用 crypt ,因为它是对某些不可逆加密的一种快速简便的解决方案,但是该限制并不能使它用于任何严重的事情。

1 个答案:

答案 0 :(得分:1)

引用the documentation

  

通常,结果是一个13字节的字符串:salt的前两个字节,后跟[./0-9A-Za-z]集的11个字节,仅PLAINTEXT的前八个字节很重要。但是替代的哈希方案(如MD5),更高级别的安全方案(如C2)以及在非Unix平台上的实现可能会产生不同的字符串。

因此crypt的确切返回值取决于系统,但是它通常使用仅查看密码的前8个字节的算法。这两件事加在一起使它成为便携式密码加密的不佳选择。如果您使用的系统具有更强的加密例程,并且不尝试在不兼容的系统上检查这些密码,则可以。但这听起来像是您使用的操作系统带有旧的DES例程。

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

某些搜索提供了一些有希望的外观选择(我没有使用过,不能推荐彼此;我只是在metacpan上寻找有希望的关键字):