我有一个我希望在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))))
答案 0 :(得分:1)
答案取决于您想要URL的人类可读性和类型。
Base64使用大写和小写字母以及-
,+
,_
,/
和=
。大小写可能会或可能不会由您的Web服务器或应用程序区分,具体取决于您配置它们的方式。如果您希望您的用户能够键入URL(而不仅仅是点击它们),那么大写和小写字母表即使服务器& app容忍他们。
根据以上所述,考虑基数62(a-z,A-Z和0-9)或36(a-z不区分大小写和0-9)。