适用于任意大小整数的简单排列。
项目描述
此包实现了一个简单、可配置的64位整数集合排列。
排列基于一个掩码,该掩码将输入的每个位映射到输出中的一个位。掩码通过使用PRNG从随机种子扩展,正如George Marsaglia在他的论文Xorshift RNGs中所描述。因此,排列被认为是不可预测的,前提是种子保持秘密。
用法
通过传递可选的种子创建一个新的Permutation实例。
>>> fromo intperm import Permutation
>>> perm = Permutation(42)
>>> perm.map_to(37)
13750393542137160527L
>>> perm.map_from(13750393542137160527)
37
不提供种子将创建一个随机排列
>>> perm = Permutation()
>>> perm.map_from(perm.map_to(37)) == 37
True
用例
用例可能不同,但我发现的一个有用的例子是根据数据库中存储的ID生成难以猜测的、看起来随机的令牌。ID可以与种子一起使用来解码原始ID,但它们的基数与ID本身相同。如果使用得当,这可以节省您在数据库中对这些令牌进行索引的需要。
另一个很好的例子是将通过某种API提供的私有对象的ID随机化。假设您的网站上的用户账户可以通过路径/user/:id访问,其中:id是用户的ID。有人可以通过枚举URL并跟踪状态代码(例如,403与404)来跟踪您的用户基础的增长。
使用这种简单的排列,可以保持用户ID不可预测,从而使这类攻击实际上变得毫无用处。
另请参阅
项目详情
关闭
intperm-1.1.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8b83697faea4c329ca7c49220f62ce0dd0630b33b510bb4fc9eb66dda54f128e |
|
MD5 | 1271c7aaba133dd2c8a4541fa31eb06b |
|
BLAKE2b-256 | c6265253912adf5aa8bad2a0a23f4552231a19d19ac98b8ad99c88184917ebe6 |