Linux开发中 MD5值的计算
Go语言中crypto/md5包中提供了MD5计算的API,在Linux中,openssl库也提供了类似的接口,编译的时候加上链接选项-lcrypto 就可以使用了。
基本API有两种,一种是MD5(),另一种是分为三个部分,MD5_Init, MD5_Update, MD5_Final,这个适合长度不确定的数据计算:
#include <openssl/md5.h>//d存储待计算的数据,n表示数据的长度,如果md非空,则存储md5值。unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md);//初始化int MD5_Init(MD5_CTX *c);//计算data中长度为len的MD5,当数据很大的情况下,可以分多次计算int MD5_Update(MD5_CTX *c, const void *data, unsigned long len);//得到累计的md5值int MD5_Final(unsigned char *md, MD5_CTX *c);
测试用例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md5.h>char *str2md5(const char *str, int length) {int n;MD5_CTX c;unsigned char digest[16];char *out = (char*)malloc(33);MD5_Init(&c);while (length > 0) {if (length > 512) {MD5_Update(&c, str, 512);} else {MD5_Update(&c, str, length);}length -= 512;str += 512;}MD5_Final(digest, &c);for (n = 0; n < 16; ++n) {snprintf(&(out[n*2]), 16*2, "%02x", (unsigned int)digest[n]);}return out;
}int main(int argc, char **argv) {char *output = str2md5("hello", strlen("hello"));printf("%s\n", output);free(output);return 0;
}
编译运行:
如果出现如下编译错误:
openssl/md5.h: No such file or directory解决方案:
sudo apt-get install libpcap-dev libssl-dev
参考文档:
1. https://www.openssl.org/docs/manmaster/man3/MD5.html
2. https://stackoverflow.com/questions/7627723/how-to-create-a-md5-hash-of-a-string-in-c
Linux开发中 MD5值的计算相关推荐
- linux中time命令详解、脚本监控记录系统硬盘io值、定位linux系统中await值过高占用的盘、定位占用硬盘IO高的程序、iotop命令说明、lsof使用说明【可定位端口所占用程序等】
文章目录 文章说明 linux中的time命令 说明&常规用法 bash中使用time,将运行记录追加到文件中,-f后的参数说明 高阶用法 time 命令详细输出指标介绍 ime taken ...
- Linux开发中的辅助工具
文章目录 前言 一.add2line 二.strip 三.ar 四.nm 五.objdump 六.size 七.strings 总结 前言 本篇文章我们来介绍一些Linux开发中的辅助工具,有了这些辅 ...
- iOS开发中MD5加密算法的实现
一.MD5算法简介 MD5的全称是Message Digest Algorithm 5(消息摘要算法第五版),是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.在90年代初由MIT L ...
- linux服务端开发vs2012,Vs2012在Linux开发中的应用(1):开发环境
在Linux的开发过程中使用过多个IDE.code::blocks.eclipse.source insight.还有嵌入式厂商提供的各种IDE.如VisualDsp等,感觉总是不如vs强大好用.尽管 ...
- ios支付 选择货币_iOS开发中金钱货币的计算问题
ios开发中涉及到和货币价格计算相关的,都需要注意计算精度的问题. 服务器有可能返回的金钱是int float double string NSNumber, 单纯的float.double的计算都会 ...
- Linux 查看文件MD5值
md5sum filename MD5值是什么: MD5在论坛上.软件发bai布时经常用du,是为了zhi保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统.每个文件都可以 ...
- java 文件的md5值_Java计算文件的MD5值
import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.securi ...
- Linux 开发中的常用命令 ( Cygwin 环境也同样适用)
ls #以默认方式显示当前目录文件列表 ls –a #显示所有文件包括隐藏文件 ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行 ls –color=never *.so ...
- 嵌入式linux开发中常见的虚拟机和主机的文件共享问题
在嵌入式开发中常会用到linux系统,而有些单位必须使用虚拟机安装linux系统. 在使用vmware安装ubuntu系统后,要创建一个用作虚拟机和主机之间的共享目录. 但是这样做完之后,在ubunt ...
最新文章
- 青岛大学计算机系住哪个校区,青岛大学有几个校区及校区地址
- 查看PID 进程是否存在的一个小技巧
- centos7安装golang
- python-3.6.2安装
- 想学好C语言?先把基础打好再说吧!
- 服务器无法在发送 http 标头之后设置内容类型。_python socket编程预知内容
- OpenWRT开发之——对C++的支持(解决库依赖问题)
- leetcode string
- (第二部)程序员逆天改命之胜天半子
- C语言返回值深入研究
- 推荐系统专利:一种信息推荐系统及方法
- 好用靠谱的人事管理软件推荐?
- scratch素材准备
- Lattice的构建过程
- tomcat发布asp网站的解决办法(转)
- 极光Im + layIm 实现后台聊天
- 【产品经理】 产品经理进阶之路(十一):怎么看微信的公众号和百度的直达号,哪个更有优势
- 首批部分游戏已完成审核 正在抓紧核发版号
- 信号与系统2-连续离散系统时域分析
- 求生之路怎么显示服务器,求生之路2怎么屏蔽rpg服务器 求生之路2屏蔽rpg服务器方法-超能街机...
热门文章
- 用Ext 2.0 combobox 做的省份和城市联动选择框
- java resume过时方法_学点开发|关于Java多线程用法解析
- 图片→矩阵→空间→坍缩-→质点--用神经网络将空间坍缩成粒子的实验数据汇总
- 【Python】3D Axis
- 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第10章-滤波器设计
- 【Matlab 图像】边缘检测算法及效果演示
- 一起学nRF51xx 1 - GPIO
- STM32 进阶教程 5 - 内联函数
- ArchLinux安装图文教程(2017.06.15)
- 5G来了4G降速?负载均衡链路聚合器了解一下