/*安全课程加密程序V1.0
*作者:CuiSY
*/
//导入头文件 标准输入输出
#include <stdio.h>
//字符串 提供一些字符串所用的函数
#include <string.h>
//系统函数
#include <stdlib.h>
#include <ctype.h>
/*声明一些变量*/
char ch = '0';/*PS1:char类型应该用单引号*/
char filename[256] = "";//保存输入的数据---文件路径
FILE* fp = NULL;
FILE* fptemp = NULL;
char password[12] = "123456";
const char tempfile[256] = "temp1234567890.temp";
int pwdlen = 0;
int i = 0
/*封装一些函数*/
/*函数声明*/;
void menu();
void inputpass(char* pass);
/*函数实现*/;
void inputpass(char* pass) /*PS2:加分号就是声明函数啦,应该说加了分号这一行就和下面的代码是互不相关的了*/
{
scanf("%s", pass);
}
void menu()
{
printf("****************************************");
printf("*************安全课程小程序*************");
printf("****************************************");
printf("**请输入要加密或解密的文件路径**\n");
printf("**例如:/user/CuiSY/av.txt**\n");
/*步骤一:打开一个文件或目录*/
/*通过字符终端读取一个字符串*/
gets(filename); /*PS3:这里应该用gets,大不了用fgets吧*/
if (NULL == (fp = fopen(filename, "rb")))
{
/*如果不为空,表示文件存在,空的表示文件存在*/
printf("您好!您所输入的文件不存在\n");
/*退出*/
exit(1);
}
/*如果文件存在*/
printf("文件已打开,请输入密码:888888");
inputpass(password);
pwdlen = (int)strlen(password);
if (0 == pwdlen)
{
printf("对不起,密码长度不能为0.\n");
exit(2);
}
/*步骤二:读出文件内容加密*/
fptemp = fopen(tempfile, "wb");
/*步骤三:把加密的信息写入文件覆盖原来的数据*/
while (1)
{
ch = getc(fp);
if (feof(fp))
{
/*判断文件读取完没*/
break;
}
/*每取出一个字符就加密*/
ch*=password[i++];
/*ch里就是加密以后的数据了*/
fputc(ch,fptemp);
//判断
if (i == pwdlen)
{
i = 0;
}
}
//循环结束后 清理
fclose(fp);
fclose(fptemp);
remove(filename);
rename(tempfile, filename);
printf("恭喜你,加密/解密成功!");
}
//主函数 是C语言程序的入口地址
int main(int argc, char const* argv[])
{
/*函数调用*/;
menu();
return 0;
}
|