你好我想创建一个哈希密码的脚本,并将它们与/ etc / shadow里面的密码进行比较......但我有一个故障
/ etc / shadow中的密码通常在每次创建新用户时都会获得一个奇怪且唯一的哈希盐,如何能够使用相同的密码生成类似的哈希?
能够拥有相同的密码,我拥有的密码和影子文件中的密码
我尝试过使用perl python mkpasswd而不匹配它 特别是盐从哪里来,我可以改变它吗?
答案 0 :(得分:1)
该算法描述于: * http://en.wikipedia.org/wiki/Crypt_%28C%29 或者当你使用Perl时 * http://perldoc.perl.org/functions/crypt.html
散列中的前几个字符是基于随机字符的“salt”,用于为相同的密码生成不同的散列,以使彩虹表攻击更难。 基于DES的13个字符长度的哈希值恰好有两个字符作为salt。
验证密码使用:if(crypt($ plaintext,$ hash)eq $ hash){print(“OK”); }
答案 1 :(得分:0)
将为每个用户名随机生成salt。随机盐的产生方式尚不清楚。
但是,一旦PC生成盐,用户提供的 PASSWORD 后缀为salt值,并使用合适的散列算法进行多次散列,以生成存储的哈希值的/ etc /阴影。
E.g。在现代Linux / Ubuntu中,SHA-512通常用作散列算法。因此,如果从/ etc / shadow中检索 SALT ,则可以生成散列密码,如下面的命令行代码段所示:
mkpasswd -m sha-512 -S SALT -R 5000 PASSWORD
在上面的代码段中,如果您知道系统为用户生成的随机 SALT (在/ etc / shadow文件中可用)和用户提供的 PASSWORD , mkpasswd可以为你计算存储在/ etc / shadow中的哈希密码。提供SHA-512算法的默认次数为5000. mkpasswd在 whois 包中可用,因此如果您可以运行以下cmd来在Linux中安装该工具:
sudo apt-get install whois