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

时间:2017-05-18 05:31:28

标签: python encoding base64 hashlib

我编写了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'=&gt; 51 + char_val =

现在这在C ++中通常很容易做到但是在python中我尝试了ord()chr()但是这个限制为255并且校验和计算通常具有更多的值。所以我不确定如何在python中这样做。

这里有两个问题:

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

  2. 如何根据我上面提到的pesudocode进行自定义编码。

  3. PS:

    我不想使用python的encode() api进行base64编码,因为我需要上面提到的自定义编码,所以请不要建议除非我可以将此逻辑添加到此API中。

    尝试引用this但没有运气

0 个答案:

没有答案