我们可以在运算中加入数字输出,根据不同的数字和运算规则。不过在python中数字就有了多种的可能性,出现字符串也是有可能的。有时候我们能够根据结果重头计算出输入的数字,对于在hash算法中是否同样适用,这需要今天小伙伴们来一起探索。下面就python中hash算法是否可逆展开讲解。
1.hash概念
hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间。
它其实就是一个算法,最简单的算法就是加减乘除,比方,我设计个数字算法,输入+7=输出,比如我输入1,输出为8;输入2,输出为9。
哈希算法不过是一个更为复杂的运算,它的输入可以是字符串,可以是数据,可以是任何文件,经过哈希运算后,变成一个固定长度的输出,该输出就是哈希值。但是哈希算法有一个很大的特点,就是你不能从结果推算出输入,所以又称为不可逆的算法
2.hash值特点
(1)只要传入的内容一样,得到的hash值必然一样(要用明文传输密码文件的完整性校验)
(2)不能由hash值反解成内容(把密码做成hash值,不应该在网络上传输明文密码)
(3)只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的
>>> hash('我爱你') 3471388576844338423 >>> hash('小猿圈') 5000768010434506639
如上所示,输入“我爱你”三个字,经过哈希运算后,会得到一个随机数列,而且不管你的输入文件多大,最后得到的结果都是这么一个固定长度的数列,即使你输入的是一部电影,输出也是这么大。而且通过数列不能推导出输入。
以上就是小编来领大家探究python中hash算法是否可逆的过程,根据我们的研究可以发现,这个过程是不可逆的,小伙伴们一定要记住啦。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)