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

}

蓝竹云挂机宝25元/年,美国西雅图 1核1G 100M 20元

蓝竹云怎么样 蓝竹云好不好蓝竹云是新商家这次给我们带来的 挂机宝25元/年 美国西雅图云服务器 下面是套餐和评测,废话不说直接开干~~蓝竹云官网链接点击打开官网江西上饶挂机宝宿主机配置 2*E5 2696V2 384G 8*1500G SAS RAID10阵列支持Windows sever 2008,Windows sever 2012,Centos 7.6,Debian 10.3,Ubuntu1...

knownhost西雅图/亚特兰大/阿姆斯特丹$5/月,2个IP1G内存/1核/20gSSD/1T流量

美国知名管理型主机公司,2006年运作至今,虚拟主机、VPS、云服务器、独立服务器等业务全部采用“managed”,也就是人工参与度高,很多事情都可以人工帮你处理,不过一直以来价格也贵。也不知道knownhost什么时候开始运作无管理型业务的,估计是为了扩展市场吧,反正是出来较长时间了。闲来无事,那就给大家介绍下“unmanaged VPS”,也就是无管理型VPS,低至5美元/月,基于KVM虚拟,...

Friendhosting(月1.35欧元),不限流量,9机房可选

今天9月10日是教师节,我们今天有没有让孩子带礼物和花送给老师?我们这边不允许带礼物进学校,直接有校长在门口遇到有带礼物的直接拦截下来。今天有看到Friendhosting最近推出了教师节优惠,VPS全场45折,全球多机房可选,有需要的可以看看。Friendhosting是一家成立于2009年的保加利亚主机商,主要提供销售VPS和独立服务器出租业务,数据中心分布在:荷兰、保加利亚、立陶宛、捷克、乌...

c md5为你推荐
软银巨亏为什么马云说支付宝如果被抓 知乎桌面背景图片桌面背景和桌面壁纸的区别是什么?桌面背景图片非主流想下载非主流桌面背景,有没有专业的背景平台提供下载啊?免费阅读小说app哪个好有什么好用的看小说的app迈腾和帕萨特哪个好一汽迈腾和上海大众帕萨特哪个好传奇类手游哪个好什么传奇手游还不错的 不烧钱 比较耐玩点华为p40和mate30哪个好Huawei Mate30 和 P40 哪个好?少儿英语哪个好少儿英语哪种的好?游戏加速器哪个好大家玩游戏用的都是什么加速器啊,哪个效果最好机械表和石英表哪个好石英表和机械表哪个好
xenvps 域名解析服务器 新世界机房 host1plus cpanel 2014年感恩节 轻博 ibrs 免费全能空间 京东商城双十一活动 智能骨干网 1g空间 美国在线代理服务器 昆明蜗牛家 vip域名 512mb web服务器是什么 www789 国外的代理服务器 新加坡空间 更多