- //
- // main.c
- // 异或原理加密
- //
- // Created by 颜风 on 14-4-18.
- // Copyright (c) 2014年 天启传媒. All rights reserved.
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- //
- //异或原理加密1.0
- /*
- 适用于文本,图片,代码(视频)
- */
- //
- //异或原理加密1.0
- /*
- 适用于文本,图片,代码(视频)
- 注意:不支持使用汉字密码!
- */
- //变量的声明
- //保存源文件名称
- char file_name[256] = {0};
- //临时文件名称
- char temp_name[256] = "temp1234567890.temp";
- //密码
- char pass_word[20] = "123456";
- //密码长度
- int pwd_len = 0;
- //全局计数器
- int i =0;
- //文件指针 读
- FILE* infile = NULL;
- //文件指针 写
- FILE* outfile =NULL;
- //临时变量
- char ch = 0;
- /*****************函数的声明*****************/
- //主菜单函数
- void menu();
- //输入密码函数
- void inputpass(char* pass);
- /*****************函数的实现*****************/
- void inputpass(char* pass)
- {
- //是一个字符串,不能加&
- scanf("%s", pass);
- }
- void menu()
- {
- printf("********************************\\n");
- printf("\\t\\t代码加密器1.0\\n");
- printf("\\t\\t\\t\\tBY 颜风\\n");
- printf("********************************\\n");
- printf("请输入一个文件的路径:\\n");
- printf("例:/Users/yan/Desktop/a.txt\\n");
- printf(">>:");
- //获取路径
- gets(file_name);
- //打开文件
- infile = fopen(file_name, "rb");
- //判断
- if (infile == NULL) {
- printf("读不起~文件不存在!\\n");
- //退出程序
- exit(1);
- }
- //输入密码
- printf("请输入密码:");
- inputpass(pass_word);
- //判断密码的长度
- pwd_len = strlen(pass_word);
- //长度
- if (pwd_len == 0) {
- printf("对不起!密码长度不能为零\\n");
- exit(2);
- }
- //都输入正确的情况下
- outfile = fopen(temp_name,"wb");
- //循环读出内容
- while (1) {
- ch = fgetc(infile);
- //判断文件是否读完
- if (feof(infile)) {
- break;
- }
- //核心代码
- ch ^= pass_word[i++];
- //加密以后的数据保存IO
- fputc(ch, outfile);
- //判断你的密码长度
- if (i == pwd_len) {
- i=0;
- }
- }
- //关闭文件
- fclose(infile);
- fclose(outfile);
- //删除源文件,重命名新文件
- remove(file_name);
- rename(temp_name, file_name);
- //加密完成
- printf("恭喜你~加密/解密成功!\\n");
- }
- //函数调用
- int main(int argc, const char * argv[])
- {
- menu();
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/1809201410476.html
来源: http://www.codesnippet.cn/detail/1809201410476.html