建立一个简单的字符对换加密程序,实现其加密及解密过程。 要求如下: a、使用N行2列的二维数组存储一个字符对换表 b、读取键盘输入的一段明文 c、调用自己的加密函数进行加密,输出密文 d、调用自己的解密函数对密文进行解密,输出结果应和明文一致。
时间: 2024-05-11 17:16:50 浏览: 40
自己做的简单的字符加密解密工具
好的,我会尽力回答您的问题。关于字符对换加密程序,您可以按照以下要求实现:
a、定义一个N行2列的二维数组,其中每一行都存储着两个字符,用于将明文中的一个字符替换为另一个字符,从而实现加密和解密。
例如,定义一个4行2列的数组:
```
char table[4][2] = {
{'A', 'X'},
{'B', 'Y'},
{'C', 'Z'},
{'D', 'W'}
};
```
上面的数组中,明文中的'A'将被替换为'X','B'将被替换为'Y',以此类推。
b、读取键盘输入的一段明文,并将其存储到一个字符数组中。
例如,使用以下代码读取用户输入的明文:
```
char plaintext[100];
printf("请输入要加密的明文:");
gets(plaintext);
```
c、实现自己的加密函数。该函数应接受一个字符数组作为输入,将明文中的每个字符替换为对应的加密后字符,并将加密后的结果存储到另一个字符数组中,最后输出加密后的密文。
例如,以下是一个简单的加密函数实现:
```
void encrypt(char *plaintext, char *ciphertext, char table[][2], int n) {
int i, j;
for (i = 0; plaintext[i] != '\0'; i++) {
for (j = 0; j < n; j++) {
if (plaintext[i] == table[j][0]) {
ciphertext[i] = table[j][1];
break;
}
}
if (j == n) {
ciphertext[i] = plaintext[i];
}
}
ciphertext[i] = '\0';
printf("加密后的密文为:%s\n", ciphertext);
}
```
该函数接受明文、字符对换表、字符对数作为参数,依次遍历明文中的每个字符。对于每个字符,它会在字符对换表中查找是否存在对应的加密字符。如果存在,则将该字符替换为加密字符,否则保持不变。加密后的结果存储到一个字符数组中,并输出加密后的密文。
d、实现自己的解密函数。该函数应接受一个字符数组作为输入,将密文中的每个字符替换为对应的解密后字符,并将解密后的结果存储到另一个字符数组中,最后输出解密后的明文。
例如,以下是一个简单的解密函数实现:
```
void decrypt(char *ciphertext, char *plaintext, char table[][2], int n) {
int i, j;
for (i = 0; ciphertext[i] != '\0'; i++) {
for (j = 0; j < n; j++) {
if (ciphertext[i] == table[j][1]) {
plaintext[i] = table[j][0];
break;
}
}
if (j == n) {
plaintext[i] = ciphertext[i];
}
}
plaintext[i] = '\0';
printf("解密后的明文为:%s\n", plaintext);
}
```
该函数接受密文、字符对换表、字符对数作为参数,依次遍历密文中的每个字符。对于每个字符,它会在字符对换表中查找是否存在对应的解密字符。如果存在,则将该字符替换为解密字符,否则保持不变。解密后的结果存储到一个字符数组中,并输出解密后的明文。
接下来,您可以在主函数中调用以上加解密函数进行加密和解密操作。
例如,以下是一个简单的主函数示例:
```
int main() {
char plaintext[100], ciphertext[100], decrypted[100];
char table[4][2] = {
{'A', 'X'},
{'B', 'Y'},
{'C', 'Z'},
{'D', 'W'}
};
int n = 4;
printf("请输入要加密的明文:");
gets(plaintext);
encrypt(plaintext, ciphertext, table, n);
decrypt(ciphertext, decrypted, table, n);
return 0;
}
```
在以上代码中,首先定义了一个字符对换表和对数,然后读取用户输入的明文,并调用加密函数加密明文。接着,调用解密函数对加密后的密文进行解密,最后输出解密后的明文。
阅读全文