• 技术文章 >Python技术 >Python基础教程

    python中hash算法是否可逆

    小妮浅浅小妮浅浅2021-01-11 15:24:38原创3961

    我们可以在运算中加入数字输出,根据不同的数字和运算规则。不过在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算法是否可逆的过程,根据我们的研究可以发现,这个过程是不可逆的,小伙伴们一定要记住啦。

    专题推荐:python hash算法可逆
    上一篇:python中callable的对象有哪些? 下一篇:getattr在python中获取不存在属性出错

    相关文章推荐

    • Python常用模块之hashlib• python中simhash包怎么用• python3的内置hash函数是什么?• 怎么使用Python中的hashlib模块?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网