RE常见编码和加密

base64

主要思想就是 3*8-->4*6

python 复制代码
table="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
def encrypt(inputstr):
    # 输入字符是8的倍数,--> 3*8>4*6
    # {:0>8} 左边补0
    ascii=['{:0>8}'.format(str(bin(ord(i))).replace('0b','')) for i in inputstr]
    encrystr=''
    equalnum=0 #need add '='
    while ascii:
        # every three into a team
        subascii=ascii[:3]
        # short need add
        while len(subascii)<3:
            equalnum+=1
            subascii+=['0'*8]
        # apply substr to gather subascii
        substr=''.join(subascii)
        # do devied
        encrystrlist=[substr[x:x+6] for x in [0,6,12,18]]
        # six site change into dec,so not need 位数补齐
        encrystrlist=[int(x,2) for x in encrystrlist]
        if equalnum:
            encrystrlist=encrystrlist[0:4-equalnum]
        # 字符对应表映射
        encrystr+=''.join(table[x] for x in encrystrlist)
        # 每次取三个列表元素,对应while循环条件
        ascii=ascii[3:]
    encrystr+='='*equalnum
    return encrystr

def decrypt(inputstr):
    # six site a team
    ascii=['{0:0>6}'.format(str(bin(table.index(i))).replace('0b','')) for i in inputstr if i!='=']
    decrystr=''
    equalnum=inputstr.count('=')
    while ascii:
        # four site a team
        subascii=ascii[:4]
        substr=''.join(subascii)
        if len(substr)%8!=0:
            substr=substr[0:-1*equalnum*2]
        decrystrlist=[substr[x:x+8] for x in [0,8,16]]
        decrystrlist=[int(x,2)for x in decrystrlist if x]
        decrystr+=''.join([chr(x) for x in decrystrlist])
        ascii=ascii[4:]
    return decrystr
if __name__=="__main__":
    print(encrypt('a'))
    print(decrypt('YQ=='))

还有一个C版本的

Base64 加密解密的 C 语言实现和 python 实现_c语言 解析python base64-CSDN博客

相关推荐
一只小菜鸡..1 小时前
南京大学 操作系统 (JYY) 学习笔记:进程、系统调用与状态机管理
笔记·学习
是三一seven2 小时前
Sql注入基础
数据库·安全·网络安全
天国梦5 小时前
2026英语教学系统选型实战:AI如何让备课效率提升42%?天学网技术落地全解析
人工智能·学习
维克兜率天5 小时前
【维克】大数定律与中心极限定理:为什么长期均值终将回归?
经验分享·学习·金融·概率论
中微极客5 小时前
降维算法75倍加速:从PCA到稀疏字典学习的工程实践
人工智能·学习·算法
吃好睡好便好7 小时前
MATLAB中图像的读取、写入和显示
开发语言·图像处理·学习·计算机视觉·matlab
~kiss~7 小时前
大模型中的强化学习算法和对齐算法的区别
学习
MartinYeung57 小时前
[论文学习]InjecAgent:工具集成大语言模型智能体的间接提示注入基准测试
网络·学习·语言模型
智慧地球(AI·Earth)8 小时前
MAX-API v1.0.5-preview.2:安全加固、计费一致性与限流隔离
安全·max api·差额计费修复
sean9088 小时前
Vim 学习 - 快速删除/修改
学习·vim