×

Mã Hóa Và Giải Mã Bằng Mã Hóa Caesar Trong C

Mã hóa Caesar là một phương pháp mã hóa rất cơ bản, trong đó mỗi chữ cái trong văn bản gốc được dịch chuyển một số lượng xác định các vị trí trong bảng chữ cái. Ví dụ, với một sự dịch chuyển là 3, 'A' sẽ được mã hóa thành 'D', 'B' thành 'E', v.v. Mã hóa và giải mã một chuỗi sử dụng mã hóa Caesar trong ngôn ngữ lập trình C có thể thực hiện như sau:

Mã hóa Caesar

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

void caesarEncrypt(char* text, int shift) {
    int i = 0;
    while (text[i] != '\0') {
        char c = text[i];
        if (c >= 'a' && c <= 'z') {
            c = (c - 'a' + shift) % 26 + 'a';
        } else if (c >= 'A' && c <= 'Z') {
            c = (c - 'A' + shift) % 26 + 'A';
        }
        text[i] = c;
        i++;
    }
}

void caesarDecrypt(char* text, int shift) {
    int i = 0;
    while (text[i] != '\0') {
        char c = text[i];
        if (c >= 'a' && c <= 'z') {
            c = (c - 'a' - shift + 26) % 26 + 'a';
        } else if (c >= 'A' && c <= 'Z') {
            c = (c - 'A' - shift + 26) % 26 + 'A';
        }
        text[i] = c;
        i++;
    }
}

int main() {
    char text[] = "Hello, World!";
    int shift = 3;

    printf("Original text: %s\n", text);

    caesarEncrypt(text, shift);
    printf("Encrypted text: %s\n", text);

    caesarDecrypt(text, shift);
    printf("Decrypted text: %s\n", text);

    return 0;
}

Trong ví dụ này:

  • Hàm caesarEncrypt nhận vào một chuỗi text và số lượng dịch chuyển shift, sau đó mã hóa chuỗi sử dụng mã hóa Caesar.
  • Hàm caesarDecrypt thực hiện ngược lại quá trình của caesarEncrypt, giúp giải mã chuỗi đã được mã hóa.
  • Đối với mỗi ký tự trong chuỗi, chương trình kiểm tra xem nó có phải là chữ cái viết thường hay viết hoa và áp dụng sự dịch chuyển tương ứng. Sự dịch chuyển được điều chỉnh để không vượt qua 'z' hoặc 'Z' và quay lại 'a' hoặc 'A' nếu cần.

Lưu ý: Mã trên chỉ xử lý các ký tự chữ cái và bỏ qua các ký tự khác như dấu câu và khoảng trắng.

Comments