在线计算md5

https://md5jiami.bmcx.com/

程序参考

#include <stdio.h>
#include <stdint.h>
#include <string.h>#define ROTATELEFT(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))/*** @desc: convert message and mes_bkp string into integer array and store them in w*/
static void md5_process_part1(uint32_t *w, unsigned char *message, uint32_t *pos, uint32_t mes_len, const unsigned char *mes_bkp)
{uint32_t i; // used in for loopfor(i = 0; i <= 15; i++){int32_t count = 0;while(*pos < mes_len && count <= 24){w[i] += (((uint32_t)message[*pos]) << count);(*pos)++;count += 8;}while(count <= 24){w[i] += (((uint32_t)mes_bkp[*pos - mes_len]) << count);(*pos)++;count += 8;}}
}/*** @desc: start encryption based on w*/
static void md5_process_part2(uint32_t abcd[4], uint32_t *w, const uint32_t k[64], const uint32_t s[64])
{uint32_t i; // used in for loopuint32_t a = abcd[0];uint32_t b = abcd[1];uint32_t c = abcd[2];uint32_t d = abcd[3];uint32_t f = 0;uint32_t g = 0;for(i = 0; i < 64; i++){if(i >= 0 && i <= 15){f = (b & c) | ((~b) & d);g = i;}else if(i >= 16 && i <= 31){f = (d & b) | ((~d) & c);g = (5 * i + 1) % 16;}else if(i >= 32 && i <= 47){f = b ^ c ^ d;g = (3 * i + 5) % 16;}else if(i >= 48 && i <= 63){f = c ^ (b | (~d));g = (7 * i) % 16;}uint32_t temp = d;d = c;c = b;b = ROTATELEFT((a + f + k[i] + w[g]), s[i]) + b;a = temp;}abcd[0] += a;abcd[1] += b;abcd[2] += c;abcd[3] += d;
}static const uint32_t k_table[]={0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee,0xf57c0faf,0x4787c62a,0xa8304613,0xfd469501,0x698098d8,0x8b44f7af,0xffff5bb1,0x895cd7be,0x6b901122,0xfd987193,0xa679438e,0x49b40821,0xf61e2562,0xc040b340,0x265e5a51,0xe9b6c7aa,0xd62f105d,0x02441453,0xd8a1e681,0xe7d3fbc8,0x21e1cde6,0xc33707d6,0xf4d50d87,0x455a14ed,0xa9e3e905,0xfcefa3f8,0x676f02d9,0x8d2a4c8a,0xfffa3942,0x8771f681,0x6d9d6122,0xfde5380c,0xa4beea44,0x4bdecfa9,0xf6bb4b60,0xbebfbc70,0x289b7ec6,0xeaa127fa,0xd4ef3085,0x04881d05,0xd9d4d039,0xe6db99e5,0x1fa27cf8,0xc4ac5665,0xf4292244,0x432aff97,0xab9423a7,0xfc93a039,0x655b59c3,0x8f0ccc92,0xffeff47d,0x85845dd1,0x6fa87e4f,0xfe2ce6e0,0xa3014314,0x4e0811a1,0xf7537e82,0xbd3af235,0x2ad7d2bb,0xeb86d391
};static const uint32_t s_table[]={7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21
};int32_t cal_md5(unsigned char *result, unsigned char *data, int length)
{if (result == NULL){return 1;}uint32_t w[16];uint32_t i; // used in for loopuint32_t mes_len = length;uint32_t looptimes = (mes_len + 8) / 64 + 1;uint32_t abcd[] = {0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476};uint32_t pos = 0; // position pointer for messageuint32_t bkp_len = 64 * looptimes - mes_len; // 经过计算发现不超过72//    unsigned char *bkp_mes = (unsigned char *)calloc(1, bkp_len);unsigned char bkp_mes[80];for(int i = 0; i < 80; i++) //初始化{bkp_mes[i] = 0;}bkp_mes[0] = (unsigned char)(0x80);uint64_t mes_bit_len = ((uint64_t)mes_len) * 8;for(i = 0; i < 8; i++){bkp_mes[bkp_len-i-1] = (unsigned char)((mes_bit_len & (0x00000000000000FF << (8 * (7 - i)))) >> (8 * (7 - i)));}for(i = 0; i < looptimes; i++){for(int j = 0; j < 16; j++) //初始化{w[j] = 0x00000000;}md5_process_part1(w, data, &pos, mes_len, bkp_mes); // compute wmd5_process_part2(abcd, w, k_table, s_table); // calculate md5 and store the result in abcd}for(int i = 0; i < 16; i++){result[i] = ((unsigned char*)abcd)[i];}return 0;
}int32_t main(void)
{uint8_t result[41]={0};int32_t ret = -1;uint32_t i =0;//test 1ret = cal_md5(result, "abcdegfhijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz123", strlen("abcdegfhijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz123"));printf("ret=%d\n", ret);if(ret == 0){printf("get md5 successful!\n");for(i=0; i<strlen(result); i++){printf("%#x ", result[i]);}printf("\n");}else{printf("get md5 failed!\n");}
}

输出结果如下

32位的md5校验程序相关推荐

  1. 【解决方案】64位Linux系统下无法编译、运行32位C、C++程序的解决办法

    [故障] 1. 从32位系统里面复制过来的32位C或C++程序无法运行,提示找不到程序文件,或找不到libstdc++.so.6库 [oct1158@oct1158-fedora 32env]$ ./ ...

  2. 32位大写 md5 php_编写生成32位大写和小写字符的md5的函数

    package nicetime.com.practise; import java.security.MessageDigest; /** * MD5加密是JAVA应用中常见的算法,请写出两个MD5 ...

  3. 32位dll注入到64位程序_你用的32位还是64位?有什么区别呢?

    (给程序员零距离加星标,了解项目开发.) 粉丝福利:小编会从今天留言中抽选3名小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!通过前面两篇文章的学习,外甥对电脑的产生了各种好奇,差点把自己电脑拆 ...

  4. JMeter-Eclipse添加自定义函数 MD5加密 32位和16位

    最近公司的接口都是MD5  16位加密,所以要使用加密功能. 之前也做过加密,因为用的比较少,所以是写了一个加密方法,导出JAR包,调用的.用起来需要很多设置,并且换算效率也不高.听前同事说,jmet ...

  5. 您没有足够的全新为该计算机所有用户安装,很抱歉,无法安装Office(64位),因为您的计算机上已经安装了这些32位Office程序解决办法...

    64位与32位版本的Office程序不兼容,因此您一次只能安装一种类型,请尝试改为安装32位版本的Office ,或卸载其他32位Office 程序,然后再次尝试此安装. 在安装Office 2016 ...

  6. (转)关于X64位系统IIS7下支持32位asp.net程序

    最近在windows2008 x64位系统下的IIS7下部署asp.net程序. vs2005或vs2008默认的情况下是Any cpu 的也就是支持x86和x64两种系统的.可我的程序在引用了一个三 ...

  7. 32位dll转64位工具_如何在64位系统中运行32位或16位程序

    由于CPU和系统架构的更新,现行主流的Windows系统已经是64位.然而许多人还恋恋不舍的一些老游戏或老程序已经没有了更新.在64位的系统上运行这些程序,往往会出现运行故障.如何才能解决这个烦心事? ...

  8. Qt编译32位和64位程序

    下载qt-opensource-windows-x86-msvc2013_64-5.7.1.exe ,安装时选择安装源码 在msvc2013_64下面的bin include lib都是64位的,可直 ...

  9. 在64位操作系统上运行32位的程序

    运行 32 位程序 WOW64 子系统使 32 位程序能够在基于 x64 版本的 Windows Server 2003 和 Windows XP 专业 x64 版的运行而不用修改.WOW64 子系统 ...

最新文章

  1. R语言效用分析 ( 效能分析、Power analysis)确定样本量、假设检验与两类错误、pwr包进行效用分析 ( 效能分析、Power analysis)的常用函数列表
  2. 最强大的GNN出现了!
  3. SpringBoot+mongoDB实现id自增
  4. JAVA删除临时文件
  5. 帧间编码的预测自适应量化系数扫描排序
  6. 21世纪初最有影响力的20篇计算机视觉期刊论文 及 邓亚峰老师关于人脸识别方面总结
  7. 关于技术文章“标题党”一事我想说两句
  8. window下查看dll, lib文件是32位还是64位
  9. mssql性能优化[转](教你写出高质量的SQL语句)(二)
  10. 第八期:继美商务部拉黑多家中国公司后,MIT开始审查对华AI合作项目
  11. 新学期,对同学们的要求和期望
  12. 腾讯京东要建“反阿里联盟”?Python 或成 Excel 官方脚本语言;百度华为在一起 | 一周业界事
  13. 毕设题目:Matlab图像压缩
  14. 企业微信电脑版显示连不上服务器,钉钉环境部分Anroid手机,微信、企业微信pc版,登录失败的解决办法...
  15. V4L2视频采集的基本流程
  16. Hadoop生态圈(十八)- HDFS Transparent Encryption透明加密
  17. proxychans的使用
  18. 如何证明圆锥面积=1/3圆柱面积?
  19. MIT线性代数笔记二 矩阵消元
  20. Day4:应用层——FTP :文件传输协议、电子邮件(EMail)、DNS(Domain Name System)、P2P应用(一类应用)

热门文章

  1. 《异星歧途》,特别有意思的一个故事
  2. 【优化】近端梯度下降(Proximal Gradient Descent)求解Lasso线性回归问题
  3. Jekins安装配置教程
  4. 伪静态、静态、动态url
  5. 制作 Google Chrome 绿色版
  6. 高内聚低耦合是什么含义,怎么实现?
  7. excel设置行高_手把手教你用wps表格excel制作田字格书法练习字帖
  8. RedHat7.4安装
  9. IC测试原理-存储器测试
  10. 5G新型网络架构和5G新型网络架构关键技术