字节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;

}

轻云互联22元/月,美国硅谷、圣何塞CN2GIA云服务器,香港沙田cn2建站vps仅25元/月

轻云互联怎么样?轻云互联,广州轻云网络科技有限公司旗下品牌,2018年5月成立以来,轻云互联以性价比的价格一直为提供个人,中大小型企业/团队云上解决方案。本次轻云互联送上的是美国圣何塞cn2 vps(免费50G集群防御)及香港沙田cn2 vps(免费10G集群防御)促销活动,促销产品均为cn2直连中国大陆线路、采用kvm虚拟技术架构及静态内存。目前,轻云互联推出美国硅谷、圣何塞CN2GIA云服务器...

美国云服务器 2核4G限量 24元/月 香港云服务器 2核4G限量 24元/月 妮妮云

妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款到网站余额,超过2天...

华纳云新人下单立减40元/香港云服务器月付60元起,香港双向CN2(GIA)

华纳云(HNCloud Limited)是一家专业的全球数据中心基础服务提供商,总部在香港,隶属于香港联合通讯国际有限公司,拥有香港政府颁发的商业登记证明,保证用户的安全性和合规性。 华纳云是APNIC 和 ARIN 会员单位。主要提供数据中心基础服务、互联网业务解决方案, 以及香港服务器租用、香港服务器托管、香港云服务器、美国云服务器,云计算、云安全技术研发等产品和服务。其中云服务器基于成熟的 ...

c md5为你推荐
相机内存卡数据恢复相机内存卡坏了,数据有办法恢复吗?2g内存价格2G内存多少钱录屏软件哪个好手机录屏的话那个软件会好一点法兰绒和珊瑚绒哪个好珊瑚绒和法兰绒哪个暖和手动挡和自动挡哪个好手动档与自动档哪个好?电视直播软件哪个好电视直播软件哪个好电陶炉和电磁炉哪个好电磁炉和电陶炉哪个好? 电磁炉和电陶炉的具体区别尼康和佳能单反哪个好尼康和佳能哪个好qq空间登录不上为什么我登不进去QQ空间qq空间登录不上qq空间登不上去
国内vps 美国加州vps 免费申请域名和空间 adman 美国便宜货网站 iisphpmysql 42u标准机柜尺寸 东莞idc 视频服务器是什么 备案空间 免费asp空间 华为云建站 百度云空间 可外链的相册 电信宽带测速软件 国外免费云空间 卡巴斯基官网下载 xshell5注册码 腾讯云平台 windowssever2008 更多