#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define k1 7
#define k2 3
#define k3 15
int main()
{
char plain[100];
printf("请输入明文以加密:");
gets_s(plain);
plain[strlen(plain)] = '\0';
int i;
int num[100];
char cipher[100];
for (i = 0; i < strlen(plain); i++)
{
num[i] = (int)plain[i] - 97;
num[i] = k1 * num[i] + k2;
num[i] = num[i] % 26+97;
cipher[i] = (char)num[i];
}
cipher[strlen(plain)] = '\0';
for (int j = 0; j < strlen(plain); j++)
{
cipher[j] = toupper(cipher[j]);
}
printf("密文为:%s", cipher);
char ciphertext[100];
printf("\n请输入密文以解密:");
gets_s(ciphertext);
ciphertext[strlen(ciphertext)] = '\0';
for (int k = 0; k < strlen(ciphertext); k++)
{
ciphertext[k] = tolower(ciphertext[k]);
}
int j;
int mun[100];
char plaintext[100];
for (j = 0; j < strlen(ciphertext); j++)
{
mun[j] = (int)ciphertext[j] - 97;
mun[j] = k3 * (mun[j] - k2)+5*26;
mun[j] = mun[j] % 26 + 97;
plaintext[j] = (char)mun[j];
}
plaintext[strlen(ciphertext)] = '\0';
printf("明文为:%s", plaintext);
return 0;
}
仿射密码
最新推荐文章于 2024-05-21 13:59:11 发布