一个小巧的、安全的、url友好的、唯一的python字符串id生成器
nanoid的Python项目详细描述
nano id
一个小巧的、安全的、url友好的、唯一的python字符串id生成器。
- safe。它使用加密性强的随机api并测试符号的分布;
- compact。它使用比uuid(a-za-z0-9)更大的字母表。所以身份证的大小从36个符号减少到21个符号。
用法
使用pip安装nano id:
pip install nanoid
正常
主模块使用url友好符号(a-za-z0-9)并返回一个包含21个字符的id(具有类似于uuid v4的冲突概率)。
fromnanoidimportgenerategenerate()# => NDzkGoTCdRcaRyt7GOepg
符号-,.()
未在URL中编码。如果在链接的末尾使用,它们可以被标识为标点符号。
如果要减少id长度(并增加冲突概率),可以将该长度作为参数传递。
fromnanoidimportgenerategenerate(size=10)# => "IRFa-VaY2b"
别忘了在idcollision probability calculator中检查id长度的安全性。
自定义字母表或长度
如果要更改ID的字母表或长度,可以使用内部生成模块。
fromnanoidimportgenerategenerate('1234567890abcdef',10)# => "4f9zd13a42"
也提供不安全的API:
fromnanoidimportnon_secure_generatenon_secure_generate('1234567890abcdef',10)
工具
- ID size calculator选择较小的id大小取决于您的情况。 nanoid字典,带有与nanoid/generate一起使用的流行字母表;
- ^{
} 使用流行的字母。
其他编程语言
更改日志
- 2.0.0版
- 替换默认字母表中的~至
- 添加不安全的快速生成器
- 将默认字符从22个减少到21个
- V0.3.0版
- 修正数组越界错误。
学分
- 安德烈·西特尼克为Nano ID;
- Dair Aidarkhanov对于v2.0的主要贡献,以及添加测试用例。
- 亚历山德朱拉夫列夫为ID collision probability。