首页 > 编程语言 >AES-CBC模式加解密(Python)

AES-CBC模式加解密(Python)

时间:2024-07-09 12:31:33浏览次数:7  
标签:__ CBC AES utf Python self encode pkcs7

import base64

try:
    from Crypto.Cipher import AES
    from Crypto.Util.Padding import pad, unpad
except ImportError:
    print('请安装加解密库pycryptodome')


class AesSample(object):
    def __init__(self):
        self.key = 'MbQeThWmZq4t6w9x'.encode('utf-8')
        self.iv = 'MbQeThWmZq4t6w9x'.encode('utf-8')
        self.mode = AES.MODE_CBC

    def encode(self, data):
        cipher = AES.new(self.key, self.mode, self.iv)
        pad_pkcs7 = pad(data.encode('utf-8'), AES.block_size, style='pkcs7')
        result = base64.encodebytes(cipher.encrypt(pad_pkcs7))
        encrypted_text = str(result, encoding='utf-8').replace('\n', '')
        return encrypted_text

    def decode(self, data):
        cipher = AES.new(self.key, self.mode, self.iv)
        base64_decrypted = base64.decodebytes(data.encode('utf-8'))
        una_pkcs7 = unpad(cipher.decrypt(base64_decrypted), AES.block_size, style='pkcs7')
        decrypted_text = str(una_pkcs7, encoding='utf-8')
        return decrypted_text


if __name__ == '__main__':
    blog = AesSample()
    data1 = '{"operating_subject_id":107}'
    data2 = '8Q9WfnnVlJiO1Ea0RuMKOmyyRNFlDezsdcm6g1DaCqw='
    print('加密结果:', blog.encode(data1))
    print('解密结果:', blog.decode(data2))

标签:__,CBC,AES,utf,Python,self,encode,pkcs7
From: https://www.cnblogs.com/you-fish/p/18291539

相关文章

  • Python是如何进行内存管理的以及引用计数和垃圾回收机制的定义
    Python中的内存管理是一个自动且高效的过程,主要依赖于两种机制:引用计数(ReferenceCounting)和垃圾回收(GarbageCollection,GC)。这些机制共同工作以确保不再被使用的内存能够被及时释放,从而避免内存泄漏。引用计数引用计数是Python中最主要的内存管理机制。Python中的每个对象都......
  • Python基础
    Smiling&Weeping----也许世界上有五千朵和你一模一样的花    但只有你是我独一无二的玫瑰   使用Vscode进行Pythondebug的流程  1.打开文件夹  在VSCode中打开直接打......
  • Python酷库之旅-第三方库Pandas(011)
    目录一、用法精讲25、pandas.HDFStore.get函数25-1、语法25-2、参数25-3、功能25-4、返回值25-5、说明25-6、用法25-6-1、数据准备25-6-2、代码示例25-6-3、结果输出26、pandas.HDFStore.select函数26-1、语法26-2、参数26-3、功能26-4、返回值26-5、说明26-......
  • 深度学习入门:基于Python的理论与实现 (斋藤康毅)
    PDF:访问python33深度学习基础:介绍深度学习的基本概念、原理和发展历史。Python编程:提供使用Python进行深度学习实现的基础知识,包括必要的编程技能和工具。神经网络:解释神经网络的基本结构和工作原理,以及如何构建和训练简单的神经网络。深度学习框架:探讨流行的深度学习......
  • 基于SpringBoot的酒店订房系统+82159(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、A
    springboot酒店订房系统摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,酒店订房系统当然也不能排除在外。酒店订房系统是以实际运用为开发背景,运用软件工程开发方法,采用springboot技术构建的一个管理系统......
  • python模块导入错误:ImportError: cannot import name
    解决ImportError:cannotimportname'auto_run'from'utils.searxng_utils'问题问题描述在运行某个Python脚本时,遇到了以下错误:ImportError:cannotimportname'auto_run'from'utils.searxng_utils'这个错误表明Python无法从utils.searxng_utils模块中......
  • Python的utils库详解
    Python的utils库并不是一个官方标准库,而是指一系列提供实用功能的工具库或模块,这些库或模块通常包含了一系列帮助开发人员加速日常工作、提高开发效率的工具函数或类。由于Python社区的开放性和活跃性,存在多个不同的utils库,每个库都有其特定的功能和用途。不过,尽管没有一个统一......
  • 关于python Miniconda的脚本安装及 环境控制
    1.下载Miniconda安装脚本使用curl或wget命令下载Miniconda安装脚本。使用curl:curl-Ohttps://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh 使用wget:wgethttps://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.......
  • QT设置回调函数给python调用——参数法
    这种方法将回调函数作为python函数参数对象的方法来使用。Qt已经添加了Python库,并且能够正常调用Python的API,可以成功调用Python的代码块,这部分可以参考我另外一篇博客:QT中调用python中的函数-Henkk-博客园(cnblogs.com)1.QT相关函数定义1.1创建回调函数例如下面两个函......
  • 基于Python与GDAL的栅格转矢量(去边框)、添加缓冲区、简化容差
    文章目录概要整体内容简化矢量数据并应用容差小结概要在地理信息系统(GIS)中,栅格数据与矢量数据之间的转换是一项基本且重要的操作。栅格数据通常用于表示连续变化的数据(如温度、海拔等),而矢量数据则更适合表示离散的地理要素(如点、线、面)。此外,为矢量要素添加缓冲区是......