应是MD5_1,不是md5_2。
MD5_1用于win下验证,MD5_2用于grub验证。
运行GRUB MD5 将明码“999”加密后,产生的MD5值命名为MD5_1,
MD5_1 替换menu.lst中的旧密码(如果为空,就直接写上去 password --md5 xxxxx),然后再将MD5_1存到ini中(还用MD5_1变量表示),方便下次重设密码,核对旧密码 这步对吧? 问题来了...
当用户在WIN下重设密码时,要求输入旧密码,此时输入明码 “999”,如果再利用GRUB MD5把这次999的MD5值当做md5_2,与ini中的MD5_1比较的话,肯定不会通过了。因为ini中记录的只有一个数据,就是前MD5_1的值,也就是menu.lst中用的MD5密码。
解决办法:
用两个MD5值
首先还是调用GRUB MD5,得到md5_1,替换menu.lst,然后,ini中存的,是MD5_2,MD5_2必需是WIN下的MD5转换值(明码同是“999”,与GRUB MD5产生的MD5值不同),下次用户输入旧密码时,还用WIN下MD5转换为md5_3
再用MD5_3与存在ini中的MD5_2比较,这样就准确定的通过了。
焦点问题:
MD5_1是GRUB MD5产生的MD5值
MD5_2,MD5_3是WIN下MD5产生的32或16位MD5值,这个值是不会变的。