[英]Python - How to returns a string in which each digit is replaced by the corresponding number of exclamation marks (!)
[英]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,所以最多只能是几百个字符,尽管在大多数情况下会少很多。
谢谢
您似乎想要两件事不能共存:
MD5哈希中只有这么多的比特,因此根据信鸽原理 ,不可能将其反转。 如果它是可逆的,则可以使用哈希来无限地压缩信息。 此外,不可逆性是哈希的重点; 它们旨在成为单向功能。 加密算法是可逆的,但是需要更多字节来存储密文,因为可解码性意味着它们必须是无冲突的(两个纯文本不能编码为相同的密文,或者在给定密文的情况下,解码功能不会知道要输出哪个明文)
在我看来,您不是在寻找哈希或加密,而是在寻找压缩。 尝试zlib
和base64编码:
s = 'Hello, world'
encoded = zlib.compress(s).encode('base64')
编码数据的长度将随着输入的增加而增加,但是它可能对您有用。
即使将自己限制为URL,也无法将它们可逆地映射为32个字符的字符串,可能的URL太多了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.