zoukankan      html  css  js  c++  java
  • python3 aes加解密

    # encoding: utf-8
    import xlrd
    import os
    import yaml
    import logging.config
    from Crypto.Cipher import AES
    import base64
    
    def setup_logging(default_path = "log_config.yaml",default_level = logging.INFO,env_key = "LOG_CFG"):
        path = default_path
        value = os.getenv(env_key,None)
        if value:
            path = value
        if os.path.exists(path):
            with open(path,"r") as f:
                config = yaml.load(f)
                logging.config.dictConfig(config)
        else:
            logging.basicConfig(level = default_level)
    
    def encrypt(text, key, iv):
        if type(text) is str:
            text = text.encode(encoding='utf-8', errors='strict')
        if type(key) is str:
            key = key.encode(encoding='utf-8', errors='strict')
        if type(iv) is str:
            iv = iv.encode(encoding='utf-8', errors='strict')
        if len(text) % 16:
            text += (chr(16 - len(text) % 16) * (16 - len(text) % 16)).encode(encoding='utf-8', errors='strict')
        text = base64.b64encode(s=AES.new(key, mode=AES.MODE_CBC, IV=iv).encrypt(text),
                                altchars=None).decode(encoding='utf-8', errors='strict')
        return text
    
    def decrypt(cipher_text, key, iv):
        if type(key) is str:
            key = key.encode(encoding='utf-8', errors='strict')
        if type(iv) is str:
            iv = iv.encode(encoding='utf-8', errors='strict')
        if type(cipher_text) is str:
            cipher_text_bytes = base64.b64decode(cipher_text)
        #todo aes解密
        plaintext_bytes = AES.new(key, mode=AES.MODE_CBC, IV=iv).decrypt(cipher_text_bytes)
        #todo 去填充字节
        for i in range(1,17):
            plaintext_bytes = plaintext_bytes.rstrip(chr(i).encode(encoding='utf-8', errors='strict'))
        plaintext = plaintext_bytes.decode(encoding='utf-8', errors='strict')
        return plaintext
    
    if __name__ == '__main__':
        setup_logging()
        """
        book = xlrd.open_workbook('testdata_1.xlsx')
        sheet = book.sheet_by_index(0)  # 根据顺序获取sheet
        print(sheet.ncols)  # 获取excel里面有多少列
        print(sheet.nrows)  # 获取excel里面有多少行
        for i in range(1, sheet.nrows):
            user_info_dict = {}
            if len(sheet.cell(i, 0).value) > 0:
                user_info_dict['name'] = sheet.cell(i, 0).value.strip()
                user_info_dict['idcard'] = sheet.cell(i, 1).value.strip()
                print(sheet.cell(i, 2).value)
                print(sheet.cell(i, 2).ctype)
                user_info_dict['phone'] = str(int(sheet.cell(i, 2).value)).strip()
                print(user_info_dict)
        print(chr(1))
        """
    
        for i in range(1,20):
            s = 'a'* i
            logging.info(('s', s))
            mw = encrypt(s,'123456789012345620123456', '1234567890123456')
            logging.info(('e',mw))
            logging.info(('d',decrypt(mw,'123456789012345620123456', '1234567890123456')))
            logging.info('====================')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'a')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 72 - ('e', 'iEqJ43muMK0K98y26ZG55A==')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 73 - ('d', 'a')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'aa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 72 - ('e', 'tXevZVzEJABPQtw9DECgYQ==')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 73 - ('d', 'aa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'aaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 72 - ('e', '/I7IfuZDcDaKXZtifDcs5w==')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 73 - ('d', 'aaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'aaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 72 - ('e', 'Alk1FhjAr4JUbb+m+u+F2Q==')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 73 - ('d', 'aaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'aaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 72 - ('e', 'udmP3Tf0/u4RYBMKJPJ0/A==')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 73 - ('d', 'aaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'aaaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 72 - ('e', 'PdwwbsFTMHDNUsJMZAeM+A==')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 73 - ('d', 'aaaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'aaaaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 72 - ('e', 'X5sjPFnk30mCHVDVacXjyA==')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 73 - ('d', 'aaaaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 72 - ('e', 'n67DCEhkX6Dr0soQVz63zg==')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 72 - ('e', 'jmv9NFzbmiWcpd+gOMXFLg==')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaa')
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,153 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'N1eeE8sahDhoNxGKhHINcg==')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'X5ldc5VOXhEY9mpySsAf8A==')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'S2z8gQ/EzVhbhcthz1ILbQ==')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'FMNUDHyJxF13BvqT3Iru6g==')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'hB6U1AchwgQuYOlwMcmegA==')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'N7wIcnTQH5jlRyG6YqAcqA==')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'LWlQdN/UTy+opSdVdh/hyw==')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'LWlQdN/UTy+opSdVdh/hyw4zq/Ogqcr8FyuqK/GUqAY=')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'LWlQdN/UTy+opSdVdh/hy1q9voPP4CUk7ON/d/piMPU=')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 70 - ('s', 'aaaaaaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 72 - ('e', 'LWlQdN/UTy+opSdVdh/hy736EUVnpijwTpyfWWP+i0k=')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 73 - ('d', 'aaaaaaaaaaaaaaaaaaa')
    2018-10-31 08:59:50,169 - root - INFO - MainThread - 74 - ====================
    
    Process finished with exit code 0
  • 相关阅读:
    Python inspect
    常见漏洞解析
    Linux安装常见问题
    Linux下查看系统信息
    (转)微信网页扫码登录的实现
    设计模式--六大原则
    Git 操作常用命令
    Scrapy工作原理
    PHP多维数组转一维
    归并排序(Python实现)
  • 原文地址:https://www.cnblogs.com/xiaodebing/p/9881006.html
Copyright © 2011-2022 走看看