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

}

阿里云香港 16核32G 20M 999元/月

阿里云香港配置图提速啦是成立于2012年的十分老牌的一个商家这次给大家评测的是 阿里云香港 16核32G 20M 这款产品,单单说价格上就是十分的离谱原价8631元/月的现价只要 999元 而且还有个8折循环优惠。废话不多说直接进入正题。优惠时间 2021年8月20日-2021年9月20日 优惠码 wn789 8折优惠阿里云香港BGP专线 16核32G 10M带宽 优惠购买 399元购买链接阿里云...

傲游主机38.4元起,韩国CN2/荷兰VPS全场8折vps香港高防

傲游主机怎么样?傲游主机是一家成立于2010年的老牌国外VPS服务商,在澳大利亚及美国均注册公司,是由在澳洲留学的害羞哥、主机论坛知名版主组长等大佬创建,拥有多家海外直连线路机房资源,提供基于VPS主机和独立服务器租用等,其中VPS基于KVM或者XEN架构,可选机房包括中国香港、美国洛杉矶、韩国、日本、德国、荷兰等,均为CN2或者国内直连优秀线路。傲游主机提供8折优惠码:haixiuge,适用于全...

美国高防云服务器 1核 1G 26元/月 香港/日本站群服务器 E5 16G 1600元/月 触摸云

触摸云国内IDC/ISP资质齐全商家,与香港公司联合运营, 已超8年运营 。本次为大家带来的是双12特惠活动,美国高防|美国大宽带买就可申请配置升档一级[CPU内存宽带流量选一]升档方式:CPU内存宽带流量任选其一,工单申请免费升级一档珠海触摸云科技有限公司官方网站:https://cmzi.com/可新购免费升档配置套餐:地区CPU内存带宽数据盘价格购买地址美国高防 1核 1G10M20G 26...

c md5为你推荐
马云将从软银董事会辞职阿里巴巴马云为啥叫董事局主席而不叫董事会主席?董事局和董事会啥区别?软银支付烧钱,玩家多,生态复杂,印度的移动支付大战有多火爆莫代尔和纯棉哪个好内裤是莫代尔的好还是棉质的好?理由是什么压缩软件哪个好安卓手机哪一款解压缩软件比较好用?谢谢!少儿英语哪个好少儿英语教材哪个好?朗逸和速腾哪个好大众速腾与朗逸哪个好手机杀毒软件哪个好手机用杀毒软件,用哪样的好电动牙刷哪个好电动牙刷哪个牌子比较好,不要那么贵的qq空间登录不上为什么我的QQ空间登陆不上?qq网盘在哪里QQ网盘在哪里
域名转让网 免费国际域名 greengeeks 80vps enzu 缓存服务器 账号泄露 主机屋免费空间 阿里云代金券 天猫双十一抢红包 七夕快乐英文 135邮箱 搜索引擎提交入口 支付宝扫码领红包 爱奇艺会员免费试用 多线空间 in域名 双线机房 电信网络测速器 广州虚拟主机 更多