加密

作者: 叶叶阿姨 | 来源:发表于2020-03-11 17:27 被阅读0次

自己研究吧,这是同事发给我的一个方法 我项目需要用 ,我还没时间研究呢😂

from threading import Thread
from time import sleep
import base64
import random


class MySecretKey(object):
    '''
    此类是通过自己生成随机的ascii编码对应关系
    来进行加密和解密
    '''

    def __init__(self):
        self.encrypt_relieve = None
        self.__start_generating_keys()

    def __start_generating_keys(self):
        '''
        开启生成密钥线程
        '''
        th = Thread(target=self.__generate_the_key)
        th.setDaemon = True
        th.start()

    def __generate_the_key(self):
        '''
        生成加密和解密关系字典
        '''
        while True:
            ASC = [i for i in range(48, 58)]
            ASC += [i for i in range(65, 91)]
            ASC += [i for i in range(97, 123)]
            # 特殊符号
            SPECIAL_ASC = [37, 45, 46, 47, 95, 96]
            encrypt = {}
            relieve = {}
            special_relieve = {}
            asc_copy = ASC.copy()
            for i in ASC:
                s = random.choices(asc_copy)
                asc_copy.remove(s[0])
                encrypt[chr(i)] = chr(s[0])
                relieve[chr(s[0])] = chr(i)
            for index, i in enumerate(SPECIAL_ASC):
                special_code = encrypt[list(encrypt.keys())[index]]
                special_code = '{}|{}'.format(special_code, special_code)
                encrypt[chr(i)] = special_code
                special_relieve[special_code] = chr(i)
            self.encrypt_relieve = {
                'encrypt': encrypt, 'relieve': relieve, 'special_relieve': special_relieve}
            sleep(86400)

    def encrypt(self, string):
        '''
        为字符串加密
        '''
        string = ''.join([self.encrypt_relieve['encrypt'][i] for i in string])
        return base64.b64encode(string.encode("utf-8")).decode("utf-8")

    def relieve(self, string):
        '''
        为字符串解密
        '''
        string = base64.b64decode(string.encode("utf-8")).decode("utf-8")
        for code in self.encrypt_relieve['special_relieve']:
            string = string.replace(code, self.encrypt_relieve['special_relieve'][code])
        # 先给特殊符号解密
        new_string = []
        for str_ in string:
            if str_ in self.encrypt_relieve['relieve']:
                str_ = self.encrypt_relieve['relieve'][str_]
            new_string.append(str_)
        return ''.join(new_string)

相关文章

  • Android数据加密(转)

    Android数据加密之Rsa加密 Android数据加密之Aes加密 Android数据加密之Des加密 And...

  • iOS常见信息加密方式总结

    目录 MD5加密HMAC加密base64加密对称加密RSA加密 - 非对称加密 一.MD5加密 MD5加密是最常用...

  • 加密算法的理解

    加密算法按类型分类: 对称加密、非对称加密、散列算法 对称加密: 加密双方都持有加密算法及密钥 非对称加密: 加密...

  • Web开发必须了解的密码学技术

    对称加密与非对称加密 按照密钥的使用形式,加密算法可以分为对称加密和非对称加密(又叫公钥加密)。对称加密在加密和解...

  • iOS 关于加密

    常见的iOS代码加密常用加密方式包括Base64加密、MD5加密、AES加密、RSA加密等。 Base64加密 B...

  • iOS代码加密常用加密方式

    iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密、AES加密、BASE64加密,三大...

  • iOS常用加密方式

    iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密、AES加密、BASE64加密,三大...

  • 4.加密函数编写

    加密算法分类: md5系列加密 ,哈希算法类型 aes加密对称加密,加密/解密是一个密钥 rsa加密 非对称加密,...

  • 加密算法的应用

    加密算法的应用 [TOC] 加密算法 加密算法主要分为对称加密和非对称加密。 对称加密 对称加密采用了对称密码编码...

  • PHP加密算法

    加密技术的重点是加密算法,加密算法主要分为三类: 对称加密 非对称加密 不可逆加密 对称加密算法 加密过程: 将明...

网友评论

      本文标题:加密

      本文链接:https://www.haomeiwen.com/subject/zplhjhtx.html