알파벳 소문자 a~z까지를 대상으로 비즈네르 암호를 통한 암호화, 복호화를 수행함.
int main(){ int i = 0; int j = 0; int key_size = 0; int str_size = 0; int select = 1; char *str = (char *)malloc(sizeof(char) * 50); char *key = (char *)malloc(sizeof(char) * 16); printf("암호문 또는 평문을 입력 : "); gets(str); printf("암호는 1번, 복호는 2번을 선택 : "); scanf("%d",&select); fflush(stdin); printf("키 값을 입력 : "); gets(key); str_size = strlen(str); key_size = strlen(key); for (i = 0; i < str_size; i++){ j = i % key_size; //모듈러 연산을 통한 키값 순환 if (select == 1){ //암호화 부분 if ((str[i] >= 'a') && (str[i] <= 'z')){ str[i] -= 'a'; key[j] -= 'a'; if ((str[i] + key[j]) < 0){ str[i] += 26; } str[i] = (str[i] + key[j]) % 26; //비즈네르 표 적용 str[i] += 'a'; key[j] += 'a'; } } if (select == 2){ //복호화 부분 if ((str[i] >= 'a') && (str[i] <= 'z')){ str[i] -= 'a'; key[j] -= 'a'; if ((str[i] - key[j]) < 0){ str[i] += 26; } str[i] = (str[i] - key[j]) % 26; //비즈네르 표 적용 str[i] += 'a'; key[j] += 'a'; } } } printf("\n암호화, 복호화된 결과 출력 :"); puts(str); return 0; }
'암호학' 카테고리의 다른 글
비즈네르 암호 (Vigenere Cipher) (0) | 2014.06.28 |
---|---|
시저암호 소스 (0) | 2014.06.27 |
시저 암호 (Caesar Cipher) (0) | 2014.06.27 |