使用Perl crypt 功能时,仅对前8个字符进行加密。有办法让它使用更多字符吗?
例如:
$crypted_password = crypt ("PassWord", "SALT");
和
$crypted_password = crypt ("PassWord123", "SALT");
返回完全相同的结果。 $ crypted_password 的值完全相同。
很乐意使用 crypt ,因为它是对某些不可逆加密的一种快速简便的解决方案,但是该限制并不能使它用于任何严重的事情。
答案 0 :(得分:1)
通常,结果是一个13字节的字符串:salt的前两个字节,后跟
[./0-9A-Za-z]
集的11个字节,仅PLAINTEXT的前八个字节很重要。但是替代的哈希方案(如MD5),更高级别的安全方案(如C2)以及在非Unix平台上的实现可能会产生不同的字符串。
因此crypt
的确切返回值取决于系统,但是它通常使用仅查看密码的前8个字节的算法。这两件事加在一起使它成为便携式密码加密的不佳选择。如果您使用的系统具有更强的加密例程,并且不尝试在不兼容的系统上检查这些密码,则可以。但这听起来像是您使用的操作系统带有旧的DES例程。
因此,更好的选择是使用CPAN之外的模块,该模块以可预测的,更安全的方式进行加密。
某些搜索提供了一些有希望的外观选择(我没有使用过,不能推荐彼此;我只是在metacpan上寻找有希望的关键字):