如何在python中对md5/sha1摘要进行自定义编码?

2024-09-30 16:36:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了python代码,其中需要文件的md5/sha1摘要以供进一步使用。你知道吗

import hashlib
md5_file = hashlib.md5(my_file_path).digest()

它将生成这种类型的摘要。你知道吗

'si\x155u\xba\xd2\xf9N^\xabq\xc87\xffh'

这是16位md5的十六进制表示。 接下来我做的是把它转换成列表

md5hexstring = list(md5_file)
o/p = ['s', 'i', '\x15', '5', 'u', '\xba', '\xd2', '\xf9', 'N', '^', '\xab', 'q', '\xc8', '7', '\xff', 'h']

现在我想用这样的逻辑来编码。你知道吗

pseudo code of logic I want to use:

char_val >> 4 then
if char_val < 6 : new_val = char_val + '3' else : new_val = 'x' + char_val - 7
encoded_val =  encoded_val + new_val
again char_val & 0x0f then
if char_val < 6 : new_val = char_val + '3' else : new_val = 'x' + char_val - 7
encoded_val =  encoded_val + new_val

添加字符3的ascii值,例如“3”=>;51+字符值=

这在C++中通常是容易做到的,但是在Python中我尝试了{{CD1>}和^ {< CD2>},但是这个具有255的限制和校验和计算通常会比这更有价值。所以我不知道如何在python中做到这一点。你知道吗

这里有两个问题:

  1. 我将每个字符的摘要转换为列表的处理方式是否正确?(如果不是,那么什么是正确的方法)

  2. 如何根据前面提到的伪码进行自定义编码。

附言:

我不想将python的encode()api用于base64编码,因为我需要如上所述的自定义编码,所以除非我可以将this逻辑添加到此api中,否则请不要建议这样做。你知道吗

尝试引用this,但没有成功


Tags: 编码列表newifval逻辑字符md5