URL的Python密钥生成策略

时间:2013-08-28 16:59:57

标签: python

我有一个我希望在web ui中显示的实体数据库。我想要一个简短的字母数字字符串,我可以从实体的密钥生成。我得出结论,base32是一个很好的解决方案(特别是因为我希望密钥不区分大小写,所以它们可以被口头阅读,等等)。有没有比下面更短或更节省空间的东西?

import base64
def b32urlencode(x):
    return base64.b32encode(x).strip('=').lower()

def b32urldecode(x):
    return base64.b32decode(x + ('=' * (8 - (len(x) % 8))))

1 个答案:

答案 0 :(得分:1)

答案取决于您想要URL的人类可读性和类型。

Base64使用大写和小写字母以及-+_/=。大小写可能会或可能不会由您的Web服务器或应用程序区分,具体取决于您配置它们的方式。如果您希望您的用户能够键入URL(而不仅仅是点击它们),那么大写和小写字母表即使服务器& app容忍他们。

根据以上所述,考虑基数62(a-z,A-Z和0-9)或36(a-z不区分大小写和0-9)。