Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用不同的索引表解码类似base64的字符串_Python_Django - Fatal编程技术网

Python 使用不同的索引表解码类似base64的字符串

Python 使用不同的索引表解码类似base64的字符串,python,django,Python,Django,我的问题是,我使用不同的RNET索引表对某些内容进行了编码(类似base64): 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/ 而不是 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 因此,当我使用base64.b64decode()时,它会给我一个错误的结果。 有没有办法在转换过程中设置此表(可能作为参数) 或者我应该“转换”

我的问题是,我使用不同的RNET索引表对某些内容进行了编码(类似base64):

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/
而不是

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
因此,当我使用
base64.b64decode()
时,它会给我一个错误的结果。 有没有办法在转换过程中设置此表(可能作为参数)

或者我应该“转换”错误的base64字符串,我的意思是将0替换为A,将1替换为B,等等。。。然后使用Base64解码?如果是这样的话,什么是最好的快速解决方法

更新1:我使用这个,虽然有效,但看起来有点慢,而且不专业

您可以使用和:


类似的方法应该可以工作(警告:未测试的代码;可能充满错误):


标准的
base64
函数(或它们调用的
binascii
中较低级别的函数)无法使用自定义表。

使用maketrans构建翻译表,然后从第一个字母表翻译到第二个字母表。然后进行base64解码

import string
import base64
def decode(str):
    #make a translation table.
    table = string.maketrans(
      #your alphabet
      string.digits + string.uppercase + string.lowercase + "+/",
      #the original alphabet
      string.uppercase + string.lowercase + string.digits + "+/"
    )
    #translate
    str.translate(s, table)

    #finally decode
    return base64.b64decode(str)

这将处理错误
TypeError:填充不正确

from string import maketrans
import base64
STANDARD_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
CUSTOM_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/'

def correctbase64(input):
    DECODE_TRANS = maketrans(CUSTOM_ALPHABET, STANDARD_ALPHABET)
    newStr =  input.translate(DECODE_TRANS)
    # Add '=' char at the end of the string
    newStr += '='
    return base64.b64decode(newStr)

print custom_base64decode('x/Tcw/g') # hello

您好,欢迎光临。在回答问题时,请对您的代码进行解释。
import string

my_base64chars  = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"
std_base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

s = s.translate(string.maketrans(my_base64chars, std_base64chars))
data = base64.b64decode(s)
import string
import base64
def decode(str):
    #make a translation table.
    table = string.maketrans(
      #your alphabet
      string.digits + string.uppercase + string.lowercase + "+/",
      #the original alphabet
      string.uppercase + string.lowercase + string.digits + "+/"
    )
    #translate
    str.translate(s, table)

    #finally decode
    return base64.b64decode(str)
from string import maketrans
import base64
STANDARD_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
CUSTOM_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/'

def correctbase64(input):
    DECODE_TRANS = maketrans(CUSTOM_ALPHABET, STANDARD_ALPHABET)
    newStr =  input.translate(DECODE_TRANS)
    # Add '=' char at the end of the string
    newStr += '='
    return base64.b64decode(newStr)

print custom_base64decode('x/Tcw/g') # hello
print "Hello Reverse Engineering!\n"

import string
import base64


my_base64chars  = "WXYZlabcd3fghijko12e456789ABCDEFGHIJKL+/MNOPQRSTUVmn0pqrstuvwxyz"
std_base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

s = 'whatever encoded message you have that used my_base64chars index'

c = s.translate(string.maketrans(my_base64chars, std_base64chars))
data = base64.b64decode(c)
print (data)