728x90
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//암호화 함수
void encryption(char* text, int shift) {
int len = strlen(text);
//text의 길이를 계산한다.
for (int i = 0; i < len; i++) {
if (text[i] >= 'A' && text[i] <= 'Z') {
text[i] = ((text[i] - 'A') + shift) % 26 + 'A';
}
// 문자가 대문자인 경우, 'A'부터 거리를 계산하여 0부터 25사이의 값을 변환한다.
// shift만큼 오른쪽으로 문자를 밀어주고, 알파벳의 개수인 26으로 나누어 0부터 25사이의 값을 만든다.
// 다시 대문다 A부터 ASCII값으로 변환하여 암호화된 문자를 얻는다.
else if (text[i] >= 'a' && text[i] <= 'z') {
text[i] = ((text[i] - 'a') + shift) % 26 + 'a';
}
// 소문자 또한 대문자랑 똑같은 방법으로 계산해준다.
}
}
int main() {
char text[100] = "This Caesar Cipher";
int num = 1;
encryption(text,num);
printf("%s\n", text);
encryption(text, -num);
printf("%s\n", text);
}
'S-DEV > 암호학' 카테고리의 다른 글
Vigenere 코드 (0) | 2023.07.16 |
---|---|
암호학 개론 (0) | 2023.07.08 |