大家好,弟弟我第一次写博客,一定有许多不足.请各位大佬多指点,由于俺还是个苦逼高中生,所以私信可能得半个月一回复,见谅哦
环境 kali python2.7
在我们写程序之前,我们首先要知道的是Unix密码是以hash加密的,所以我们这里要用到python的crypt库,我们只需调用crypt.crypt()函数,并把我们需要加密的口令和salt传给他,该函数就会以字符串的形式返回密码的hash
- 我在学这里的时候就一直有个疑问.salt到底是啥呢,salt英文是1盐的意思,我便在网上找了好多资料,最后晓得,salt是盐值.这里就要涉及密码学了.
在我们早期第一代密码,如果用户密码为123,则数据库就会储存123,如果数据库泄露,会十分危险,所以渐渐地便产生了第二代密码,用户输入123,程序会讲123进行md5加密,即转化为202cb962ac59075b964b07152d234b70,并储存到数据库中.在用户登入的时候,会把用户输入的转化为md5,并与数据库中的加密的密码做比较.但是这样也是不安全的,hk’会将各种密码收集到一个强大的字典里面,然后利用脚本将字典里面的密码逐一进行加密并登入,如果登入成功,我们就会破解出用户的密码. 然后,第三代密码产生了,他的数据表里面多了一个字段,即盐值,这数据库中储存的就是md5(明文密码+salt),这样会大大加强了密码的安全性.
- 我们可以在py里输入help(‘crypt’)看一下帮助文档
- 然后让我们尝试一下用HX做盐值将123进行加密