Perl 时仅对前 8 个字符进行加密crypt使用函数。有没有办法让它使用更多字符?
举个例子:
$crypted_password = crypt ("PassWord", "SALT");
and
$crypted_password = crypt ("PassWord123", "SALT");
返回完全相同的结果。$crypted_password具有完全相同的值。
很想用crypt因为它是一些不可逆加密的快速而简单的解决方案,但这个限制并不使它对任何严重的事情有用。
引用自文档:
传统上,结果是一个 13 个字节的字符串:盐的前两个字节,后面是集合中的 11 个字节[./0-9A-Za-z]
,并且只有 PLAINTEXT 的前八个字节重要。但替代散列方案(如 MD5)、更高级别的安全方案(如 C2)以及非 Unix 平台上的实现可能会产生不同的字符串。
所以确切的返回值crypt
与系统相关,但它通常使用仅查看密码的前 8 个字节的算法。这两点结合起来使其成为便携式密码加密的糟糕选择。如果您使用的系统具有更强的加密例程,并且不要尝试在不兼容的系统上检查这些密码,那就没问题。但听起来您正在使用带有旧的蹩脚 DES 例程的操作系统。
因此,更好的选择是使用 CPAN 之外的模块,以可预测、更安全的方式进行加密。
一些搜索给出了一些有前途的选项(我没有使用过,也不能推荐其中一个;我只是在metacpan上寻找有前途的关键字):
- 地穴::SaltedHash
- Authen::密码::SaltedDigest
- 地穴::Bcrypt::简单
- 地穴::密码::实用工具
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)