본문 바로가기

S-DEV/암호학

Caesar Ciper 암호화 코드

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