图片加密c程序
时间: 2023-08-23 17:06:48 浏览: 57
以下是一个简单的图片加密/解密 C 程序示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define KEY 0xAA // 加密密钥
// 函数声明
void encrypt(FILE *in_file, FILE *out_file);
void decrypt(FILE *in_file, FILE *out_file);
int main(int argc, char *argv[]) {
// 检查命令行参数
if (argc != 4) {
printf("Usage: %s [option] [input_file] [output_file]\n", argv[0]);
printf("Options:\n");
printf(" -e : Encrypt the input file\n");
printf(" -d : Decrypt the input file\n");
return 1;
}
char *option = argv[1];
char *in_filename = argv[2];
char *out_filename = argv[3];
FILE *in_file = fopen(in_filename, "rb");
FILE *out_file = fopen(out_filename, "wb");
// 检查文件是否成功打开
if (in_file == NULL || out_file == NULL) {
printf("Failed to open file!\n");
return 1;
}
// 根据选项进行加密或解密
if (option[1] == 'e') {
encrypt(in_file, out_file);
printf("Encryption complete!\n");
} else if (option[1] == 'd') {
decrypt(in_file, out_file);
printf("Decryption complete!\n");
} else {
printf("Invalid option!\n");
return 1;
}
// 关闭文件
fclose(in_file);
fclose(out_file);
return 0;
}
// 加密函数
void encrypt(FILE *in_file, FILE *out_file) {
int ch;
while ((ch = fgetc(in_file)) != EOF) {
fputc(ch ^ KEY, out_file);
}
}
// 解密函数
void decrypt(FILE *in_file, FILE *out_file) {
int ch;
while ((ch = fgetc(in_file)) != EOF) {
fputc(ch ^ KEY, out_file);
}
}
```
使用方法:
将上面的代码保存为 `image_encrypt.c`,然后通过以下命令编译:
```bash
gcc image_encrypt.c -o image_encrypt
```
然后,使用以下命令来加密或解密图片文件:
```bash
./image_encrypt -e input_file.jpg output_file.jpg # 加密
./image_encrypt -d output_file.jpg input_file.jpg # 解密
```
其中,`input_file.jpg` 是要加密的图片文件,`output_file.jpg` 是加密后输出的文件。对于解密,需要将输入和输出文件名顺序互换。