c语言编写程序1) 写一个加密程序,对文件1txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。采用下面的简单加密算法: 1)读入密钥的key是一个字符串; 2)明文中字符c的密文为c^key[i]; 3)循环使用key中的各个字符,直至处理完全部明文。如果key为空,则不作加密 4)解密时,用同一个key重新加密密文,就可以得到明文。 【输入形式】 从标准输入流中读入一个密钥串,使用其对当前目录下的文件1txt进行加密。 【输出形式】 将文件密文输出到文件2txt 【输入样例】 输入密钥为: hello 1txt文件内容为 Alcatel provides end-to-end solutions. It enables enterprises to deliver content to any type of user. 【输出样例】 输出密文到2txt文件中。 【样例说明】 从标准输入中读入一个密钥对文件1txt加密,并将文件密文输出到2txt文件中。 提示:可将得到的密文文件2txt拷贝到1txt文件中,并用原密钥对该文件再次加密,若得到的密文文件与原始文件相同,则说明程序算法正确。
时间: 2024-03-22 13:38:35 浏览: 161
以下是一个可能的C语言加密程序实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_KEY_LEN 100
int main() {
char key[MAX_KEY_LEN + 1];
FILE *fin, *fout;
int key_len, i, j = 0, c;
// 读入密钥
printf("请输入密钥:");
fgets(key, MAX_KEY_LEN + 1, stdin);
key_len = strlen(key) - 1;
// 打开输入和输出文件
fin = fopen("1.txt", "r");
fout = fopen("2.txt", "w");
// 加密文件
while ((c = fgetc(fin)) != EOF) {
if (key_len > 0) {
c ^= key[j];
j = (j + 1) % key_len;
}
fputc(c, fout);
}
// 关闭文件
fclose(fin);
fclose(fout);
printf("加密完成。\n");
return 0;
}
```
解密程序实现与加密程序类似,只需将加密操作改为异或解密操作即可。注意,对于解密程序也需要输入相同的密钥串。
相关问题
c语言编写程序1) 写一个加密程序,对文件1txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。采用下面的简单加密算法: 1)读入密钥的key是一个字符串; 2)明文中字符c的密文为c^key[i]; 3)循环使用key中的各个字符,直至处理完全部明文。如果key为空,则不作加密 4)解密时,用同一个key重新加密密文,就可以得到明文。 【输入形式】 从标准输入流中读入一个密钥串,使用其对当前目录下的文件1txt进行加密。 【输出形式】 将文件密文输出到文件2txt
好的,这是一个比较具体的编程问题,我将帮你解答。
首先,你需要明确一些基本概念:
- 密钥(key):一个字符串,用于加密和解密文件。
- 明文(plaintext):未加密的文件内容。
- 密文(ciphertext):加密后的文件内容。
接下来,我们可以根据上述要求编写程序。具体步骤如下:
1. 从标准输入中读取密钥。
```c
char key[100];
scanf("%s", key);
```
2. 打开文件1.txt,并读取明文内容。
```c
FILE *fp_in = fopen("1.txt", "r");
char plaintext[1000];
fgets(plaintext, 1000, fp_in);
fclose(fp_in);
```
3. 对明文进行加密。
```c
int key_len = strlen(key);
int plain_len = strlen(plaintext);
char ciphertext[1000] = {0};
for (int i = 0; i < plain_len; i++) {
if (key_len == 0) {
ciphertext[i] = plaintext[i];
} else {
char k = key[i % key_len];
ciphertext[i] = plaintext[i] ^ k;
}
}
```
4. 将密文输出到文件2.txt。
```c
FILE *fp_out = fopen("2.txt", "w");
fputs(ciphertext, fp_out);
fclose(fp_out);
```
完整代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char key[100];
scanf("%s", key);
FILE *fp_in = fopen("1.txt", "r");
char plaintext[1000];
fgets(plaintext, 1000, fp_in);
fclose(fp_in);
int key_len = strlen(key);
int plain_len = strlen(plaintext);
char ciphertext[1000] = {0};
for (int i = 0; i < plain_len; i++) {
if (key_len == 0) {
ciphertext[i] = plaintext[i];
} else {
char k = key[i % key_len];
ciphertext[i] = plaintext[i] ^ k;
}
}
FILE *fp_out = fopen("2.txt", "w");
fputs(ciphertext, fp_out);
fclose(fp_out);
return 0;
}
```
注意,上述代码中仅仅是一个简单的例子,没有对输入的数据进行校验和错误处理。在实际编程中,还需要考虑更多的情况,如输入的密钥是否合法、文件是否存在等等。
c语言编写加密文件 【问题描述】 1) 写一个加密程序,对文件1txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。采用下面的简单加密算法: 1)读入密钥的key是一个字符串; 2)明文中字符c的密文为c^key[i]; 3)循环使用key中的各个字符,直至处理完全部明文。如果key为空,则不作加密 4)解密时,用同一个key重新加密密文,就可以得到明文。 【输入形式】 从标准输入流中读入一个密钥串,使用其对当前目录下的文件1txt进行加密。 【输出形式】 将文件密文输出到文件2txt 【输入样例】 输入密钥为: hello 1txt文件内容为 Alcatel provides end-to-end solutions. It enables enterprises to deliver content to any type of user. 【输出样例】 输出密文到2txt文件中。 【样例说明】 从标准输入中读入一个密钥对文件1txt加密,并将文件密文输出到2txt文件中。 提示:可将得到的密文文件2txt拷贝到1txt文件中,并用原密钥对该文件再次加密,若得到的密文文件与原始文件相同,则说明程序算法正确。
以下是C语言实现加密文件的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int main() {
char key[MAX_LEN];
char plain[MAX_LEN];
char cipher[MAX_LEN];
int key_len, plain_len, i, j;
// 读入密钥
printf("输入密钥为: ");
scanf("%s", key);
key_len = strlen(key);
// 读入明文
FILE *fp1, *fp2;
fp1 = fopen("1.txt", "r");
fp2 = fopen("2.txt", "w");
fgets(plain, MAX_LEN, fp1);
plain_len = strlen(plain);
// 加密明文
j = 0;
for (i = 0; i < plain_len; i++) {
if (j == key_len) j = 0; // 循环使用key中的各个字符
if (key_len == 0) {
cipher[i] = plain[i]; // key为空,则不作加密
} else {
cipher[i] = plain[i] ^ key[j];
j++;
}
}
cipher[i] = '\0';
// 输出密文
fputs(cipher, fp2);
// 关闭文件
fclose(fp1);
fclose(fp2);
return 0;
}
```
加密算法的实现非常简单,只需要逐个读取明文字符,与密钥中的字符异或,得到密文字符。
解密时,只需要重新用同一个密钥加密密文即可得到原来的明文。
阅读全文