字节md5的c语言实现

c md5  时间:2021-01-27  阅读:()

md5的C语言实现long FF(long a, long b, long c, long d, long Mj, long s, long ti) {a=(a+F(b,c,d)+Mj+ti)0xffffffffl;a=(as) | (a(32-s));a+=b;return(a 0xFFFFFFFFL);long GG(long a, long b, long c, long d, int Mj, int s, int ti){a=(a+G(b,c,d)+Mj+ti)0xffffffffl;a=(as) | (a(32-s));a+=b;return(a 0xFFFFFFFFL);long HH(long a, long b, long c, long d, int Mj, int s, int ti){a=(a+H(b,c,d)+Mj+ti)0xffffffffl;a=(as) | (a(32-s));a+=b;return(a 0xFFFFFFFFL);long II(long a, long b, long c, long d, int Mj, int s, int ti){a=(a+I(b,c,d)+Mj+ti)0xffffffffl;a=(as) | (a(32-s));a+=b;return(a 0xFFFFFFFFL);void Loops(int group[16]){long a=A,b=B, c=C,d=D;

//第一轮循环a=FF(a,b,c,d,group[0],7,0xd76aa478);d=FF(d,a,b,c,group[1],12,0xe8c7b756);c=FF(c,d,a,b,group[2],17,0x242070db);b=FF(b,c,d,a,group[3],22,0xc 1bdceee);a=FF(a,b,c,d,group[4],7,0xf57c 0faf);d=FF(d,a,b,c,group[5],12,0x4787c 62a);c=FF(c,d,a,b,group[6],17,0xa8304613);b=FF(b,c,d,a,group[7],22,0xfd469501);a=FF(a,b,c,d,group[8],7,0x698098d8);d=FF(d,a,b,c,group[9],12,0x8b44f7af);c=FF(c,d,a,b,group[10],17,0xffff5bb 1);b=FF(b,c,d,a,group[11],22,0x895cd7be);a=FF(a,b,c,d,group[12],7,0x6b901122);d=FF(d,a,b,c,group[13],12,0xfd987193);c=FF(c,d,a,b,group[14],17,0xa679438e);b=FF(b,c,d,a,group[15],22,0x49b40821);//第二轮循环a=GG(a,b,c,d,group[1], 5,0xf61 e2562);d=GG(d,a,b,c,group[6],9,0xc040b340);c=GG(c,d,a,b,group[11],14,0x265e5a51);b=GG(b,c,d,a,group[0],20,0xe9b6c7aa);

a=GG(a,b,c,d,group[5], 5,0xd62f105d);d=GG(d,a,b,c,group[10],9,0x02441453);c=GG(c,d,a,b,group[15],14,0xd8a1 e681);b=GG(b,c,d,a,group[4],20,0xe7d3fbc8);a=GG(a,b,c,d,group[9], 5,0x21 e1 cde6);d=GG(d,a,b,c,group[14],9,0xc33707d6);c=GG(c,d,a,b,group[3], 14,0xf4d50d87);b=GG(b,c,d,a,group[8],20,0x455a14ed);a=GG(a,b,c,d,group[13],5,0xa9e3e905);d=GG(d,a,b,c,group[2],9,0xfcefa3f8);c=GG(c,d,a,b,group[7], 14,0x676f02d9);b=GG(b,c,d,a,group[12],20,0x8d2a4c 8a);//第三轮循环a=HH(a,b,c,d,group[5],4,0xfffa3942);d=HH(d,a,b,c,group[8],11,0x8771 f681);c=HH(c,d,a,b,group[11],16,0x6d9d6122);b=HH(b,c,d,a,group[14],23,0xfde5380c);a=HH(a,b,c,d,group[1],4,0xa4beea44);d=HH(d,a,b,c,group[4],11,0x4bdecfa9);c=HH(c,d,a,b,group[7],16,0xf6bb4b60);b=HH(b,c,d,a,group[10],23,0xbebfbc 70);a=HH(a,b,c,d,group[13],4,0x289b7ec6);

d=HH(d,a,b,c,group[0],11,0xeaa127fa);c=HH(c,d,a,b,group[3],16,0xd4ef3085);b=HH(b,c,d,a,group[6],23,0x04881 d05);a=HH(a,b,c,d,group[9],4,0xd9d4d039);d=HH(d,a,b,c,group[12],11,0xe6db99e5);c=HH(c,d,a,b,group[15],16,0x 1 fa27c f8);b=HH(b,c,d,a,group[2],23,0xc4ac5665);//第四轮循环a=II(a,b,c,d,group[0],6,0xf4292244);d=II(d,a,b,c,group[7],10,0x432aff97);c=II(c,d,a,b,group[14],15,0xab9423a7);b=II(b,c,d,a,group[5],21,0xfc93a039);a=II(a,b,c,d,group[12],6,0x655b59c 3);d=II(d,a,b,c,group[3],10,0x8f0ccc92);c=II(c,d,a,b,group[10],15,0xffeff47d);b=II(b,c,d,a,group[1],21,0x85845dd1);a=II(a,b,c,d,group[8],6,0x6fa87e4f);d=II(d,a,b,c,group[15],10,0xfe2ce6e0);c=II(c,d,a,b,group[6],15,0xa3014314);b=II(b,c,d,a,group[13],21,0x4e0811a1);a=II(a,b,c,d,group[4],6,0xf7537e82);d=II(d,a,b,c,group[11],10,0xbd3af235);

c=II(c,d,a,b,group[2],15,0x2ad7d2bb);b=II(b,c,d,a,group[9],21,0xeb86d391);

//把运算后结果写回去

A+=a,B+=b,C+=c,D+=d;

A=0xffffffff;

B=0xffffffff;

C=0xffffffff;

D=0xffffffff;

//根据循环后AB CD的值得到MD 5码string getMdCode(){string codes[16]={0, 1 ,2, 3,4, 5,6,7,8,9,A,B,C,D,E,Fstring code=long a=A,b=B, c=C,d=D;for(int i=0; i i++){int tmp=a 0x0f;string first=codes[tmp];a=4;tmp=a 0x0f;string second=codes[tmp];code+=(second+first);a=4;for(int i=0; i i++){

int tmp=b 0x0f;string first=codes[tmp];b=4;tmp=b 0x0f;string second=codes[tmp];code+=(second+first);b=4;for(int i=0; i i++){int tmp=c 0x0f;string first=codes[tmp];c=4;tmp=a 0x0f;string second=codes[tmp];code+=(second+first);c=4;for(int i=0; i i++){int tmp=d 0x0f;string first=codes[tmp];d=4;tmp=d 0x0f;string second=codes[tmp];code+=(second+first);

d=4;

A=0X67452301 l;

B=0XEF C D AB89 l;

C=0X98BAD CFEl;

D=0X10325476l;return c ode;int bitToUns ign(int b){return b 0?b 0x7f+128:b;

//将64个字节划分成16组每小组4个字节int*divid eGroup(byte*bytes, int n){int *group=new int[16];for(int i=0; i i++){int a1=bitToUnsign((int)bytes[n+4*i]);int a2=(bitToUns ign((int)bytes[n+4*i+1]) 8);int a3=(bitToUnsign((int)bytes[n+4*i+2]) 16);int a4=(bitToUnsign((int)bytes[n+4*i+3])24);group[i]=a 1 |a2|a3 |a4;return group;

//根据输入信息来返回该信息对应的MD 5码string md5(string s){long length=s.length();byte*ch=new byte[length+1];

for(int i=0; i length; i++){ //将string转化为byte的数组ch[i]=(byte)s[i];long groupLength=length/64;for(int i=0; i groupLength; i++){

Loops(divideGroup(c h,i*64)); //先分组然后再进行循环处理int remain=length%64; //剩余的字节byte rest[128];long bitLength=length 3; //信息总共有多少位if(remain=56){for(int i=0; i remain; i++){res t[i]=c h[length-remain+i];if(remain 56){rest[remain]=(byte)(-128);//补1for(int i=1; i 56-remain; i++){ //补0直到为56个字节448位rest[remain+i]=0;for(int i=56; i i++){ //补长度rest[i]=(byte)(bitLength 0xff);bitLength=bitLength 8;els e { //多于56个字节则先补到120字节再用剩余的八个字节来储存长度rest[remain]=(-128); //补1for(int i=remain+1; i 120; i++) { //补0

rest[i]=0;for(int i=120; i 128; i++){ //补长度rest[i]=(byte)(bitLength 0xff);bitLength=8;

Loops(divideGroup(rest,0));

Loops(divideGroup(rest,64));

//根据运算后的AB CD返回其MD 5码return getMdCode();int main(int argc,char*argc s[]){string s=c out md5(s)endl;s=ac out md5(s)endl;s=abcc out md5(s)endl;return 0;

}

licloud:$39/月,香港物理服务器,30M带宽,e3-1230v3/16G内存/1T硬盘

licloud官方消息:当前对香港机房的接近100台物理机(香港服务器)进行打折处理,30Mbps带宽,低至不到40美元/月,速度快,性价比高,跑绝大多数项目都是绰绰有余了。该款香港服务器自带启动、关闭、一键重装功能,正常工作日内30~60分钟交货(不包括非工作日)。 官方网站:https://licloud.io 特价香港物理服务器 CPU:e3-1230v2(4核心、8线程、3.3GH...

Puaex:香港vds,wtt套餐,G口带宽不限流量;可解流媒体,限量补货

puaex怎么样?puaex是一家去年成立的国人商家,本站也分享过几次,他家主要销售香港商宽的套餐,给的全部为G口带宽,而且是不限流量的,目前有WTT和HKBN两种线路的方面,虽然商家的价格比较贵,但是每次补一些货,就会被抢空,之前一直都是断货的状态,目前商家进行了补货,有需要这种类型机器的朋友可以入手。点击进入:puaex商家官方网站Puaex香港vds套餐:全部为KVM虚拟架构,G口的带宽,可...

PQ.hosting:香港HE/乌克兰/俄罗斯/荷兰/摩尔多瓦/德国/斯洛伐克/捷克vps,2核/2GB内存/30GB NVMe空间,€3/月

PQ.hosting怎么样?PQ.hosting是一家俄罗斯商家,正规公司,主要提供KVM VPS和独立服务器,VPS数据中心有香港HE、俄罗斯莫斯科DataPro、乌克兰VOLIA、拉脱维亚、荷兰Serverius、摩尔多瓦Alexhost、德国等。部分配置有变化,同时开通Paypal付款。香港、乌克兰、德国、斯洛伐克、捷克等为NVMe硬盘。香港为HE线路,三网绕美(不太建议香港)。免费支持wi...

c md5为你推荐
鬼武者3内存修改器谁有鬼武者3的修改器,要没毒的,简单好用的马云将从软银董事会辞职马云在阿里巴巴是什么职位..首席执行官兼执行董事怎么是卫哲?难道单单是董事会主席浏览器哪个好什么浏览器最好用?华为p40和mate30哪个好mate30 5G和p40 5G有什么区别?51个人空间登录为什么登陆51博客个人空间就不能登陆QQdns服务器设置DNS服务器建立的详细步骤?360云盘关闭360云盘关闭了 里面的东西怎么办360云盘关闭360百度云盘到底什么时候关闭强生月抛强生月抛这款怎么样?什么快递最便宜什么快递最划算
免费虚拟空间 怎么注册域名 cn域名价格 mach5 directadmin win8.1企业版升级win10 debian6 商家促销 台湾谷歌地址 申请免费空间和域名 阿里云官方网站 免费asp空间申请 免费网络 lamp怎么读 闪讯网 美国十大啦 alexa搜 ping值 ssd vpsaa 更多