Быстрая схема аутентификации и обмена ключами, устойчивая к DDoS-атаке

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

t strlen)

{outlen;char key[32];char iv[8];char inbuf[BUFSIZE], outbuf[BUFSIZE];(int i=0; i<32; i++){[i]=k[i];

}(inbuf,str,strlen);_CIPHER_CTX ctx;EVP_CIPHER * cipher;_CIPHER_CTX_init(&ctx);= EVP_aes_256_cfb();_DecryptInit(&ctx, cipher, key, iv);_DecryptUpdate(&ctx, outbuf, &outlen,inbuf, strlen);(str,outbuf,strlen);_EncryptFinal(&ctx, outbuf, &outlen);_CIPHER_CTX_cleanup(&ctx);0;

}

replay(char *str,char *buf, unsigned char *k2){tmp[BUFSIZE];(int i=0; i<11;i++){[i]=str[i+11];

}_DECRYPT_AES(k2,tmp,11);[11]=\0;(strcmp(tmp,buf)==0){1;

}0;

}

dialog(char *buf,int strlen, unsigned char *session_key){tmp[10];_DECRYPT_AES(session_key,buf,strlen);(int i=0; i<strlen; i++){

_itoa(i,tmp,10);[i]=tmp[0];

}_AES(session_key,buf,strlen);0;

}

_tmain(int argc, _TCHAR* argv[])

{sock;sockaddr_in addr;no_connect=0;buf[KEYSIZE+1],buff[BUFSIZE];char authkey[KEYSIZE+1];char session_key1[KEYSIZE+1], session_key2[KEYSIZE+1], IDc[KEYSIZE+1], P1[RSA_key_size+1], P2[RSA_key_size+1], P3[KEYSIZE+1], P4[RSA_key_size+1];char ptext[RSA_key_size+1];byte_read,wcount=0,wlen=0,countw=0;_ini();

( WSAStartup(0x202,(WSADATA*)&buff[0])){("WSAStart error %d\n", WSAGetLastError());-1;

}(1){=socket(AF_INET, SOCK_STREAM, 0);(sock < 0){("WSAStart error %d\n", WSAGetLastError());-1;

}

.sin_family=AF_INET;.sin_port=htons(PORT);(inet_addr(SERVERADDR)!=INADDR_NONE){.sin_addr.s_addr=inet_addr(SERVERADDR);

}{("\naddr err...\n");

}

(connect(sock, (struct sockaddr*)&addr, sizeof(addr))5){-1;

}

}

_session_key(session_key1);_session_key(session_key2);_IDc(IDc);_rsa(session_key1, session_key2, IDc, ptext);_encrypt(ptext,P1);char tmp[129];tmp2[129];(P1,tmp,128);_hex(tmp,tmp,KEYSIZE);_sign(tmp,32,P2,RSA_key_size);(tmp2,P2,128);_AES(session_key1,tmp2,128);(P2,tmp2,128);_IDauthkey(P3,session_key1);_authkey(authkey,session_key2);(tmp2,P1,128);(config_flags[0]==0)_AES(authkey,tmp2,128);(P4,tmp2,128);_send_package(buff,P1,P2,P3,P4);

((send(sock,buff,416,0))>0){("\n\n\nSEND OK!!!\n");(config_flags[2]!=1){((byte_read=recv(sock, buff, 25,0))>0){(buf,buff,12);[11]=\0;(replay(buff,buf,session_key2)==1){("\nauth OK\n");(strcmp(buf,"dialogstart")==0){(config_flags[1]==1){(sock,"no",3,0);

}{(sock,"ok",3,0);_read=recv(sock,buff,1000,0);=atoi(buff);_read=send(sock,buff,1,0);_read=recv(sock,buff,1000,0);=atoi(buff);(int i=0; i<wlen; i++){[i]=q;

}_AES(session_key2,buff,wlen);_read=send(sock,buff,wlen,0);(countw0){(buff,wlen,session_key2);(sock,buff,wlen,0);++;("\nmessage %d of %d\n",countw,wcount);(config_param[0]);

}

}

}

}

}{("\nauth FAILED!\n");

}

}{

}

}

}{("\nSEND FAILED!!!\n");

}(sock);=0;(config_param[1]);

}

0;

}