Commit 553aa5b9 authored by Bhavesh Yadav's avatar Bhavesh Yadav

Improved hash function and added nodetoId function

parent 0b9c16f2
......@@ -11,28 +11,26 @@
#include <openssl/md5.h>
#define MAXLOCATIONS 32
#define MAXIDVALUE 65536
int keyToId(char * key){
unsigned char digest[16];
MD5_CTX context;
unsigned intHashValue;
unsigned char *hexVal;
MD5_Init(&context);
MD5_Update(&context, key, strlen(key));
MD5_Final(digest, &context);
hexVal = malloc(sizeof(char));
int twoDigits;
for(int i =0; i<2;i++){
sprintf(hexVal+i,"%02X",digest[i]);
sscanf(hexVal+i,"%x",&twoDigits);
intHashValue = intHashValue*1000 + twoDigits; // The two digits can also have 3 numerical digits hence *1000
}
int intHashValue;
int first8bits = digest[0];
first8bits = first8bits<<8;
intHashValue = first8bits + digest[1];
return intHashValue;
}
int nodeToId(char ip[], int port){
//To be filled
int id = 1;
int nodeToId(struct sockaddr_in *socketAddr){
char *ip;
char port[6];
int portNumber = socketAddr->sin_port;
ip = inet_ntoa(socketAddr->sin_addr);
int id = (keyToId(ip)+portNumber)%(MAXIDVALUE);
return id;
}
......
......@@ -19,18 +19,39 @@ int keyToId(char * key){
MD5_Init(&context);
MD5_Update(&context, key, strlen(key));
MD5_Final(digest, &context);
unsigned intHashValue;
unsigned char *hexVal;
hexVal = malloc(sizeof(char));
int TwoDigits;
for(int i =0; i<2;i++){
sprintf(hexVal+i,"%02X",digest[i]);
sscanf(hexVal+i,"%x",&TwoDigits);
intHashValue = intHashValue*1000 + TwoDigits;
}
printf("%d\n",intHashValue);
int intHashValue;
int first8bits = digest[0];
first8bits = first8bits<<8;
intHashValue = first8bits + digest[1];
return intHashValue;
}
int nodeToId(struct sockaddr_in *socketAddr){
char *ip;
char port[6];
int portNumber = socketAddr->sin_port;
ip = inet_ntoa(socketAddr->sin_addr);
int id = (keyToId(ip)+portNumber)%(65536);
return id;
}
int main(int argc, char* argv[]) {
int sockfd;
struct sockaddr_in servaddr;
// Creating socket file descriptor
if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
perror("socket creation failed");
exit(EXIT_FAILURE);
}
memset(&servaddr, 0, sizeof(servaddr));
// Filling server information
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(8080);
servaddr.sin_addr.s_addr = inet_addr("190.11.11.10");
nodeToId(&servaddr);
keyToId(argv[1]);
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment