#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
int key1[2][2] = { 3,2,5,7 };
int key2[2][2] = { 3,14,9,5 };
printf("请输入明文以加密");
char plaintext[100];
gets_s(plaintext);
plaintext[strlen(plaintext)] = '\0';
int cou = strlen(plaintext);
if (strlen(plaintext) % 2 == 1)
{
plaintext[cou+1] = plaintext[cou];
plaintext[cou] = 'a';
}
//使明文个数为偶数方便加密
int plaintext_num[100];
int i;
for (i = 0; i < strlen(plaintext); i++)
{
plaintext_num[i] = (int)plaintext[i] - 97;
}//将明文转换成数字;
char ciphertext[100];
int ciphertext_num[100];
for (i = 0; i < strlen(plaintext)-1; i=i+2)
{
ciphertext_num[i] = plaintext_num[i] * key1[0][0] + plaintext_num[i + 1] * key1[1][0];
ciphertext_num[i] = ciphertext_num[i] % 26+97;
ciphertext_num[i + 1] = plaintext_num[i] * key1[0][1] + plain
Hill密码
最新推荐文章于 2024-07-19 14:50:02 发布