超级好用的C++实用库之MD5信息摘要算法
💡 需要该C++实用库源码的大佬们,可搜索微信公众号“希望睿智”。添加关注后,输入消息“超级好用的C++实用库”,即可获得源码的下载链接。
概述
MD5信息摘要算法是一种广泛使用的密码散列函数,由Ronald L. Rivest在1991年设计并公布。它是MD4算法的增强版,用于确保信息的安全性和完整性。MD5接受任意长度的消息作为输入,并输出一个固定长度的128位(16字节)散列值,通常以32位的十六进制数形式表示,每个字节两位。
CHP_Md5
为了方便使用MD5信息摘要算法,我们封装了CHP_Md5类。MD5算法通过一系列复杂的非线性操作,包括:位运算、逻辑函数和加法运算,将输入信息分为512位的块进行处理。整个过程分为四个步骤,每一步使用不同的非线性函数和常数,经过多次迭代完成。
CHP_Md5类的头文件,可参考下面的示例代码。
#pragma onceclass CHP_Md5
{
public:CHP_Md5();~CHP_Md5();void Init();int Update(unsigned char *pucInput, unsigned int uiInputLen);int Final(unsigned char pucOutput[16]);static int CalcDigest(unsigned char *pucInput, unsigned int uiInputLen, unsigned char pucOutput[16]);private:static void MD5Transform(unsigned int puiState[4], unsigned char pucBlock[64]);static void Encode(unsigned char *pucOutput, unsigned int *puiInput, unsigned int uiInputLen);static void Decode(unsigned int *puiOutput, unsigned char *pucInput, unsigned int uiInputLen);static void MD5Memcpy(unsigned char *pucDest, unsigned char *pucSrc, unsigned int uiLen);static void MD5Memset(unsigned char *pucData, int nData, unsigned int uiLen);private:typedef struct _TMd5ContextInfo{unsigned int state[4];unsigned int count[2];unsigned char buffer[64];}TMd5ContextInfo;TMd5ContextInfo m_ctx;
};
CHP_Md5类有4个公共成员函数,包括3个实例函数和1个静态函数,下面逐一进行介绍。
Init:初始化函数。
Update:更新输入数据。参数pucInput为输入数据buffer,参数uiInputLen为输入数据的长度。返回值为0表示成功,其他为错误码。
Final:完成摘要计算。参数pucOutput为计算出的摘要值,用于传出。返回值为0表示成功,其他为错误码。
CalcDigest:计算输入数据的摘要值,是对上面三个接口的封装,方便应用层调用,此时不需要实例化CHP_Md5的对象。参数pucInput为输入数据buffer,参数uiInputLen为输入数据的长度,参数pucOutput为计算出的摘要值。返回值为0表示成功,其他为错误码。
总结
自1996年起,MD5的安全性开始受到挑战,出现了多种攻击方法,包括:碰撞攻击和预映射攻击。这也表明,MD5不再适用于安全性要求高的场合。对于新系统和应用,目前建议使用更安全的算法,比如:SHA-256或SHA-3。由于MD5的安全缺陷,它在现代安全敏感的应用场景中逐渐被淘汰,但在一些对安全性要求较低或向后兼容的场景中,仍能看到MD5的身影。
相关文章:
超级好用的C++实用库之MD5信息摘要算法
💡 需要该C实用库源码的大佬们,可搜索微信公众号“希望睿智”。添加关注后,输入消息“超级好用的C实用库”,即可获得源码的下载链接。 概述 MD5信息摘要算法是一种广泛使用的密码散列函数,由Ronald L. Rivest在1991年设…...
ssm132医院住院综合服务管理系统设计与开发+vue
医院住院综合服务管理系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对医院住院信息管理混乱&…...
在Linux上安装并启动Redis
目录 安装gcc环境 上传redis文件 启动redis-server 后台启动redis-server 查看redis启动状态 参考文章:Linux 安装 Redis 及踩坑 - 敲代码的阿磊 - 博客园 (cnblogs.com) 准备:打开VMware Workstation,创建一个虚拟机,进入管…...
vue3.0+antdv的admin管理系统vue-admin-beautiful推荐
前言 几年前,笔者自学了vue这一优秀的前端框架,但苦于没项目练手,无意间发现了vue-admin-beautiful这一优秀的前端集成框架。当时就使用它做了一很有意思的小项目---终端监控云平台,实现了前端和后台的整体功能。整体方案介绍参见…...
C# WinForm —— 20 RichTextBox 介绍
1. 简介 富文本框,拥有TextBox的所有功能,,但还有更多高级的文本输入和编辑功能,比如设置字体颜色、样式、段落、图片、超链接等 2. 常用属性 属性解释(Name)控件ID,在代码里引用的时候会用到,一般以 rtxt 开头Acce…...
springmvc数据绑定
数据绑定 数据绑定流程 springmvc框架将ServletRequest对象及目标方法的入参实例传递给WebDataBinderFactory实例,以创建DataBinder实例对象 DataBinder调用装配在springmvc上下文中的ConversionService组件进行数据类型转换、数据格式化工作。将Servlet中的请求信息…...
Milvus的存储/计算分离
前言 根据数据面与控制面相隔离的原则,从可扩展性和灾难恢复来看,Milvus由4个相互独立的层组成 访问层 由一系列无状态的代理组成,访问层是系统和用户之间的第一层,它主要是验证客户端请求和规整返回的结果 代理是无状态的&am…...
SHAP值是个什么值?
SHAP 值是个什么值? 起初,我们知道SHAP值代表了变量对于结局变量的贡献程度,然而,在做了一些SHAP分析之后,感觉有一些SHAP值还是有一些难以理解的地方,比如,为什么有负值?SHAP值为0…...
Django接口卡死一直没有返回响应
当Django接口出现卡死且没有返回响应时,可能是由于多种原因导致的。以下是一些排查和解决问题的步骤: 查看日志: 首先检查Django的日志,看看是否有任何错误或异常被记录。这可以帮助你确定问题的根源。 检查数据库连接࿱…...
7-139 有趣的括号
括号()的组合千奇百怪,Drizzle 想知道各种组合的括号可以是否合法 合法要求:每个同类型的左括号必须有与之对应的同类的右括号以正确的顺序闭合 要求: 输入:输入一个括号字符串 输出:输出是否合法,是则True,否则False 示例: 输入: (){}[]输出: True范围: 对于 1…...
解决qt5.12.12编译源码没有libqxcb的问题
最近要研究一下qt源码,因为设计到要修改源码,所以需要编译源码并替换修改的库文件运行验证。 我这里使用的是qt5.12.12版本,去官网上下载对应版本的安装包,安装时勾选上源码即可。 后面编译完发现,plugins/platforms/目录下没有生成库文件libqxcb.so,造成了一点麻烦。 设置 e…...
在kubernetes中配置Ingress
目录 1. 安装Nginx Ingress Controller2. 准备TLS证书3. 编写Ingress资源定义4. 应用Ingress配置5. 验证配置 1. 安装Nginx Ingress Controller 首先,确保你的Kubernetes集群已经准备好。你可以使用Helm或者直接通过yaml文件来安装Nginx Ingress Controller。这里给…...
HarmonyOS ArkTS 实现类似Android中RadioButton得效果
在Android中如实现下图可以用radioGroup和RadioButton实现,但在ArkTs中radio不能实现自定义样式,所以用Tabs来实现这种效果,效果图如下: 一、效果图 二、实现横向布局的三个TabContent,代码如下 State currentIndex: n…...
AWS简介
AWS AWS,全称为Amazon Web Services,是亚马逊公司旗下的云计算服务平台,自2006年起向全球用户提供广泛而深入的云计算服务。AWS是全球最全面、应用最广泛的云平台之一,它从全球的数据中心提供超过200项功能齐全的服务,…...
STM32的FLASH学习笔记
不同型号的 STM32,其 FLASH 容量也有所不同,最小的只有 16K 字节,最大的则达到了1024K 字节。大容量产品的闪存模块组织如图所示: STM32 的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等 3 部分组成。 ①主…...
人工智能-深度学习-PyTorch数据读取实战【含详细源代码+数据集+图示分析】
(以RMB人民币二分类为例) 介绍 在深度学习任务中,数据读取是至关重要的一环。它影响着模型的训练速度和训练效果。本文将以PyTorch框架为例,介绍如何读取RMB人民币二分类数据集,并进行详细的代码解析和图示分析。 原理详解 PyTorch提供了多种数据读取方法,包括: 手动…...
Qt常量字符串中文乱码QTextCodec转换无效
windows中文系统,local编码是GBK18030 常量字符串包含中文,通过QString::fromLocal8bit和QTextCodec::codecForName("GB18030")->toUnicode均不奏效 原因:源码编码为UTF-8,但VS编译器(MSVC)…...
(五)Spring教程——Spring IoC容器(上)
在Spring框架中,Bean的实例化和组装都是IoC容器配置元数据完成的。Spring框架提供的容器主要是基于BeanFactory和ApplicationContext两个接口,一种是实现BeanFactory接口的简单容器,另一种是实现ApplicationContext接口的高级容器。 BeanFact…...
TiDB学习1:TiDB体系架构概览
目录 1. TiDB体系结构 2. TiDBsever 3. TiKV 4. PD(Placement Driver) 5. TiFlash 1. TiDB体系结构 水平扩容或者缩容金融级高可用实时 HTAP云原生的分布式数据库兼容MySQ 5.7 协议 2. TiDBsever 处理客户端的连接SQL语句的解析和编译关系型数据与 kv 的转化(insert语句)S…...
Prometheus 保留或删除标签 labeldrop、labelkeep
保留或删除标签 有的时候我们也有保留或删除一些标签的需求,比如有的目标在时间序列上提供了许多额外的标签,这些标签用途不大,这个时候我们就可以使用 labelkeep 和 labeldrop 这两个操作,使用这两个操作可以有选择地保留或删除一…...
当AI开始检测自身缺陷:测试工具失控的风险与应对
在软件测试领域,AI正从辅助工具向核心角色转变。2026年的测试场景中,AI不仅能自动生成测试用例、自我修复失效选择器,还能以人眼精度完成视觉回归检测。这些能力让测试工程师从繁琐的重复劳动中解放出来,将精力聚焦于业务逻辑与边…...
如何在Windows上快速配置词法语法分析器:WinFlexBison完整实战指南
如何在Windows上快速配置词法语法分析器:WinFlexBison完整实战指南 【免费下载链接】winflexbison Main winflexbision repository 项目地址: https://gitcode.com/gh_mirrors/wi/winflexbison 你是否在Windows平台上开发编译器、解释器或配置文件解析器时&a…...
避坑指南:STM32驱动DHT11温湿度传感器,为什么你的读数总是不准?
STM32驱动DHT11温湿度传感器的五大实战避坑指南 1. 单总线时序的精确控制 DHT11作为典型的单总线设备,对时序控制的要求极为严苛。许多开发者遇到的第一个坑就是未能准确实现协议要求的时序。根据实测数据,DHT11的启动信号需要主机拉低至少18msÿ…...
AI专著撰写秘籍!4款工具助力一键生成20万字专著,高效又省心!
创新是学术专著最核心的部分,也是写作过程中最大的挑战。一部优秀的专著,不仅要避免简单的研究成果重复堆砌,更需要在整个作品中提出独到的观点、理论架构或研究手法。在众多学术文献中,发现那些尚未被开发的研究空白相当不易——…...
[2026实战] 工程图纸气泡图 (balloon drawing) 标注规范与数字化检验计划生成…
在 2026 年的精密制造与质量管理领域,高效处理气泡图 (balloon drawing) 已成为提升 FAI(首件检查)和 PPAP(生产件批准程序)效率的核心课题。面对日益复杂的工程图纸,传统的机械式手动标注已难以满足智能制…...
前端新玩具:用几行JavaScript在网页上控制你的游戏手柄和绘图板
前端新玩具:用几行JavaScript在网页上控制你的游戏手柄和绘图板 当游戏手柄的震动反馈通过网页触发,当数位板的压感数据实时映射到Canvas画布——这些曾需要原生应用才能实现的交互,如今在浏览器中只需几行JavaScript代码。Web HID API的诞生…...
避开这5个坑,你的癫痫脑电AI模型准确率能翻倍:从数据标注到特征工程实战
避开这5个坑,你的癫痫脑电AI模型准确率能翻倍:从数据标注到特征工程实战 在医疗AI领域,癫痫脑电信号分析一直是个充满挑战的课题。许多开发者满怀信心地构建模型,却在验证阶段遭遇性能瓶颈——准确率停滞不前,误报率居…...
如何免费下载百度文库文档:三步搞定PDF保存的终极指南
如何免费下载百度文库文档:三步搞定PDF保存的终极指南 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 你是否经常在百度文库找到完美的学习资料或工作报告,却因为需要下载券…...
从零到一:在个人PC上部署并集成ChatGLM-6B到Unity应用
1. 环境准备与模型下载 在个人PC上部署ChatGLM-6B需要先搞定三件事:硬件检查、软件环境搭建和模型文件获取。我的老款游戏本(i7-9750H RTX2060 6GB显存)实测可以流畅运行,关键在于正确的量化配置。 硬件检查要点: 显存…...
将HermesAgent项目接入Taotoken的详细配置步骤与注意事项
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 将HermesAgent项目接入Taotoken的详细配置步骤与注意事项 本文旨在为开发者提供一份清晰的指南,帮助你将HermesAgent项…...
