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原创谢绝转载收录
相关文章:
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(passw…...
基于SpringBoot+VueJS+微信小程序技术的图书森林共享小程序设计与实现
注:每个学校每个老师对论文的格式要求不一样,故本论文只供参考,本论文页数达到60页以上,字数在6000及以上。 基于SpringBootVueJS微信小程序技术的图书森林共享小程序设计与实现 目录 基于SpringBootVueJS微信小程序技术的图书森…...
【css】image 使用 transform:scale 放大后显示不全的问题
css 可以用 transform: scale(1.2) 实现图片放大 1.2 倍显示的功能,在此基础上可以修改 transform-origin 为用户点击的坐标值优化体验。问题在于 origin 位于图片下方时,图片放大后出现滚动条,而滚动条的高度会忽略放大显示的图片的上半部分…...
损失函数简介
损失函数(Loss Function)是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练过程中,通过最小化损失函数来优化模型的参数,以提高模型的预测准确性。 以下是损失函数的主要用途和一些常用的损失函数类型: 损失函数的用途: 评估模型性能:损失函数提供了一个…...
2023睿抗CAIP-编程技能赛-本科组省赛(c++)
RC-u1 亚运奖牌榜 模拟 AC: #include<iostream> using namespace std; struct nation{int j,y,t; }a[2]; int main(){int n;cin>>n;for(int i1;i<n;i){int x,y;cin>>x>>y;if(y1) a[x].j;if(y2) a[x].y;if(y3) a[x].t;}cout<<a[0].j<<&…...
现在国内的ddos攻击趋势怎么样?想了解现在ddos的情况该去哪看?
目前,国内的DDoS攻击趋势显示出以下几个特征: 攻击频次显著增加:根据《快快网络2024年DDoS攻击趋势白皮书》,2023年DDoS攻击活动有显著攀升,总攻击次数达到1246.61万次,比前一年增长了18.1%。 攻击强度和规…...
微服务到底是个什么东东?
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务运行在其独立的进程中,服务和服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的…...
C++笔试强训5
文章目录 一、选择题1-5题6-10题 二、编程题题目一题目二 一、选择题 1-5题 x1,先x,再x–,while判断永远为真,故死循环 选D。 sizeof会计算\0,strlen不包括\0,并且strlen只计算\0之前的。 所以sizeof是10,strken是4 …...
初学51单片机之UART串口通信
CSDN其他博主的博文(自用)嵌入式学习笔记9-51单片机UART串口通信_51uart串口通讯-CSDN博客 CSDN其他博主的博文写的蛮好,如果你想了解51单片机UART串口可以点进去看看: UART全称Universal Asynchronous Receiver/Transmitter即通…...
数据结构——查找(线性表的查找与树表的查找)
目录 1.查找 1.查找的基本概念 1.在哪里找? 2.什么查找? 3.查找成功与否? 4.查找的目的是什么? 5.查找表怎么分类? 6.如何评价查找算法? 7.查找的过程中我们要研究什么? 2.线性表…...
MySQL入门学习-深入索引.组合索引
在 MySQL 中,组合索引(也称为复合索引)是在多个列上创建的索引。以下是关于组合索引的详细信息: 一、组合索引的概念: - 组合索引是基于多个列创建的索引结构。它可以提高在这些列上进行查询的效率。 二、深入理解组…...
RABBITMQ的本地测试证书生成脚本
由于小程序要求必须访问wss的接口,因此需要将测试环境也切换到https,看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子,把要求输入几个来回,得到这样一个脚本: generate_cer…...
记录些Redis题集(4)
Redis 通讯协议(RESP) Redis 通讯协议(Redis Serialization Protocol,RESP)是 Redis 服务端与客户端之间进行通信的协议。它是一种二进制安全的文本协议,设计简洁且易于实现。RESP 主要用于支持客户端和服务器之间的请求响应交互…...
JVM:垃圾回收器
文章目录 一、介绍二、年轻代-Serial垃圾回收器三、老年代-SerialOld垃圾回收器四、年轻代-ParNew垃圾回收器五、老年代-CMS(Concurrent Mark Sweep)垃圾回收器六、年轻代-Parllel Scavenge垃圾回收器七、Parallel Old垃圾回收器八、G1垃圾回收器 一、介…...
Golang | Leetcode Golang题解之第228题汇总区间
题目: 题解: func summaryRanges(nums []int) (ans []string) {for i, n : 0, len(nums); i < n; {left : ifor i; i < n && nums[i-1]1 nums[i]; i {}s : strconv.Itoa(nums[left])if left < i-1 {s "->" strconv.It…...
单目3D和bev综述
文章目录 SOTA2D 检测单目3d检测3d bev cam范式1 Transformer attention is all you need 20172 ViT vision transformer ICLR 2021google3 swin transformer 2021 ICCV bestpaper MS4 DETR 20205 DETR3D 20216 PETR 20227 bevformerLSSbevdetcaddn指标 mAP NDS标注:…...
每日Attention学习11——Lightweight Dilated Bottleneck
模块出处 [TITS 23] [link] [code] Lightweight Real-Time Semantic Segmentation Network With Efficient Transformer and CNN 模块名称 Lightweight Dilated Bottleneck (LDB) 模块作用 改进的编码器块 模块结构 模块代码 import torch import torch.nn as nn import to…...
EM32DX-E4 IO 扩展模块
输入:0x6000-01 // 输入 0-15 6020H——00H IN0 计数【0~7】 ——01H IN0_SetCountMode S32 r/w 初始值默认为 0 设置 IN0 的计数方式:0 电平下 降沿,1 电平上升沿, 2 电平任意沿 ——02H IN0_Set…...
【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序【图文讲解】
欢迎来到CILMY23的博客 🏆本篇主题为:【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux…...
SpringBoot实战:多表联查
1. 保存和更新公寓信息 请求数据的结构 Schema(description "公寓信息") Data public class ApartmentSubmitVo extends ApartmentInfo {Schema(description"公寓配套id")private List<Long> facilityInfoIds;Schema(description"公寓标签i…...
代数拓扑运算流程
文章目录0、背景一、标准计算流程:以单纯同调为例空间剖分,构建单纯复形生成各维度链群定义边界算子定义闭链群与边缘链群计算同调群并解读拓扑信息推导最终拓扑结论二、其他核心概念的典型计算逻辑0、背景 之前为了做一个东西学习TDA&…...
【Gartner认证实践框架】:AI Agent客服上线前必须完成的12项合规性验证清单(含GDPR/等保2.0/金融信创适配)
更多请点击: https://intelliparadigm.com 第一章:AI Agent客服的合规性验证战略定位 在金融、医疗、电信等强监管行业,AI Agent客服系统不仅需满足功能与体验目标,更须将合规性嵌入其设计、开发与运营全生命周期。合规性验证不是…...
Postman登录接口响应为空?HTTP响应体未刷出的三层根因分析
1. 这不是Postman的问题,是接口通信链路上某个环节“失语”了你用Postman调后端登录接口,请求发出去了,状态码也回来了(比如200),但响应体里空空如也——没有JSON数据、没有token字段、甚至Response标签页里…...
体验分钟级接入为网站原型注入AI能力
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 体验分钟级接入为网站原型注入AI能力 在验证一个网站创意原型时,能否快速为其注入智能对话能力,往往决定了…...
从LED到LD:用OptiSystem手把手教你搞定光通信仿真(含参数设置避坑指南)
从LED到LD:用OptiSystem手把手教你搞定光通信仿真(含参数设置避坑指南) 光通信仿真技术正成为工程师和研究人员验证设计、优化系统性能的重要工具。OptiSystem作为业界领先的光通信系统仿真软件,为初学者和专业工程师提供了强大的…...
暗黑2存档修改终极指南:5分钟学会免费d2s文件编辑器
暗黑2存档修改终极指南:5分钟学会免费d2s文件编辑器 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 暗黑破坏神2的d2s存档编辑器是一款专为玩家设计的强大工具,让你能够轻松修改角色属性、管理装备和调整…...
C# WebAssembly构建高性能Web3D引擎实战
1. 这不是“把C#搬到浏览器”,而是重构Web图形开发的底层契约 你有没有试过在浏览器里跑一个带物理模拟、动态光照和实时骨骼动画的3D场景,结果发现JavaScript主线程卡成PPT,WebGL状态管理像在解九连环?我去年接手一个工业数字孪生…...
RV1126B开发板GPIO实战:libgpiod驱动与安全操作指南
1. 项目概述与核心思路 最近在折腾一块基于瑞芯微RV1126B芯片的EASY-EAI开发板,项目里需要用到几个GPIO口来控制外部继电器和读取传感器状态。虽然官方文档和网上资料不少,但真上手时发现,关于如何在这块板子上正确、安全地操作GPIOÿ…...
安卓截屏限制FLAG_SECURE原理与MT管理器绕过实战
1. 截屏限制不是“锁”,而是“提示灯”——先破除一个普遍误解 很多人一看到“App禁止截屏”,第一反应是“这App在防我”,继而联想到银行类App、考试系统、视频平台的“安全策略”,甚至下意识觉得背后有某种“硬隔离”或“内核级防…...
通过Taotoken接入Claude Code解决编程助手Token不足与封号困扰
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken接入Claude Code解决编程助手Token不足与封号困扰 许多开发者将Claude Code作为日常编程的得力助手,用于代…...
