最近闲来无聊,尝试用python写了一下base64的解密与加密原理
def jiami(a):
base64_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/']
return base64_list[num4]
def jiemi(b):
base64_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/']
c = 0
for i in range(64):
if base64_list[i] == b:
c = i
break
return c
while True:
choice = input('请问您是要加密(1)还是解密(2)?:')
string = input('请输入您要操作的字符串:')
if choice == '1':
string1 = ''
string2 = ''
for i in string:
num = ord(i)
er = bin(num)[2:]
num1 = len(er)
num2 = 8 - num1
for j in range(num2):
er = '0' + er
string1 += er
num3 = len(string1)
if num3%6 != 0:
num4 = 6 - num3%6
for i in range(num4):
string1 = string1 + '0'
a = 0
for j in string1:
string2 += j
a += 1
if a%6 == 0:
num4 = int(string2[:6],2)
print(jiami(num4),end='')
string2 = string2[6:]
if len(string)%3 != 0:
for i in range(3 - len(string)%3):
print('=',end='')
elif choice == '2':
string1 = ''
string2 = ''
for i in string:
if i == '=':
break
num = jiemi(i)
er = bin(num)[2:]
num1 = len(er)
num2 = 6 - num1
for j in range(num2):
er = '0' + er
string1 += er
num3 = len(string1)
if num3%8 != 0:
num4 = 8 - num3%8
for i in range(num4):
string1 = string1 + '0'
a = 0
for j in string1:
string2 += j
a += 1
if a%8 == 0:
num4 = int(string2[:8],2)
print(chr(num4),end='')
string2 = string2[8:]
print('\n')
print('-------------------------------------------------')
an = input('请问您要继续转换吗(输入n退出,否则继续):')
if an == 'n':
break
唔,代码肯定是可以再优化的,只是我能力不足,各位师傅可以参考参考,当然了还可以直接使用python的内置方法,社区里都可以找到,这里就不再赘述了