Community

C언어의 해싱 코드 구성

안녕하세요  프로젝트를 하고 있는데요 c언어로 해싱 및 복호화 과정을 코드로 간단히 작성하고 발표를 할건데요 우리가 3가지 방법을 선택했습니다  1. 제산함수  2. 중간제곱함수  3. 폴딩함수 완성을 못하고 있습니다  도와주실 수 있을까요 #include #include #include #define MAX_CODE_LENGTH 50 // 암호화된 코드를 저장하는 배열 char encryptedArray[5][MAX_CODE_LENGTH]; //제산 해시함수  /* 문자열 -> 문자의 아스키코드를 모두 더한 값,     숫자 -> 각 숫자를 모두 더한 값을 해시값으로 선정) */ int additiveHash(char* code) {     int hash = 0;     for (int i = 0; i = '0' && inputCode[0] codes[i % 5][0] != '\0') { // i%5의 위치가 비어 있는지 확인             hashValue += i; // 비어있지 않다면? -> 충돌 발생, hashvalue에 i를 더하여 다음 위치 계산, 새로운 해시 값 얻을 수 있음             i++;         }     } else {             // 홀수인 경우 체이닝             int index = hashValue % 5; // hashValue를 배열의 크기로 나눈 나머지를 취해 배열 내 위치 저장 결정             while (encryptedCodes->codes[index][0] != '\0') { // 선택한 인덱스에 다른 코드가 존재하는지 확인                 index = (index + 1) % 5; // 충돌이 발생하면 다음 슬롯으로 이동하여 빈 슬롯을 찾기위해 인덱스를 증가시킴             }             hashValue = index;         }     sprintf(encryptedArray[hashValue % 5], "%d", hashValue); // 해싱된 값을 암호화 한 배열에 저장     strcpy(encryptedCodes->codes[hashValue % 5], inputCode); // 암호화 이전 코드를 복호화 목록에 저장     printf("암호화 완료! 해싱된 코드: %d\n", hashValue); } // 사전 코드 출력 함수 void printAdvancedCodes(char advancedCode[][5], int numCodes) {     printf("\n--- 사전 코드 목록 ---\n");     for (int i = 0; i codes[i]); //원래의 사전 코드 번호와, 사전 코드가 나옴         }     }     printf("------------------------\n");     // 배열 초기화     for (int i = 0; i codes[i][0] = '\0';     }     encryptedCodes->count = 0;     printf("복호화 완료! 배열 초기화됨.\n"); } int main() {     char advancedCode[5][5]; // 최대 5개의 코드를 저장할 배열     int numCodes = 5; // 저장할 코드의 개수     enterAdvancedCodes(advancedCode, numCodes);     EncryptedCodes encryptedCodes;     encryptedCodes.count = 0;     while (1) {         int choice = showMenu();         switch (choice) {             case 0: //사전코드 출력                 printAdvancedCodes(advancedCode, numCodes);                 break;             case 1: // 암호화 하기                 encrypt(&encryptedCodes, advancedCode, numCodes);                 break;             case 2: // 암호화 된거 출력                 printEncryptedArray();                 break;             case 3: // 복호화 된거 출력 후 초기화                 decrypt(&encryptedCodes);                 break;             case 4: // 종료                 printf("프로그램을 종료합니다.\n");                 return 0;             default:                 printf("올바른 메뉴 번호를 선택하세요.\n");         }     }     return 0; }

알림

알림이 없습니다