问题:

  如图,用hash() 筛重时竟然出现了重复。

  如下图:  

  hash字符串时,同一窗口的是一致的,不同窗口结果竟然不同。

原因:

  python的字符串hash算法并不是直接遍历字符串每个字符去计算hash,而是会有一个secret prefix和一个secret suffix,可以认为相当于是给字符串加盐后做hash,可以规避一些规律输入的情况。

  这个内置hash函数带有随机magic的功能有一定的安全性上的考虑,可以让攻击者难以预测内置的set或者dict的一些行为,但远不足以承担真正的密码安全级别的hash的作用。传递set和dict到其他进程的时候,只会传递其中的值,而不会传递hash表结构,hash表是传到之后重新建立起来的。

  比如set/dict的hash确实是这玩意实现的,它只保证了在同一个解释器进程里相同字符串hash一致。

解决:

  真需要做可重现可跨进程保持一致性的hash,请用请用hashlib的md5摘要算法。

  基本使用:

import hashlib
data = 'U.S. Army Sponsors First HIV Vaccine Trial to Show Some Effectiveness in Preventing HIV'
hashlib.md5(data.encode(encoding='UTF-8')).hexdigest()

  详见廖老师博客:https://www.liaoxuefeng.com/wiki/1016959663602400/1017686752491744

参考:

https://www.zhihu.com/question/57526436

https://www.liaoxuefeng.com/wiki/1016959663602400/1017686752491744

https://blog.csdn.net/qq_38607035/article/details/82591931

https://www.cnblogs.com/yzhch/p/11855660.html

保持唯一性,请停止使用【python3 内置hash() 函数】的更多相关文章

  1. python3 内置常用函数系列一

    python3 内置了一系列的常用函数, python英文官方文档详细说明:点击查看, 为了方便查看,将内置常用的函数的记录一下来. Python3版本所有的内置函数: 1.abs() print(a ...

  2. python3内置函数大全

    由于面试的时候有时候会问到python的几个基本内置函数,由于记不太清,就比较难受,于是呕心沥血总结了一下python3的基本内置函数 Github源码:        https://github. ...

  3. python3内置函数大全(顺序排列)

    python3内置函数大全 内置函数 (1)abs(),   绝对值或复数的模 1 print(abs(-6))#>>>>6 (2)all() 接受一个迭代器,如果迭代器的所有 ...

  4. Python3内置函数、各数据类型(int/str/list/dict/set/tuple)的内置方法快速一览表

    Python3内置函数 https://www.runoob.com/python3/python3-built-in-functions.html int https://www.runoob.co ...

  5. 浏览器内置Console函数使用详解

    浏览器内置Console函数比较好用:Chrome 和 FireFox(Firebug插件) 利用此功能可以像直接在面板里面运行JS一样(写法不同而已) 一.显示信息的命令 Firebug内置一个co ...

  6. javascript笔记整理(回调、递归、内置顶层函数)

    1.回调函数(通过函数的指针来调用函数,把一个函数的指针做为另一个函数的参数,当调用这个参数的时候,这个函数就叫做回调函数) a.通过指针来调用 function aa(a,b,fun){ retur ...

  7. 【学习】js学习笔记:内置顶层函数eval()的兼容用法

    今天学了一个内置顶层函数,eval();其作用是将字符串转换成javascript命令执行,但必须符合语法,否则会报错. 如果写成window.eval(),则其定义的变量会在全局生效. 但是,在IE ...

  8. 学习angularjs的内置API函数

    angularjs的内置API函数有很多,如isString()判断给定的对象是否为字符串,如果是返回 true,反之返回false:isNumber()判断给定的对象是否为数字,如果是返回 true ...

  9. PHP内置安全函数一览

    内置安全函数 filter_var函数 根据参数中的过滤类型进行过滤,如过滤Email类型的,则符合的字符串返回字符串,不符合的返回False. urldecode函数 写这个函数是特别为了提醒注意, ...

  10. Python descriptor 以及 内置property()函数

    Python Descriptor  1, Python Descriptor是这样一个对象 它按照descriptor协议, 有这样的属性之一 def __get__(self, obj, type ...

随机推荐

  1. jmeter转义

    /reportDetail?md5Key%3De7beff4c73ccd8f1cb01c383eda7fed0%26cid%3D1344500703825739777%26isShow%3Dfalse ...

  2. c++学习 5 预处理

    一 内存分区 内存的分区变量存储,一般可以分为以下五个区,它们分别是: 可读可写     堆区:使用malloc.calloc.realloc.free以及c++里面的new和delete去动态申请. ...

  3. 「AutoCAD2022」

    「AutoCAD2022」https://www.aliyundrive.com/s/rxktpNqtHC5点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速 ...

  4. deepin系统编辑pdf文件的两个简单方法(终端命令行模式)

    DEEPIN深度系统编辑PDF文件有时竟然超级简单好用,比WINDOWS系统需要单独下载一个PDF编辑软件的方法强多了,而且windows系统PDF编辑软件还有版权限制,各种作啊. 下面的两条命令,使 ...

  5. c++标准官网

    gcc官网: https://gcc.gnu.org/ c++参考手册: https://en.cppreference.com/w/cpp c++教程网站: https://www.learncpp ...

  6. 单调栈应用--视野总和 go版本

    1.视野总和描叙:有n个人站队,所有的人全部向右看,个子高的可以看到个子低的发型,给出每个人的身高,问所有人能看到其他人发现总和是多少.输入:4 3 7 1输出:2解释:个子为4的可以看到个子为3的发 ...

  7. HTML和xml

    [html和xml的相同点] html和xml 都是标记语言,都是基于文本编辑和修改的. 都是用于操作系统或数据结构,结构上大致相同. 都可以通过DOM  变成方式来访问. 都可以通过CSS来改变外观 ...

  8. subplots函数使用说明

    1.函数的功能 创建一个画布对象和一组子图对象. 2.函数的声明 fig, axs = subplots(nrows=1, ncols=1, sharex=False, sharey=False, s ...

  9. [转]sublime text 4注册

    1.打开浏览器进入网站https://hexed.it2.打开sublime text4安装目录选择文件sublime_text.exe3.搜索80 78 05 00 0f 94 c1更改为c6 40 ...

  10. el-scrollbar element-ui的滚动条组件(官方文档没有写出来)

    <el-scrollbar></el-scrollbar> //去掉横向滚动条 /deep/.el-scrollbar__wrap { overflow-x: hidden; ...