• python 数字字典加密非汉字


    简单版

    特点是,无需借助任何第三方库。

    # 加密和解密文件
    # 字段内容以 ; 分割
    class Crypt():
        def __init__(self,line):
            self.line = line
            self.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']
            self.de_dict = {}
        def getNumThrowChar(self,cha):
            i = 0
            for t in self.list:
                if(t.__eq__(cha)):
                    return i
                i = i+1
            return 0
        def encryptChr(self,t):
            if(t.isdigit()):
                digt = int(t)
                return self.list[digt]
            elif(t.islower()):
                rs_num = self.getNumThrowChar(t.upper())+26
                return str(rs_num)
            elif(t.isupper()):
                rs_num = self.getNumThrowChar(t.upper())
                return rs_num
            elif(t.isspace()):  # 空白字符
                 return '@_@'
            else:
                return t
        def encrypt(self):
            rs = ''
            # 加密,list对应字母,小写字母在list上增加26
            for t in self.line:
                rt = self.encryptChr(t)
                rs = rs.__add__(rt)
                rs = rs.__add__(";=;")
            return rs
    
    
        def decryptChr(self,t):
            if(t.isdigit()):
                t = int(t)
                if(t>26):
                    return self.list[t-26].lower()
                else:
                    return self.list[t]
            elif(t.isupper()):
                rs_num = self.getNumThrowChar(t.upper())
                return str(rs_num)
            else:
                return t
    
    
        def decrypt(self):
            rs = ''
            temp = self.line.replace('@_@'," ").split(";=;")
            for t in temp:
                ts = self.decryptChr(t)
                rs = rs.__add__(ts)
            return rs
    
    if __name__=="__main__":
        aa = Crypt("经;=;@;=;27;=;30;=;41;=;*;=;B;=;@_@;=;A;=;B;=;C;=;B;=;曾;=;的;=;梦;=;")
        print(aa.decrypt())
    View Code

    使用算法参考:https://www.jianshu.com/p/4ba20afacce2

    # 加密和解密文件# 字段内容以 ; 分割class Crypt():    def __init__(self,line):        self.line = line        self.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']        self.de_dict = {}    def getNumThrowChar(self,cha):        i = 0        for t in self.list:            if(t.__eq__(cha)):                return i            i = i+1        return 0    def encryptChr(self,t):        if(t.isdigit()):            digt = int(t)            return self.list[digt]        elif(t.islower()):            rs_num = self.getNumThrowChar(t.upper())+26            return str(rs_num)        elif(t.isupper()):            rs_num = self.getNumThrowChar(t.upper())            return rs_num        elif(t.isspace()):  # 空白字符             return '@_@'        else:            return t    def encrypt(self):        rs = ''        # 加密,list对应字母,小写字母在list上增加26        for t in self.line:            rt = self.encryptChr(t)            rs = rs.__add__(rt)            rs = rs.__add__(";=;")        return rs

        def decryptChr(self,t):        if(t.isdigit()):            t = int(t)            if(t>26):                return self.list[t-26].lower()            else:                return self.list[t]        elif(t.isupper()):            rs_num = self.getNumThrowChar(t.upper())            return str(rs_num)        else:            return t

        def decrypt(self):        rs = ''        temp = self.line.replace('@_@'," ").split(";=;")        for t in temp:            ts = self.decryptChr(t)            rs = rs.__add__(ts)        return rs
    if __name__=="__main__":    aa = Crypt("经;=;@;=;27;=;30;=;41;=;*;=;B;=;@_@;=;A;=;B;=;C;=;B;=;曾;=;的;=;梦;=;")    print(aa.decrypt())

  • 相关阅读:
    [异常解决] JLINK 与STM32的SWD连接接线方式
    2、利用蓝牙定位及姿态识别实现一个智能篮球场套件(二)——CC2540/CC2541基于广播的RSSI获得
    [Intel Edison开发板] 05、Edison开发基于MRAA实现IO控制,特别是UART通信
    1、利用蓝牙定位及姿态识别实现一个智能篮球场套件(一)——用重写CC2541透传模块做成智能手环
    [Intel Edison开发板] 04、Edison开发基于nodejs和redis的服务器搭建
    [Intel Edison开发板] 03、Edison开发IDE入门及跑官方提供的DEMO
    [Intel Edison开发板] 02、Edison开发板入门
    [Intel Edison开发板] 01、Edison开发板性能简述
    [每日电路图] 10、两种MOS管的典型开关电路
    [每日电路图] 9、介绍一种低价简单的4.2V锂电池充电及稳压(LDO)电路——RT9193,SD8017
  • 原文地址:https://www.cnblogs.com/wind-man/p/12980846.html
Copyright © 2020-2023  润新知