URL安全的UUID,字符数最少

时间:2012-07-11 11:42:04

标签: language-agnostic uuid

理想情况下,我想要example.com/resources/äFg4вNгё5可见字符的最小数量,更不用说在通过HTTP传输它们之前必须进行百分比编码。

你能告诉一个方案,它可以有效地将128b UUID编码为最少数量的可见字符,而结果却没有破坏URL的字符吗?

2 个答案:

答案 0 :(得分:17)

Base-64对此有好处。

{098ef7bc-a96c-43a9-927a-912fc7471ba2}

可以编码为

vPeOCWypqUOSepEvx0cbog

最后的常用等号可能会被删除,因为它们总是使字符串长度为4的倍数。而不是+/,您可以使用一些安全字符。您可以选择以下两项:- . _ ~

更多信息:

答案 1 :(得分:4)

我使用url-safe base64字符串。以下是执行此 *

的一些Python代码

最后一行删除了基本64位编码喜欢放在最后的'='或'=='符号,它们使得将字符放入URL更加困难,并且只需要对信息进行解码,这样做不需要在这里完成。

import base64
import uuid

# get a UUID - URL safe, Base64
def get_a_Uuid():
    r_uuid = base64.urlsafe_b64encode(uuid.uuid4().bytes)
    return r_uuid.replace('=', '')

* <子> 此 遵循标准:base64.urlsafe_b64encode遵循RFC 3548和4648,请参阅https://docs.python.org/2/library/base64.html。允许从已知长度的base64编码数据中剥离==,请参阅RFC 4648 §3.2。 UUID / GUID在RFC 4122中指定; §4.1 Format表示“UUID格式为16个八位字节”。 base64 - 功能编码这16个八位字节。