python中base64加密和解密

base64加密和解密有点头疼,必须要记录下来,以后忘了也能再来复习下
当然啦,能一直记住是最好的…加油吧,少年(其实已经好老了)

操作环境

win10,python3

base的原理

这个还是别人讲的好,详情请看:Base64编码原理与应用

简单小案例

其实它的原理不是很难,以下是几个小案例

import base64
str='admin'
str=str.encode('utf-8')
#加密
bs64=base64.b64encode(str)
print(bs)
#结果是  b'YWRtaW4='

bs32=base64.b32encode(str)
print(bs32)
#结果是  b'MFSG22LO'

bs16=base64.b16encode(str)
print(bs16)
#结果是  b'61646D696E'

#解密
debs64=base64.b64decode(bs64)
print(debs64)
#结果是  b'admin'

debs32=base64.b32decode(bs32)
print(debs32)
#结果是  b'admin'

debs16=base64.b16decode(bs16)
print(debs16)
#结果是  b'admin'

b64,b32,b16的混合加密和解密

请看代码:

import base64
import random
#flag="flag{**some seclet**}"
#base64加密
def base64_encode(flag):
    #定义编码方式
    basecode={
          '16':lambda x:base64.b16encode(x),
          '32':lambda x:base64.b32encode(x),
          '64':lambda x:base64.b64encode(x)
          }
    #将‘str’类型转换成‘bytes’类型
    pp=flag.encode('utf-8')
    #进行循环编码
    for i in range(10):
        order=random.choice(['16','32','64'])
        pp=basecode[order](pp)
    #将‘bytes’类型转换成‘str’类型
    pp=pp.decode('utf-8')
    #写入文件中
    with open("ciphertext.txt",'w') as fp:
        fp.write(pp)
    return '###加密成功###'

#base64解密
def base64_decode(ciphertext):
    result=''
    with open(ciphertext+".txt",'r') as fp:
        ciphertext=fp.read()
    ciphertext=ciphertext.encode('utf-8')
    #定义解密方式
    basedecode={
          '16':lambda x:base64.b16decode(x),
          '32':lambda x:base64.b32decode(x),
          '64':lambda x:base64.b64decode(x)       
            }
    for j in range(10):
        try:
            ciphertext=basedecode['16'](ciphertext)
        except:
            try:
                ciphertext=basedecode['32'](ciphertext)
            except:
                ciphertext=basedecode['64'](ciphertext)
    result=ciphertext.decode('utf-8')
    print(result)
    return '###解密成功###'

def main():
    functions=input('输入A加密,输入B解密,其它关闭>>>')
    if functions=='A':
        plaintext=input('请输入加密文字明文>>>')
        print(base64_encode(plaintext))
    if functions=='B':
        ciphertext = input('请输入密文文件名>>>')
        print(base64_decode(ciphertext))

if __name__=='__main__':
    main()

结果展示

runfile('C:/Users/lenovo/Documents/我的python笔记/作业4.py', wdir='C:/Users/lenovo/Documents/我的python笔记')

输入A加密,输入B解密,其它关闭>>>>A

请输入加密文字明文>>>abcdefg
###加密成功###

runfile('C:/Users/lenovo/Documents/我的python笔记/作业4.py', wdir='C:/Users/lenovo/Documents/我的python笔记')

输入A加密,输入B解密,其它关闭>>>>B

请输入密文文件名>>>ciphertext
abcdefg
###解密成功###

注意

在解码的时候,由于加密的时候是随机加密的,随意该怎么用正确的解码方式去解码就成了关键。
这里找了"try…except…"的语句去实现,一个一个方式去试,最终试出明文。

你可能感兴趣的:(python)