2017-07-02 127 views
0

两周以来,我试图和阅读来解决这个问题,但:-(蟒蛇的base64诅咒

我使用python 2.7我什么都试过没有奏效。

我做有,据我了解,从格式的基于64位字符串:AAMkADk0ZjU4ODc1LTY1MzAtNDdhZS04NGU5LTAwYjE2Mzg5NDA1ZABGAAAAAAAZS9Y2rt6uTJgnyUZSiNf0BwC6iam6EuExS4FgbbOF87exAAAAdGVuAAC6iam6EuExS4FgbbOF87exAAAxj5dhAAA=

我想将其转换为十六进制字符串,这将导致00000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E1314B81606DB385F3B7B10000318F97610000

我用下面的代码试了一下:

def itemid_to_entryid(itemid): 
    decoded_val = base64.b64decode(itemid) 
    decoded_val = ''.join(["%02X" % ord(x) for x in decoded_val ]).strip() 
    decoded_val = decoded_val.upper() 
    return decoded_val 


itemid = 'AAMkADk0ZjU4ODc1LTY1MzAtNDdhZS04NGU5LTAwYjE2Mzg5NDA1ZABGAAAAAAAZS9Y2rt6uTJgnyUZSiNf0BwC6iam6EuExS4FgbbOF87exAAAAdGVuAAC6iam6EuExS4FgbbOF87exAAAxj5dhAAA=' 

entryid = itemid_to_entryid(itemid) 
print(entryid) 

它总是返回我下面的:0003240039346635383837352D363533302D343761652D383465392D30306231363338393430356400460000000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E1314B81606DB385F3B7B10000318F97610000

,我真的不明白,我在做什么错了,真的会喜欢理解什么是我做错了任何帮助。

亲切的问候 本

+0

您确定第一个十六进制字符串?我不明白为什么它会以这么多的0开始。 –

+2

您的预期产出只是实际产出的结束。所以,你应该有一些规则来削减你需要的部分。 –

+1

嗯 - 这是给定输入的正确输出...我只是指出'binascii.hexlify(base64.b64decode(itemid))。upper()'更直接 –

回答

0

如果你只是把从投料到产出六角前几个字节,并将其转换:

import base64 
base64.b64encode('\x00\x00\x00\x00\x19\x4B\xD6') 

你:

AAAAABlL1g== 

这不匹配你输入的开始。

0

为的base64转换为十六进制字符串的最佳方式是:

>>> base64.b64decode('woidjw==').encode('hex') 
'c2889d8f' 

您也可以尝试它,就像这样:

>>> base64.b64decode('woidjw==') 

,但我不是输出的粉丝:

'\xc2\x88\x9d\x8f' 

就您原来的要求而言,您的初始数据肯定有问题,因为它没有导致您预期的数据:

>>> base64.b64decode('AAMkADk0ZjU4ODc1LTY1MzAtNDdhZS04NGU5LTAwYjE2Mzg5NDA1ZABGAAAAAAAZS9Y2rt6uTJgnyUZSiNf0BwC6iam6EuExS4FgbbOF87exAAAAdGVuAAC6iam6EuExS4FgbbOF87exAAAxj5dhAAA=').encode('hex') 

'0003240039346635383837352d363533302d343761652d383465392d30306231363338393430356400460000000000194bd636aedeae4c9827c9465288d7f40700ba89a9ba12e1314b81606db385f3b7b100000074656e0000ba89a9ba12e1314b81606db385f3b7b10000318f97610000'