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 |