Python:通过输入参数生成一定长度的base64字符串

时间:2018-04-06 23:15:22

标签: python hash base64

我输入字符串参数 id 可能是任何长度(通常它在4-10个符号范围内,并且有几百万个)。我的要求是基于该参数生成字符串(对于相同的 id ,它应该是相同的字符串),其中base64解码表示具有正好32字节。 这是:

str = generate(id)
len(base64.b64decode(str)) == 32

def generate(id) = ???

所以我猜生成必须返回64encoded值。

有什么想法吗?我使用python 2.7。

由于

2 个答案:

答案 0 :(得分:1)

如果没有2 id可以从generate生成相同的结果,则这是不可能的。 (如果该约束不成立,则无论id是什么,都可以返回相同的字符串。)

有多少不同的字符串具有正好32个字符的base64解码是有限制的。您没有限制此函数应该用于id的不同值的数量。因此,id必须至少有2 generate将返回相同的值。

答案 1 :(得分:0)

这样做:

import hashlib, base64

def generate(id):
    m = hashlib.sha256()
    m.update(id)
    hashed = m.digest()

    return base64.b64encode(hashed)