当使用Perl 加密函数时,只对前8个字符进行加密。有办法让它使用更多的字符吗?
例如:
$crypted_password = crypt ("PassWord", "SALT");和
$crypted_password = crypt ("PassWord123", "SALT");返回完全相同的结果。$crypted_password具有完全相同的值。
希望使用加密,因为它是一些不可逆加密的快速简单解决方案,但这一限制并不能使它对任何严重的问题都有用。
发布于 2019-04-19 08:20:02
引用文献资料
传统上,结果是一个由13个字节组成的字符串:两个salt的第一个字节,然后是set
[./0-9A-Za-z]的11个字节,只有前8个字节的明文很重要。但是,替代散列方案(如MD5)、高级安全方案(如C2)和非Unix平台上的实现可能会产生不同的字符串。
因此,crypt的确切返回值与系统有关,但它经常使用只查看密码的前8个字节的算法。这两个因素结合在一起,使得它成为便携密码加密的糟糕选择。如果您使用的系统具有更强的加密例程,并且不尝试在不兼容的系统上检查这些密码,那么您就没事了。但听起来你在用一个操作系统和旧的糟糕的DES例程。
因此,更好的选择是使用CPAN中的一个模块,该模块以一种可预测、更安全的方式进行加密。
有些搜索提供了一些有希望的查找选项(我没有使用这些选项,并且不能相互推荐;我只是在元数据上寻找有希望的关键字):
https://stackoverflow.com/questions/55758301
复制相似问题