寒假打算学习一下python的使用。在了解python的基本语法后编写了这么一个简单的脚本,以加深对python的理解。
代码如下
#作者:fffffilm
def base_encode(text):
base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
#先将明文转换成二进制数据
ascii = []
for c in text:
ascii.append(ord(c))
bin = []
for d in ascii:
bin.append(format(d,'08b'))
binary = ''.join(bin)
# 如果二进制ASCII码的长度不是6的倍数,那么在末尾添加足够的0
a = len(binary) % 6
if a:
binary += '0' * (6 - a)
# 每6位一组进行编码
result = ''
for i in range(0, len(binary), 6):
result += base64[int(binary[i:i + 6], 2)]
# 如果输入字符串的长度不是3的倍数,那么在编码结果的末尾添加足够的=字符
b = len(text) % 3
if b:
result += '=' * (3 - b)
print(f"base64密文:{result}")
def base_decode(text):
base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
# 先将密文转换成二进制数据
binary = ''
for c in text:
if c != '=': #这里用一个if语句忽略了密文后面的等号
binary += format(base64.index(c), '06b')
# 如果二进制数据的长度不是8的倍数,那么在末尾删除多余的0
a = len(binary) % 8
if a:
binary = binary[:-a]
# 每8位一组进行解码
result = ''
for i in range(0, len(binary), 8):
result += chr(int(binary[i:i + 8], 2))
print(f"明文:{result}")
if __name__ == "__main__":
ch = None
while True and ch != 3:
print("--------base64加解密--------")
print("base64加密:1")
print("base64解密:2")
print("退出:3")
ch = int(input("请输入选择:"))
if ch == 1:
base_encode(input("请输入明文:"))
elif ch == 2:
base_decode(input("请输入密文:"))
elif ch == 3:
print("感谢使用!")
exit()
else:
print("请输入1或2")