Python3中SipHash算法简介
💡
原文中文,约3800字,阅读约需9分钟。
📝
内容提要
SipHash是一种密码学意义上的安全哈希算法,Python 3.4开始内置hash()函数采用SipHash24算法,需要16字节key。Python 3.7新增了一种HASH机制,pyc首部出现相应变化。
🎯
关键要点
- SipHash是一种密码学安全哈希算法,要求16字节key。
- SipHash-2-4是推荐的算法,SipHash-4-8适用于更高安全需求,SipHash-1-3效率高但安全性低,不推荐使用。
- Python 3.4开始,内置hash()函数默认使用SipHash24算法,之前使用FNV算法。
- hashlib模块不支持SipHash算法,但有现成的siphash24模块可用。
- Python 3.4的hash()函数默认key由pyurandom()生成,PYTHONHASHSEED环境变量可影响key的生成。
- Python 3.7引入HASH机制,pyc首部结构发生变化,使用HASH时包含SipHash24的hash值。
- 可以通过命令行强制生成基于hash的pyc文件,示例命令提供了具体用法。
- 可以使用Python自带的importlib.util.source_hash计算源文件的hash值。
🏷️
标签
➡️