본문 바로가기

S-DEV/암호학

Vigenere 코드

728x90
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

void vigenere_encryption(char* text, char* key) {
    int text_len = strlen(text);
    int key_len = strlen(key);

    for (int i = 0; i < text_len; i++) {
        if (text[i] >= 'A' && text[i] <= 'Z') {
            text[i] = ((text[i] - 'A' + key[i % key_len] - 'A') % 26) + 'A';
        }
        // 
        else if (text[i] >= 'a' && text[i] <= 'z') {
            text[i] = ((text[i] - 'a' + key[i % key_len] - 'a') % 26) + 'a';
        }
    }
}

int main() {
    char text[100] = "This Vigenere Cipher";
    char key[100] = "KEY";

    vigenere_encryption(text, key);
    printf("Encrypted Text: %s\n", text);

    return 0;
}

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

void vigenere_decryption(char* text, char* key) {
    int text_len = strlen(text);
    int key_len = strlen(key);

    for (int i = 0; i < text_len; i++) {
        if (text[i] >= 'A' && text[i] <= 'Z') {
            text[i] = ((text[i] - 'A' - (key[i % key_len] - 'A') + 26) % 26) + 'A';
        }
        else if (text[i] >= 'a' && text[i] <= 'z') {
            text[i] = ((text[i] - 'a' - (key[i % key_len] - 'a') + 26) % 26) + 'a';
        }
    }
}

int main() {
    char text[100] = "This Vigenere Cipher";
    char key[100] = "KEY";

    vigenere_decryption(text, key);
    printf("Decrypted Text: %s\n", text);

    return 0;
}

'S-DEV > 암호학' 카테고리의 다른 글

Caesar Ciper 암호화 코드  (0) 2023.07.16
암호학 개론  (0) 2023.07.08