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值。
➡️

继续阅读