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

}

[6.18]IMIDC:香港/台湾服务器月付30美元起,日本/俄罗斯服务器月付49美元起

IMIDC发布了6.18大促销活动,针对香港、台湾、日本和莫斯科独立服务器提供特别优惠价格最低月付30美元起。IMIDC名为彩虹数据(Rainbow Cloud),是一家香港本土运营商,全线产品自营,自有IP网络资源等,提供的产品包括VPS主机、独立服务器、站群独立服务器等,数据中心区域包括香港、日本、台湾、美国和南非等地机房,CN2网络直连到中国大陆。香港服务器   $39/...

ZoeCloud:香港BGP云服务器,1GB内存/20GB SSD空间/2TB流量/500Mbps/KVM,32元/月

zoecloud怎么样?zoecloud是一家国人商家,5月成立,暂时主要提供香港BGP KVM VPS,线路为AS41378,并有首发永久8折优惠:HKBGP20OFF。目前,解锁香港区 Netflix、Youtube Premium ,但不保证一直解锁,谢绝以不是原生 IP 理由退款。不保证中国大陆连接速度,建议移动中转使用,配合广州移动食用效果更佳。点击进入:zoecloud官方网站地址zo...

TmhHost暑假活动:高端线路VPS季付8折优惠,可选洛杉矶CN2 GIA/日本软银/香港三网CN2 GIA/韩国双向CN2等

tmhhost怎么样?tmhhost正在搞暑假大促销活动,全部是高端线路VPS,现在直接季付8折优惠,活动截止时间是8月31日。可选机房及线路有美国洛杉矶cn2 gia+200G高防、洛杉矶三网CN2 GIA、洛杉矶CERA机房CN2 GIA,日本软银(100M带宽)、香港BGP直连200M带宽、香港三网CN2 GIA、韩国双向CN2。点击进入:tmhhost官方网站地址tmhhost优惠码:Tm...

c md5为你推荐
金士顿4g内存条金士顿4g内存条价格是多少啊?压缩软件哪个好安卓手机哪一款解压缩软件比较好用?谢谢!固定利率和浮动利率哪个好应当选择固定利率,还是选择浮动利率还款?雅思和托福哪个好考现在考雅思还是托福好行车记录仪哪个好请问行车记录仪那个牌子好?网络机顶盒哪个好什么牌子的网络机顶盒最好飞信空间登录飞信客户端空间登录 飞信绿色版历史记录google广告申请怎样才能申请google广告dns服务器地址如何知道自己的IP地址和DNS服务器地址?网通dns服务器地址中国联通的默认DNS是多少
域名购买 顶级域名 工信部域名备案查询 网通vps 最新代理服务器ip wordpress主机 simcentric l5639 外贸主机 googleapps 香港机房托管 网站挂马检测工具 域名接入 福建铁通 t云 web服务器安全 免费外链相册 中国电信测速器 什么是web服务器 贵阳电信测速 更多