affine Cipher(아핀 암호) for c언어

2020. 11. 26. 23:10암호학/C언어

#include <stdio.h>
#include <string.h>
char SYMBOLS[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.";
char* encrypt_message(int key, char *b)
// char* encrypt_message(int *key, char b[])
{
	int key_a, key_b;
	char ciphertext[200] = "";
	int i = 0;
	int j = 0;
	int index;
	char tmp[] = " ";
	int num;
	printf("key : %d\n", key);
	printf("Origine text : %s\n", b);
	printf("symbol length is : %d\n", strlen(SYMBOLS));
	key_a = key / strlen(SYMBOLS);
	key_b = key % strlen(SYMBOLS);
	//printf("%d %d\n\n", key_a, key_b);
	//printf("%c\n", b[0]);
	for (i = 0; i < strlen(b); i++) {
		//printf("%c", b[i]);
		num = 0;
		for (j = 0; j < strlen(SYMBOLS); j++)
		{
			if (b[i] == SYMBOLS[j])
			{ 
				ciphertext[i] = SYMBOLS[(j * key_a + key_b) % strlen(SYMBOLS)];
				//printf("%c %d\n", b[i], j);
				num = 1;
			}
		}
		if (num == 0)
		{
			ciphertext[i] = b[i];
			//printf("%c %d\n", b[i], j);
		}
	}
	printf("Encrypted text : %s\n", ciphertext);
	return 0;
}
int main()
{
	char my_message[] = "A computer would deserve to be called intelligent if it could deceive a human into believing that it was human. - Alan Turing";
	//printf("%s", my_message);
	char *result;
	int my_key = 2894;
	char my_mode[] = "encrypt";
	//printf("%s\n", my_mode);
	//char my_mode[] = "decrypt";
	//printf("%d\n", strcmp(my_mode, "encrypt"));
	if (strcmp(my_mode, "encrypt") == 0)
		printf("mode is encrypt\n");
		encrypt_message(my_key, my_message);
	return 0;
}

'암호학 > C언어' 카테고리의 다른 글

sha-1  (0) 2021.05.13
sha-1  (0) 2021.05.12
Caesar Cipher(시저 암호) for C언어  (0) 2020.11.30
C언어 / 입력한 문자 거꾸로 출력  (0) 2020.11.29
C언어 / scanf 기본 출력  (0) 2020.11.29