电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 實現aes256加密

瀏覽:6日期:2022-07-04 09:58:29

基礎知識

# 在Linux操作系統下,Python3的默認環境編碼變為了utf-8編碼,所以在編寫代碼的時候,字符串大部分都是以utf-8處理UTF-8:1byte = 8bit1個英文字符 = 1byte1個中文字符 = 3byte

128bit = 16byte = 16個英文字符192bit = 24byte = 24個英文字符256bit = 32byte = 32個英文字符

AES256概念

AES是一種對稱加密算法,對稱指加密和解密使用同一個密鑰; 256指密鑰的長度是256bit,即32個英文字符的長度;密鑰的長度決定了AES加密的輪數

AES256加密參數

密鑰: 一個32byte的字符串, 常被叫為key 明文: 待加密的字符串;字節長度(按byte計算)必須是16的整數倍,因此,明文加密之前需要被填充 模式: 加密模式,常用的有ECB、CBC;具體含義見參考鏈接 iv 偏移量: CBC模式下需要是16byte字符串; ECB下不需要

參考代碼

# -------------------------------# -*- coding: utf-8 -*-# @Author:jianghan# @Time:2020/11/25 14:46# @File: crypt.py# Python版本:3.6.8# -------------------------------'''1、 填充字符串和明文字符串最后一位不能相同2、 字符串編碼默認是utf-8, key和iv默認為英文字符;字符串不支持其他編碼或key/iv不支持為中文字符'''from enum import Enum, uniquefrom Crypto.Cipher import AES@uniqueclass Mode(Enum): CBC = AES.MODE_CBC ECB = AES.MODE_ECB@uniqueclass Padding(Enum): ''' 定義填充的字符串 ''' SPACE = ’ ’ # 空格class AES256Crypto: def __init__(self, key, mode=Mode.ECB, padding=Padding.SPACE, iv=None): ''' :param key: 密鑰, 32byte 長度字符串 :param mode: 加密模式, 來源 class Mode :param iv: 16byte 長度字符串 :param padding: 填充的字符串, 來源class Padding ''' self.padding = self.check_padding(padding) self.key = self.padding_key(key) self.iv = self.padding_iv(iv) if iv else None self.mode = self.check_mode(mode) def check_mode(self, mode): ''' 核對 mode ''' if mode not in Mode.__members__.values(): raise Exception(f’mode {mode} not allowed!’) if mode == Mode.CBC and not self.iv: raise Exception(f’iv is required’) return mode def check_padding(self, padding): ''' 核對 padding ''' if padding not in Padding.__members__.values(): raise Exception(f’mode {padding} not allowed!’) return padding def padding_ret_byte(self, text, _len=16): ''' 填充并轉成 bytes ''' text = text.encode() remainder = len(text) % _len remainder = _len if remainder == 0 else remainder text += (_len - remainder) * self.padding.value.encode() return text def padding_iv(self, iv: str): ''' 補全iv 并轉成 bytes''' if len(iv.encode()) > 16: raise Exception(f’iv {iv} must <= 16bytes’) return self.padding_ret_byte(iv) def padding_key(self, key: str): ''' 補全key 并轉成 bytes ''' if len(key.encode()) > 32: raise Exception(f’key {key} must <= 32bytes’) return self.padding_ret_byte(key, _len=32) def encrypt(self, text, encode=None): ''' 加密 :param text: 待加密字符串 :param encode: 傳入base64里面的方法 :return: 若encode=None則不進行base加密處理,返回bytes類型數據 ''' text = self.padding_ret_byte(text) # 注意:加密中的和解密中的AES.new()不能使用同一個對象,所以在兩處都使用了AES.new() text = AES.new(key=self.key, mode=self.mode.value, iv=self.iv).encrypt(text) if encode: return encode(text).decode() return text def decrypt(self, text, decode=None): ''' 解密 ''' if decode: if type(text) == str: text = text.encode() text = decode(bytes(text)) else: if type(text) != bytes: raise Exception(text) text = AES.new(key=self.key, mode=self.mode.value, iv=self.iv).decrypt(text) text = text.strip(self.padding.value.encode()) return text.decode()

使用范例

import json# 這是一段待加密的字符串text = ’{'upi': '1341343', 'overdue': '2020-11-26 00:00:00'}’key = ’t6LtKa3tD5X6qaJ6qOrAW3XmobFrY6ob’iv = ’NjtP47eSECuOm3s6’aes = AES256Crypto(key, Mode.CBC, Padding.SPACE, iv)text_1 = aes.encrypt(text) # b’xe7x1dxeaexffxc7xc2xd7x8cxf6xe7x82ux7fx168xbcx90xadx1ex85Mxcbxb0xb4Hox1bxe4xecx9dx1dxf93xebx9bxe7xa3xdd$x8cEaxabxf7K~x91Hxc3]5xc4x1axd4w[x83xb2'FCx9fx9d’text_2 = aes.decrypt(text_1) # ’{'upi': '1341343', 'overdue': '2020-11-26 00:00:00'}’import base64text_3 = aes.encrypt(text, encode=base64.b16encode) # ’E71DEA65FFC7C2D78CF6E782757F1638BC90AD1E854DCBB0B4486F1BE4EC9D1DF933EB9BE7A3DD248C4561ABF74B7E9148C35D35C41AD4775B83B22246439F9D’text_4 = aes.decrypt(text_3, decode=base64.b16decode)# ’{'upi': '1341343', 'overdue': '2020-11-26 00:00:00'}’

以上就是python 實現aes256加密的詳細內容,更多關于python aes256加密的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 捷码低代码平台 - 3D数字孪生_大数据可视化开发平台「免费体验」 | 亚克力制品定制,上海嘉定有机玻璃加工制作生产厂家—官网 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 快速卷帘门_硬质快速卷帘门-西朗门业 | 非小号行情 - 专业的区块链、数字藏品行情APP、金色财经官网 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 字典-新华字典-在线字典查字-字典趣 | 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | 球磨机,节能球磨机价格,水泥球磨机厂家,粉煤灰球磨机-吉宏机械制造有限公司 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 辐射色度计-字符亮度测试-反射式膜厚仪-苏州瑞格谱光电科技有限公司 | 洗砂机械-球磨制砂机-洗沙制砂机械设备_青州冠诚重工机械有限公司 | 纸箱网 -纸箱机械|设备|包装纸盒|包装印刷行业门户网站 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | 【ph计】|在线ph计|工业ph计|ph计厂家|ph计价格|酸度计生产厂家_武汉吉尔德科技有限公司 | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 开业庆典_舞龙舞狮_乔迁奠基仪式_开工仪式-神挚龙狮鼓乐文化传媒 | 新疆乌鲁木齐网站建设-乌鲁木齐网站制作设计-新疆远璨网络 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 颗粒机,颗粒机组,木屑颗粒机-济南劲能机械有限公司 | 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 |