반응형
C언어를 이용한 다양한 암호화 방법이 있습니다.
여기서는 일반 텍스트의 각 문자가 고정된 위치만큼 이동되는 간단한 Caesar 암호화 방법을 이용해서 입력 받은 문자열을 암호화하고 다시 복호화 하는 C언어 코드를 설명합니다.
shift로 사용되는 변수는 문자열이 이동되는 크기를 나타내는 값으로 임의의 값으로 수정할 수 있습니다.
영문자만 shift 연산을 수행합니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void encrypt(char* text, int shift) {
for (int i = 0; text[i] != '\0'; ++i) {
if (text[i] >= 'a' && text[i] <= 'z') {
text[i] = (text[i] - 'a' + shift) % 26 + 'a';
}
else if (text[i] >= 'A' && text[i] <= 'Z') {
text[i] = (text[i] - 'A' + shift) % 26 + 'A';
}
}
}
void decrypt(char* text, int shift) {
for (int i = 0; text[i] != '\0'; ++i) {
if (text[i] >= 'a' && text[i] <= 'z') {
text[i] = (text[i] - 'a' - shift + 26) % 26 + 'a';
}
else if (text[i] >= 'A' && text[i] <= 'Z') {
text[i] = (text[i] - 'A' - shift + 26) % 26 + 'A';
}
}
}
int main() {
char message[100];
int shift = 10;
// Input message
printf("Enter message: ");
fgets(message, sizeof(message), stdin);
// Input shift value
// printf("Enter shift value: ");
// scanf("%d", &shift);
// Encrypt the message
encrypt(message, shift);
// Display the encrypted message
printf("\nEncrypted message: %s", message);
// Decrypt the message
decrypt(message, shift);
// Display the decrypted message
printf("Decrypted message: %s\n", message);
return 0;
}
(Output)
Enter message: hello123 HELLO987
Encrypted message: rovvy123 ROVVY987
Decrypted message: hello123 HELLO987
반응형
'C_C++' 카테고리의 다른 글
(C언어) ltrim(), rtrim() 함수 구현: 문자열에서 앞쪽 뒤쪽 공백 제거 (1) | 2023.11.24 |
---|---|
(C언어) trim() 함수 구현: 문자열에서 양쪽 공백 제거하기 (1) | 2023.11.24 |
(C언어) 이진 탐색 트리(BTS, Binary Search Tree)에서 노드의 삽입 삭제 검색 (0) | 2023.11.08 |
(C언어) 연결 리스트(linked list)를 이용한 스택(stack) 구현하기 (0) | 2023.11.04 |
(C언어) 연결 리스트로 이진 트리 구현 (0) | 2023.11.01 |