繁体   English   中英

python压缩函数返回32位字符串?

[英]python compression function which returns 32 digit string?

我正在使用md5函数将字符串散列为32位字符串。

str_to_encode = 'this is a test string which I want to encode'
encoded = hashlib.md5(str_to_encode).hexdigest() 

我希望能够将该字符串(即,在上面的示例中进行encoded )解码回其原始值。 我不认为使用md5可以做到这一点(但是请告诉我),但是有没有我可以使用的compressionn函数,该函数可以在末尾给我一个32位数字的字符串,但是可以恢复?

编辑:编码的字符串是一个url,所以最多只能是几百个字符,尽管在大多数情况下会少很多。

谢谢

您似乎想要两件事不能共存:

  • 任何长度的字符串都将精确转换为32个字节,即使它以4gb开头
  • 编码后的字符串可解码而不会丢失信息

MD5哈希中只有这么多的比特,因此根据信鸽原理 ,不可能将其反转。 如果它是可逆的,则可以使用哈希来无限地压缩信息。 此外,不可逆性是哈希的重点; 它们旨在成为单向功能。 加密算法是可逆的,但是需要更多字节来存储密文,因为可解码性意味着它们必须是无冲突的(两个纯文本不能编码为相同的密文,或者在给定密文的情况下,解码功能不会知道要输出哪个明文)

在我看来,您不是在寻找哈希或加密,而是在寻找压缩。 尝试zlib和base64编码:

s = 'Hello, world'
encoded = zlib.compress(s).encode('base64')

编码数据的长度将随着输入的增加而增加,但是它可能对您有用。

即使将自己限制为URL,也无法将它们可逆地映射为32个字符的字符串,可能的URL太多了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM