1582_C代码实现的快速、可移植MD5信息摘要算法

news2025/1/15 23:23:58

全部学习汇总: GreyZhang/c_units: A small piece of code which can be reuse anywhere, I call it a unit. This is a collection of unit in C language! Ok, yes, it would be my toolbox. (github.com)

工作之中,同事用到了MD5信息摘要算法,但是一直没搞定。几个人找我咨询,我也没接触过。简单拿测试的例子试了一下linux shell中带有的md5sum,发现计算的结果并不一致,看起来这个并不是我之前接触的MD5算法。但是,受益于互联网的便捷,我简单搜索很快就锁定了一个似乎可以尝试的目标。这是一个开源的MD5算法实现,正好是面向我需要处理的问题。相关的链接:A portable, fast, and free implementation of the MD5 Message-Digest Algorithm (RFC 1321) [Openwall Community Wiki]

比较有意思的是,这个网页的实现居然是一个WiKi,而我最近刚好帮公司搭建了一个WiKi系统,突然间觉得又多了积分亲切。

对代码进行了一个测试,想看看输入的格式应该按照什么来处理。我分别按照字符串、十六进制单数值、十六进制的无符号8bit、无符号的表征的十六进制字符数值等几种方式作为输入来进行测试。以下是我所进行的测试:

测试比较顺利,很快就撞出来了跟我预期一致的结果。这个算法之前给我的测试的例子,输入的其实是每2个字符组合为一个十六进制的数值。先看一下运行的结果,之后再看看每一个接口的使用。

以上是我测试出来的结果。

接下来看看这个模块的相关接口,其实还是很简单的。

首先是一个初始化,用到接口MD5_Init(),这个初始化会初始化掉计算所用到的一个结构体。我这里定义为了一个全局变量,其实这个也不见得必须用全局变量。

接下来是实际的MD5信息摘要计算,计算完成后提取结果,计算的结果会存储到第一个指针参数所指向的位置。MD5_Update()是用于MD5计算的主要的接口函数,而MD5_Final()接口则是把已经存储到了前面定义的结构体中的计算结果组合输出出来。

接口非常清晰简单,最后的结果是一个十六进制的存储结果,这个其实也是我测试出来的。按照字符串、字符以及正确的结果等几种可能的方式都做了测试,最终找到的一个正确的解释方式。

以后,不知道这个小工具是否还会不断从工具箱里面拿出来使用。但是感觉上这个有点之前收集到的CRC的感觉,值得收纳。

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

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

相关文章

面试加分题--socket是否是并发安全的?

今天和大家聊一个有点儿东西的面试题:socket是否是并发安全的? 为了帮助大家理解,我们先假设一个场景。 就拿游戏架构来说,我们想象中的游戏架构是下面这样的。 想象中的游戏架构 也就是用户客户端直接连接游戏核心逻辑服务器&…

解决⾃动驾驶中计算机视觉的⽬标检测问题

来源:投稿 作者:cairuyi01 编辑:学姐 最近读了《Object detection with location-aware deformable convolution and backward attention filtering》,这是⼀篇2019年刊登在CVPR上的CV论⽂。与解决普适性的CV任务不同&#xff0c…

SpringMVC如何优化Ajax技术

SpringMVC如何优化Ajax技术? AJAX Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 Ajax 不是一种新的编程语言,而是一种用于创…

EIoU和Focal-EIoU Loss

1、论文 论文题目:《Focal and Efficient IOU Loss for Accurate Bounding Box Regression》 2、引言 CIoU Loss虽然考虑了边界框回归的重叠面积、中心点距离、高宽比。但是其公式中的v反映的是高宽的差异,而不是高宽分别与其置信度的真实差异。因此&…

蚂蚁智能内容合规审核产品探秘

随着互联网服务的不断深化,产品营销的形式从传统文本、长图文,增加到短视频、直播等新媒介形态,展现形式愈加丰富的同时,也为营销宣传内容合规审核带来了诸多难题。如何解决与日俱增的审核量与合规审核人员有限之间的矛盾&#xf…

【阶段三】Python机器学习31篇:机器学习项目实战:基于皮尔逊相关系数搭建电影智能推荐系统

本篇的思维导图: 项目背景 在当今这个大数据时代,智能推荐系统的应用越来越广泛,网上购物、在线观影、新闻推送的背后都有智能推荐系统算法的支持。人们经常会在视频平台上观看电影,有时明确想要观看某部电影,有时则仅仅是随机搜寻。如果视频平台能利用基于物品的…

DDOS攻击

把我掘金的文章同步一份过来 最近网上爆火的一款游戏 Goose Goose Duck (鹅鸭杀) 游戏官方在近日发布了一则公告,宣布由于服务器屡次遭受黑客攻击,该游戏服务器将暂时关服三天进行维护 遭到了DDOS攻击,背后原因,我们不做讨论&…

代码随想录算法训练营第十七天二叉树 java : . 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和

文章目录前言Leetcode 110.平衡二叉树题目讲解思路Leetcode 257. 二叉树的所有路径题目讲解这道题涉及到了回溯Leetcode 404.左叶子之和题目讲解总结前言 选择一个简单的理念,矢志不渝地去执行(Take one simple idea and take it seriously 递归三部曲…

【Nginx】Nginx搭建高可用集群

1. KeepalivedNginx 高可用集群(主从模式)2. 配置高可用的准备工作3. 在两台服务器上安装keepalived4. 完成高可用配置(主从配置)5. 最终测试 1. KeepalivedNginx 高可用集群(主从模式) 2. 配置高可用的准备工作 需要两台服务器…

Revit如何将明细表导出为DWG格式【批量导出图纸】

一、Revit中怎样将明细表导出到DWG文件中 有时需要将Revit中生成的各种明细表导入到CAD中使用,但是在明细表视图中并没有导出成DWG格式的选项如图1所示,应该如何操作才能导出成CAD可识别文件呢? 方法一:将明细表通过导出为报表选项…

Java 核心技术卷 I 基础知识笔记(一)

Java 的基本程序设计结构 2.1 一个简单的 Java 应用程序 一个最简单的 Java 应用程序,它只发送一条消息到控制台窗口中:/*** This is the first sample program in Core Java Chapter 3* version 1.01 1997-03-22* author Gary Cornell*/ public class…

分享111个Java源码,总有一款适合您

Java源码 分享111个Java源码,总有一款适合您 源码下载链接:https://pan.baidu.com/s/1fycjYHA7y6r-IH8H7v5XKA?pwdag8l 提取码:ag8l 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...&#xff…

网络编程学习记录

服务端首先是确定协议版本。首先定义一个结构体 WSADATA wsadata; 这个结构体是啥呢? 是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。大家晓得了吧。 让我们看看这个结构体。 typedef struct WSAData {WORD wVersion; …

c++ socket之io复用模型 epoll进阶

服务器开发系列 文章目录服务器开发系列前言一、socket epoll介绍二、代码实现1. epoll client实现2. epoll server实现3. epoll client server验证总结前言 I/O复用模型:主要是指,一个线程可以同时监控多个系统IO、并且能够操作多个系统IO的一种技术模…

西瓜书第一章课后题答案(一)

1.1 针对西瓜分类分题进行讲解属性: 3个属性色泽:(青绿,乌黑,浅白)根蒂:(蜷缩,硬挺,稍蜷)敲声:(浊响,清脆&…

Docker网络network详解

一、概述 Docker容器每次重启后容器ip是会发生变化的。 这也意味着如果容器间使用ip地址来进行通信的话,一旦有容器重启,重启的容器将不再能被访问到。 而Docker 网络就能够解决这个问题。 Docker 网络主要有以下两个作用: 容器间的互联和…

【ROS2入门】理解 ROS 2 节点

大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,在上一篇中,我们依托Turtlesim演示节点来逐步展开,介绍了rqt工具,这一章,我们将围绕ROS2中主要…

jvm快速入门

1.JVM介绍 1.什么是jvm Java Virtual Machine(java二进制字节码运行环境) 好处: 一次编译,好处运行自动内存管理,垃圾回收机制数组下标越界检查多态 比较JVM\JRE\JDK jvm屏蔽java代码与底层操作系统的差异 JREJVM基…

基于 java springboot+layui仓库管理系统设计和实现

基于 java springbootlayui仓库管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…

基于基于jsp+mysql+Spring+mybatis的SSM汽车保险理赔管理系统设计和实现

基于基于jspmysqlSpringmybatis的SSM汽车保险理赔管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐…