Base64是如何工作的,以及如何在其中进行编码/解码



我遇到一个问题,要求我将字符串编码为base64格式!我想我是根据我的代码得到的!字符串:";男人;作品和其他短弦作品。但是字符串:";这是一根绳子"不起作用!我也想使用非填充版本。这些问题要求我使用非填充版本。你能解释一下如何编码这个字符串的过程吗;这是一根绳子&"!我必须把字母变成ascii,然后把它们变成二进制,分成6个字节,然后把他们变成十进制,参考ascii图表,然后使用它们。这就是我所知道的全部!但是,请不要给我密码。我想自己尝试编码。但请解释一下这个过程。没有好的视频来解释这个话题!顺便说一句,我正在使用python
谢谢

这是我的代码:

def decimal(binary):
binary = str(binary); power = len(binary)-1
values = []
for x in binary:
if x == "1":
values.append((x, 2**power))
power -= 1

return sum([v for b,v in values if b == "1"])

string = "Man"
byte = ""
for x in string:
byte += bin(ord(x))[0] + bin(ord(x))[2:]

values = []
for x in range(0, len(byte), 6):
values.append(byte[x:x+6])
abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
table = {x:abc[x] for x in range(len(abc))}
print("".join(table[decimal(x)] for x in values))

我正在使用python!

调整后的零件使用内联注释进行解释:

import sys   # merely for manipulation with supplied arguments 
import math 
if len(sys.argv) == 1:
string = "This is a string!!!"
else:
string = ' '.join([sys.argv[i] for i in range(1,len(sys.argv))])
def decimal(binary):
binary = str(binary); power = len(binary)-1
values = []
for x in binary:
if x == "1":
values.append((x, 2**power))
power -= 1
return sum([v for b,v in values if b == "1"])
byte = ""
for x in string.encode('utf-8'):     # ASCII is a proper subset of UTF-8
byte += bin(x)[2:].rjust(8,'0')  # get binary string of length 8
byte = byte.ljust(math.ceil(len(byte)/6)*6,'0') # length must be divisible by 6 
values = []
for x in range(0, len(byte), 6):
values.append(byte[x:x+6])
abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
table = {x:abc[x] for x in range(len(abc))}
print(string)                                 # input
padding = '=' * (((3 - len(string.encode('utf-8'))) % 3) % 3)
ooutput = "".join(table[decimal(x)] for x in values)
print(ooutput)
print(ooutput + padding)                       # for the sake of completeness
import base64   # merely for comparison/reference output
# ↓↓↓ output from base64 module ↓↓↓
print(base64.b64encode(string.encode('utf-8')).decode('utf-8'))  

输出.SO66724448.py ěščř ĚŠČŘ & .SO66724448.py

ěščř ĚŠČŘ
xJvFocSNxZkgxJrFoMSMxZg
xJvFocSNxZkgxJrFoMSMxZg=
xJvFocSNxZkgxJrFoMSMxZg=
This is a string!!!
VGhpcyBpcyBhIHN0cmluZyEhIQ
VGhpcyBpcyBhIHN0cmluZyEhIQ==
VGhpcyBpcyBhIHN0cmluZyEhIQ==

相关内容

最新更新