S-DEV/암호학

Vigenere 코드

철민1234 2023. 7. 16. 13:20
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;
}
댓글수0