python实现openssl的EVP_BytesToKey及AES_256_CBC加解密算法

python实现openssl
EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), NULL, pass, passlen, 1, key, iv);
并实现AES 256 CBC加解密.

# encoding:utf-8import base64
from Crypto.Cipher import AES
from Crypto import Random
from hashlib import md5def EVP_BytesToKey(password, salt, key_len, iv_len):"""实现opensslEVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), NULL, pass, passlen, 1, key, iv);"""pass_salt = (password + salt).encode(encoding='utf-8') #传给hashlib.md5前要先转成bytesdtot = md5(pass_salt).digest() # 返回bytes,不要转成十六进制字符串d = [ dtot ]while len(dtot) != (key_len + iv_len):d.append(md5(d[-1] + pass_salt).digest()) # 在一维列表中,下标为-1表示该元素为列表的最后一项dtot += d[-1]return dtot[:key_len], dtot[key_len:key_len+iv_len]def encryt(string, key, iv):"""加密文本:param string: 待加密文本:param key: 密钥:param iv: 偏移量/初始向量:return: 密文"""cipher = AES.new(key, AES.MODE_CBC, iv)x = AES.block_size - (len(string) % AES.block_size)# 长度不整除16时,需要进行补全, 比如少了3个,就填充3个3if x != 0:string = string + chr(x)*xmsg = cipher.encrypt(string.encode('utf-8'))return msgdef decrypt(en_str, key, iv):"""解密文本:param en_str: 待解密文本:param key: 密钥:param iv: 偏移量/初始向量:return: 解密后的文本"""cipher = AES.new(key, AES.MODE_CBC, iv)msg = cipher.decrypt(en_str)padding_len = msg[len(msg)-1]return msg[0:-padding_len]if __name__ == '__main__':with open('res.json', 'r') as fp:content = fp.readlines() #listtext_16str = ''.join(content) # list to strtext_byte = bytes.fromhex(text_16str) #get bytespassword = "%^%xxxxxx"key, iv = EVP_BytesToKey(password, '', 32, 16)#out = encryt('world', key, iv)print(out.hex())out = decrypt(text_byte, key, iv)print(out.decode('utf-8'))

作者:帅得不敢出门 csdn原创谢绝转载收录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/871663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python:绘制一元三次函数的曲线

编写 test_x3_3x.py 如下 # -*- coding: utf-8 -*- """ 绘制函数 y x^33x4 在 -3<x<3 的曲线 """ import numpy as np from matplotlib import pyplot as plt# 用于正常显示中文标题&#xff0c;负号 plt.rcParams[font.sans-serif] […

Games101——光珊化——深度缓存——shading着色 1

深度缓存 如何解决远近的问题&#xff0c;能正确的覆盖 按照画作来说&#xff0c;先画出远处的物体&#xff0c;再画出近处的物体&#xff0c;近处会将其覆盖&#xff0c;这种算法叫做画家算法 但事实上&#xff0c;排序不仅要花更多的时间&#xff0c;而且排序并不容易&…

RIP路由协议概述

RIP【Routing Information Protocol】 RIP是为TCP/IP 环境中开发的第一个路由选择协议标准 RIP是一个【距离——矢量】路由选择协议 当路由器的更新周期为30s到来时&#xff0c;向邻居发送路由表 RIP以跳数作为唯一度量值 RIP工作原理 RIP路由协议向邻居发送整个路由表信息RI…

农场资源的获取

一、网站 资源 二、搜索土壤资源 1、找到类别&#xff0c;点击Browse Texture 2、搜索、选择 3、搜索Brown Mud Dry 4、搜索Brown Mud 三、

[web]-图片上传、文件包含-图片上传

题目内容提示&#xff1a;上传图片试试吧&#xff0c;注意统一时区问题 打开页面如图&#xff0c;源码没有过滤&#xff0c;随便输入&#xff0c;进入上传目录 根据链接可以看到是文件包含&#xff0c;可以利用编码读取源码&#xff0c;这里只列出有用页面的编码&#xff08;?…

【Hive SQL 每日一题】在线峰值人数计算

文章目录 测试数据需求说明需求实现 测试数据 -- 创建 user_activity 表 DROP TABLE IF EXISTS user_activity ; CREATE TABLE user_activity (user_id STRING,activity_start TIMESTAMP,activity_end TIMESTAMP );-- 插入数据 INSERT INTO user_activity VALUES (user1, 2024…

银河麒麟高级服务器操作系统 V10 SP3 2403

系统简介 银河麒麟高级服务器操作系统V10是一款为企业级关键业务设计的新一代自主服务器操作系统&#xff0c;它满足虚拟化、云计算、大数据等时代需求&#xff0c;具备高可靠性、安全性、性能和扩展性。该系统基于CMMI5级标准开发&#xff0c;支持多种国产处理器平台&#xf…

UDP网络通信(发送端+接收端)实例 —— Python

简介 在网络通信编程中&#xff0c;用的最多的就是UDP和TCP通信了&#xff0c;原理这里就不分析了&#xff0c;网上介绍也很多&#xff0c;这里简单列举一下各自的优缺点和使用场景 通信方式优点缺点适用场景UDP及时性好&#xff0c;快速视网络情况&#xff0c;存在丢包 与嵌入…

【JavaEE】网络编程——TCP

&#x1f921;&#x1f921;&#x1f921;个人主页&#x1f921;&#x1f921;&#x1f921; &#x1f921;&#x1f921;&#x1f921;JavaEE专栏&#x1f921;&#x1f921;&#x1f921; 文章目录 前言1.网络编程套接字1.1流式套接字(TCP)1.1.1特点1.1.2编码1.1.2.1ServerSo…

华为USG6000V防火墙v1

目录 一、实验拓扑图 二、要求 三、IP地址规划 四、实验配置 1&#x1f923;防火墙FW1web服务配置 2.网络配置 要求1&#xff1a;DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问 要求2&#xff1a;生产区不…

电影《头脑特工队2》观后感

上周看了电影《头脑特工队2》&#xff0c;整体是非常不错的&#xff0c;一个大脑中&#xff0c;想象的世界。 &#xff08;1&#xff09;人格-多元政体理论 记得前几年是看过《头脑特工队1》的&#xff0c;当时电影是非常出名的&#xff0c;当时有很多研究理论&#xff0c;都…

【练习】分治--归并排序

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;算法(Java)&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 归并排序 代码实现 交易逆序对的总数 题目描述 ​编辑 题解 代码实…

JAVA从入门到精通之入门初阶(二)

1. 自动类型转换 自动类型转换&#xff1a;类型范围小的变量可以赋值给类型范围大的变量 byte->int public class java_7_10 {public static void main(String[] args) {//自动类型转换//类型范围小的变量可以赋值给类型范围大的变量 byte->intbyte a 12;int b a;//自动…

C语言 ——— 输入两个正整数,求出最小公倍数

目录 何为最小公倍数 题目要求 代码实现 方法一&#xff1a;暴力求解法&#xff08;不推荐&#xff09; 方法二&#xff1a;递乘试摸法&#xff08;推荐&#xff09; 何为最小公倍数 最小公倍数是指两个或者多个正整数&#xff08;除了0以外&#xff09;的最小的公共倍数…

【LeetCode】205. 同构字符串

认真地分类讨论&#xff0c;评判复杂度&#xff0c;再决定是否要写代码执行。整套流程干净利落&#xff0c;不存在主观臆想&#xff0c;也不会有对事实结果计算的巨大偏差。 1. 题目 2. 分析 这里提供一版可以解题的思路。 定义两个词典&#xff0c;这两个词典分别记录s字符串…

DHC2-2多时段电子式时间继电器 带底座 约瑟JOSEF

DHC2多时段电子式时间继电器 DHC2-H多时段电子式时间继电器 DHC2-1多时段电子式时间继电器 DHC2-2多时段电子式时间继电器 DHC2-3多时段电子式时间继电器 一、特点 超小型面板尺寸DIN 36X36mm(DHC1)、DIN 48X48m(DHC2) 有延时吸合、延时释放、等周期循环三种规格 可替代…

kibana连接elasticsearch(版本8.11.3)

前言 elasticsearch在8版本之后就出现了很大变化&#xff0c;由于kibana版本需要需elasticsearch进行版本对象&#xff0c;kibana连接方式也出现了很大变化。我在这里记录下自己的踩坑记录。 服务部署 本文中的服务都是在docker环境中部署的。其中elasticsearch版本和kibana版…

5G-A通感融合赋能低空经济-RedCap芯片在无人机中的应用

1. 引言 随着低空经济的迅速崛起&#xff0c;无人机在物流、巡检、农业等多个领域的应用日益广泛。低空飞行器的高效、安全通信成为制约低空经济发展的关键技术瓶颈。5G-A通感一体化技术通过整合通信与感知功能&#xff0c;为低空网络提供了强大的技术支持。本文探讨了5G-A通感…

OpenCV 寻找棋盘格角点及绘制

目录 一、概念 二、代码 2.1实现步骤 2.2完整代码 三、实现效果 一、概念 寻找棋盘格角点&#xff08;Checkerboard Corners&#xff09;是计算机视觉中相机标定&#xff08;Camera Calibration&#xff09;过程的重要步骤。 OpenCV 提供了函数 cv2.findChessboardCorners…

什么? CSS 将支持 if() 函数了?

CSS Working Group 简称 CSSWG, 在近期的会议中决定将 if() 添加到 CSS Values Module Level 5 中。 详情可见&#xff1a;css-meeting-bot 、[css-values] if() function 当我看到这个消息的时候&#xff0c;心中直呼这很逆天了&#xff0c;我们知道像 less 这些 css 这些预…