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值的计算相关推荐

  1. linux中time命令详解、脚本监控记录系统硬盘io值、定位linux系统中await值过高占用的盘、定位占用硬盘IO高的程序、iotop命令说明、lsof使用说明【可定位端口所占用程序等】

    文章目录 文章说明 linux中的time命令 说明&常规用法 bash中使用time,将运行记录追加到文件中,-f后的参数说明 高阶用法 time 命令详细输出指标介绍 ime taken ...

  2. Linux开发中的辅助工具

    文章目录 前言 一.add2line 二.strip 三.ar 四.nm 五.objdump 六.size 七.strings 总结 前言 本篇文章我们来介绍一些Linux开发中的辅助工具,有了这些辅 ...

  3. iOS开发中MD5加密算法的实现

    一.MD5算法简介 MD5的全称是Message Digest Algorithm 5(消息摘要算法第五版),是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.在90年代初由MIT L ...

  4. linux服务端开发vs2012,Vs2012在Linux开发中的应用(1):开发环境

    在Linux的开发过程中使用过多个IDE.code::blocks.eclipse.source insight.还有嵌入式厂商提供的各种IDE.如VisualDsp等,感觉总是不如vs强大好用.尽管 ...

  5. ios支付 选择货币_iOS开发中金钱货币的计算问题

    ios开发中涉及到和货币价格计算相关的,都需要注意计算精度的问题. 服务器有可能返回的金钱是int float double string NSNumber, 单纯的float.double的计算都会 ...

  6. Linux 查看文件MD5值

    md5sum filename MD5值是什么: MD5在论坛上.软件发bai布时经常用du,是为了zhi保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统.每个文件都可以 ...

  7. java 文件的md5值_Java计算文件的MD5值

    import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.securi ...

  8. Linux 开发中的常用命令 ( Cygwin 环境也同样适用)

    ls #以默认方式显示当前目录文件列表 ls –a #显示所有文件包括隐藏文件 ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行 ls –color=never *.so ...

  9. 嵌入式linux开发中常见的虚拟机和主机的文件共享问题

    在嵌入式开发中常会用到linux系统,而有些单位必须使用虚拟机安装linux系统. 在使用vmware安装ubuntu系统后,要创建一个用作虚拟机和主机之间的共享目录. 但是这样做完之后,在ubunt ...

最新文章

  1. 青岛大学计算机系住哪个校区,青岛大学有几个校区及校区地址
  2. 查看PID 进程是否存在的一个小技巧
  3. centos7安装golang
  4. python-3.6.2安装
  5. 想学好C语言?先把基础打好再说吧!
  6. 服务器无法在发送 http 标头之后设置内容类型。_python socket编程预知内容
  7. OpenWRT开发之——对C++的支持(解决库依赖问题)
  8. leetcode string
  9. (第二部)程序员逆天改命之胜天半子
  10. C语言返回值深入研究
  11. 推荐系统专利:一种信息推荐系统及方法
  12. 好用靠谱的人事管理软件推荐?
  13. scratch素材准备
  14. Lattice的构建过程
  15. tomcat发布asp网站的解决办法(转)
  16. 极光Im + layIm 实现后台聊天
  17. 【产品经理】 产品经理进阶之路(十一):怎么看微信的公众号和百度的直达号,哪个更有优势
  18. 首批部分游戏已完成审核 正在抓紧核发版号
  19. 信号与系统2-连续离散系统时域分析
  20. 求生之路怎么显示服务器,求生之路2怎么屏蔽rpg服务器 求生之路2屏蔽rpg服务器方法-超能街机...

热门文章

  1. 用Ext 2.0 combobox 做的省份和城市联动选择框
  2. java resume过时方法_学点开发|关于Java多线程用法解析
  3. 图片→矩阵→空间→坍缩-→质点--用神经网络将空间坍缩成粒子的实验数据汇总
  4. 【Python】3D Axis
  5. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-第10章-滤波器设计
  6. 【Matlab 图像】边缘检测算法及效果演示
  7. 一起学nRF51xx 1 - GPIO
  8. STM32 进阶教程 5 - 内联函数
  9. ArchLinux安装图文教程(2017.06.15)
  10. 5G来了4G降速?负载均衡链路聚合器了解一下