摘要:哈希算法,它是单向的,不可逆的,有点特别,数据进去之后,就变样了回不来了,所有人都觉得它特别神秘,它能把任何东西变成一串固定长度的密码,这是干啥用的呢,主要是看数据有没有被人动过手脚。
Python 哈希解密,确保数据安全,保障文件无忧
哈希算法,它是单向的,不可逆的,有点特别,数据进去之后,就变样了回不来了,所有人都觉得它特别神秘,它能把任何东西变成一串固定长度的密码,这是干啥用的呢,主要是看数据有没有被人动过手脚。
hashlib 库,Python 自带的,不用装,挺方便的,里面啥都有,MD5,SHA1,乱七八糟一堆,你听都没听过,常用的还是 SHA256,听说更安全一些。
想用它,得先建个对象,就像盖房子先打地基,用 hashlib.new, 告诉它你要用哪个算法,名字写对,比如 SHA256,或者直接用 SHA256,更简单粗暴,然后就可以往里面塞数据了。
数据更新,hash_object.update,这个方法很重要,你得一直往里面加东西,每次加一点,它就帮你算一下,就像滚雪球,越滚越大,但是雪球的大小是固定的,到最后出来一个固定长度的值。
结果,有两个选择,hash_object.digest,出来的是字节,反正我看不懂,hash_object.hexdigest,出来的是十六进制,能看懂一点,至少知道是啥东西,都是哈希值,一个意思。
还有个复制的功能,hash_object.copy,这个有点像克隆,你之前算了一些东西,不想重算,那就复制一份,继续算后面的,省时间。
文件,怎么保证文件没被人改过,就是用哈希,打开文件,一点一点读,读一点,update 一点,读完之后,hexdigest 一下,拿到哈希值,把这个值记下来,下次再读,如果哈希值一样,就说明文件没动过,不一样,肯定被人改了。
打开文件,分块读取,循环 update,读完获取哈希值,对比,这几步,写代码的时候注意点,别出错,不然就白忙活了,如果改一下文件内容,哈希值立,马就不一样了,不信你试试。
加盐,听说往密码里加点盐,更安全,盐是啥,就是一串随机字符串,加在原始数据里,然后再哈希,这样别人就算知道你的哈希算法,也猜不到你的密码,因为他不知道你的盐是什么,所有人都觉得,这个方法不错,确实挺安全的。
密码存储,记住,千万别存明文密码,太危险了,存加盐哈希之后的密码,就算数据库被人盗了,别人也拿不到你的真实密码,只能看到一堆乱码,可是在那种环境下,谁能受得了,信息泄露了可不是小事。
算法,选哪个算法好,看你的需求,安全要求高,就选 SHA256 以上的,安全要求不高,MD5 也行,但 MD5 听说已经不太安全了,容易被破解,大家都在想,这到底是怎么一回事,SHA256 相对来说,更安全一些。
大文件,如果你要处理一个很大的文件,一次性读到内存里,可能会炸,电脑直接卡死,用生成器,一点一点读,读一点,处理一点,不占内存,速度还快,所有人都觉得,这个方法好。
泰山之管穿石,单极之绠断干,这句话是班固说的,在《汉书·枚乘传》里,水不是石头的钻头,绳索也不是木头的锯子,但时间长了,就能把石头穿透,把木头锯断,大家都在想,这到底是什么意思。
啥意思,就是坚持,坚持很重要,编程也一样,不是一天两天就能学会的,需要不断学习,不断练习,才能成为大神,很多人看完这个故事,都会去想,自己是不是也应该坚持下去。
哈希算法,听起来高大上,其实也不难,掌握了基本概念,会用 hashlib 库,就能解决很多问题,比如文件校验,密码存储等等,但是要真正精通,还需要不断学习和实践,所有人都觉得,编程这条路不好走。
记得加盐,记得选安全的算法,记得处理大文件,也记得坚持学习,这样才能写出更安全、更高效的代码,编程,它就是一个需要坚持的过程,没有捷径可走。
加油,骚年,编程的世界等着你。
来源:电子小课堂一点号
