[Toy] [C] 加密程序
原因
其实本身没有什么特别的原因,只是想写一个软件练练手罢了
如何使用 (How to use)
1.输入密钥(如NB666)
2.输入文件名(须在此程序路径下或直接输入绝对路径)
或者
在使用前直接将需加密文件拖动到本程序上
就可以不输入文件名直接加密(推荐)(较为方便)
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int cl,char* data[]) {
printf("请输入你的密钥");
char Password[256];
long pwl = 0;
fgets(Password, 256, stdin);
for (int i = 0; Password[i] != '\n'; i++)
pwl += Password[i];
char filename[256];
if (cl < 2)
{
printf("输入要加密的文件: ");
fgets(filename, sizeof(filename), stdin);
}
else
strcpy_s(filename,256,data[1]);
filename[strcspn(filename, "\n")] = 0; // 去除换行符
int i = strcspn(filename, ".");
char fn_bh[20] = { 0 };
strcpy_s(fn_bh, 20, &filename[i]);
FILE* inputFile = nullptr;
fopen_s(&inputFile, filename, "rb");
if (!inputFile) {
perror("文件打开失败");
return 1;
}
fseek(inputFile, 0, SEEK_END);
long fileSize = ftell(inputFile);
fseek(inputFile, 0, SEEK_SET);
char* fileBuffer = (char*)malloc(fileSize);
if (!fileBuffer) {
perror("内存分配失败");
fclose(inputFile);
return 1;
}
fread(fileBuffer, 1, fileSize, inputFile);
fclose(inputFile);
for (long i = 0; i < fileSize; i++) {
fileBuffer[i] ^= pwl; // 简单异或加密
}
FILE* outputFile = nullptr;
fopen_s(&outputFile,"encrypted.bin", "wb");
if (!outputFile) {
perror("加密文件创建失败");
free(fileBuffer);
return 1;
}
fwrite(fileBuffer, 1, fileSize, outputFile);
fclose(outputFile);
free(fileBuffer);
printf("加密完成!\n");
return 0;
}
char* s(char* data) {
printf("请输入你的密钥");
char Password[256];
long pwl = 0;
fgets(Password, 256, stdin);
for (int i = 0; Password[i] != '\n'; i++)
pwl += Password[i];
char filename[256];
strcpy_s(filename, 256, data);
filename[strcspn(filename, "\n")] = 0; // 去除换行符
int i = strcspn(filename, ".");
char fn_bh[20] = { 0 };
strcpy_s(fn_bh, 20, &filename[i]);
FILE* inputFile = nullptr;
fopen_s(&inputFile, filename, "rb");
if (!inputFile) {
perror("文件打开失败");
return (char*)"e";
}
fseek(inputFile, 0, SEEK_END);
long fileSize = ftell(inputFile);
fseek(inputFile, 0, SEEK_SET);
char* fileBuffer = (char*)malloc(fileSize);
if (!fileBuffer) {
perror("内存分配失败");
fclose(inputFile);
return (char*)"n";
}
fread(fileBuffer, 1, fileSize, inputFile);
fclose(inputFile);
for (long i = 0; i < fileSize; i++) {
fileBuffer[i] ^= pwl; // 简单异或加密
}
return fileBuffer;
}