第一次听说这个网站,本人的名字居然也能够被解密,而且还是需要付费取得明文!
大家知道,md5加密是我们常用的加密方式,这个加密方式的好处在于不可逆。而且任何环境下算出的密文应该都是相同的,所以在大家登录的时候,基本上你的密码都是用md5加密的方式存在数据库中。下次你再登录的时候,按照你输入的密码明文再次计算md5密码,再与数据库中存储的密文比较,只要密文相同,那么密码就是正确的。这种存储方式的好处是任何人都不可能看到你的密码明文,因为就算是数据库的维护人员能看到的也只是加密后的密文。只要任何人看不到你的密码明文,并且密文不可逆,那么我们认为密码就是安全的。但是这个网站居然能够按照密文查询明文,而且某些内容还收费。
python中md5加密的实现:
import hashlib # 导入模块
s = input('请输入你的加密内容:') # 输入加密内容
r = s.encode('utf-8) # md5需要使用字节码,把需要加密的内容编码为字节码
obj = hashlib.md5() # 实例化一个md5对象
obj.update(s) # 计算md5密文
re = obj.hexdigest() # 获取加密后的密文
print(re) # 打印密文
就是这个打印出来的密文,在这个网站,可以查询到相应的明文。
这个网站并不是解密md5密码,因为md5密码确实是不可解密的。这个网站只是把许多常用的字符串的md5密码存起来,成为一个庞大的数据库,然后根据密码来查询对应的明文。也算投机的一种吧。生财有道。
得到的建议就是,我们今后的密码尽量要多几位,尽量要有特殊字符,而且,密码还是要经常更换吧。比如,china,马上就能查出来,但是#china*19491001#就查不出来,但是网站的口号是最多五天就能查出来。
以上,切记切记。
哈哈,被吓住了吧?
其实,在obj = hashlib.md5() # 实例化一个md5对象 这个语句中,括号中的内容至关重要。就是我们所谓的加盐。
obj = hashlib.md5(b'the winter is coming.try to save yourself.')
为社么要加盐?因为没法再去收集常用短语的md5,没用。因为这个所谓的盐可以变化,盐变了,同一个明文的md5值肯定变了。这样就基本上杜绝了上述网站的作用。
盐可以是ascii码字符串,长短不限,我想用的是,我认为一段较长的写的很好的英文文章。
盐虽然好,但是咸啊!同一套md5的盐必须是唯一的。所以这里的盐至关重要。要保存好,而且不能变。盐变了,md5的值就变了,那你 以前的md5值就都没用了。