MD5哈希算法(C语言实现)
主要是做个记录,害怕以后代码丢了,先放到这里了。
MD5 暂时就不进行介绍了,最基础的哈希算法,网上到处都是。
转载请注明出处:https://www.cnblogs.com/wangyanzhong123/p/13784318.html
说明
这个版本用了很多位运算,也没有添加注释,所以可能阅读起来会有一些困难。但是可以保证的是结果一定是正确的,并且速度也是经过优化的,应该会很快。
源代码
#include
#include
#include
#include
#include
#define LEFTSHIFT(x,c) (((x) << (c)) | ((x) >> (32-(c))))
const uint32_t k[64] = {
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 ,