2025年uuencode实现(加密解密)

uuencode实现(加密解密)Uuencode 将输入文字以每三个字节为单位进行编码 如此重复进行 如果最后剩下的文字少于三个字节 不够的部份用零补齐 这三个字节共有 24 个 Bit 以 6 bit 为单位分为 4 个群组 每个群组以十进制来表示所出现的数值只会落在 0 到 63 之间 将每个数加上 32 所产生的结果刚好落在 ASCII 字符集中可打印字符

大家好,我是讯享网,很高兴认识大家。

Uuencode将输入文字以每三个字节为单位进行编码,如此重复进行。如果最后剩下的文字少于三个字节,不够的部份用零补齐

这三个字节共有24个Bit,以6-bit为单位分为4个群组,每个群组以十进制来表示所出现的数值只会落在0到63之间。将每个数加上32,所产生的结果刚好落在ASCII字符集中可打印字符(32-空白...95-底线)的范围之中,且Uuencode编码每60个将输出为独立的一行(相当于45个输入字节)

每行的开头会加上长度字符,除了最后一行之外,长度字符都应该是“M”这个ASCII字符(77=32+45),最后一行的长度字符为32+剩下的字节数目这个ASCII字符(重点:就算一行也要加长度)

def uuencode():     str=input("请输入需要编码的字符:")     data=""     for c in str:         a=format(ord(c), 'b')         for i in range(8-len(a)):             a="0"+a         data=data+a     if(len(data)%24!=0):         lenght=len(data)         for i in range(24-lenght%24):             data=data+"0"     print(chr(32+int(len(data)/8)),end="")     for i in range(0,len(data),24):         data_1=data[i:i+24]         for j in range(0,len(data_1),6):             if int(data_1[j:j+6],2)==0:                 print(chr(int(0x60)))             else:                 print(chr(int(data_1[j:j+6],2)+32),end="") def uudecode():     str = input("请输入需要解码的字符:")     data=""     for c in str[1:]://不需要第一个字符         a = format(ord(c)-32, 'b')//acsii码先减去32再转换为二进制         for i in range(6 - len(a))://如果二进制不到六位,用“0”在字符串前面补齐             a = "0" + a         data = data+a     for i in range(0, len(data), 24):         data_1 = data[i:i + 24]//每24位截取一次         for j in range(0, len(data_1), 8)://二十四个中每八个截取             print(chr(int(data_1[j:j + 8], 2)), end="") if __name__=="__main__":     uudecode()     print()     uuencode()

讯享网

此代码仅供一行之内的加密解密(即六十个字符解码,和四十五的字符编码)


讯享网

运行实例:

小讯
上一篇 2025-02-28 19:36
下一篇 2025-03-06 07:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/11069.html