一个简单且安全的文件加密算法
来源:互联网 发布:百威pos9000软件下载 编辑:程序博客网 时间:2024/04/29 21:46
如果你有秘密资料,不想别人看,那么你可以利用下面的加密解密方法(我们不妨假定文件不超过1G)。
加解密原理:将文件中的0和1按照某种法则进行变化,代码如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>#define KEY 729520 // 加密密码#define FILE_NAME_MAX_SIZE 100 // 文件名长度// 变换法则int genFun(int size, int key, int i){return size + key + i - size / key;}// 获得文件大小int getFileSize(char str[]){FILE *fp = fopen(str, "rb"); fseek( fp, 0, SEEK_END ); int size = ftell(fp);fclose(fp);return size;}// 文件加密void encrypt(char toBeEncFileName[], int key){char newFileName[FILE_NAME_MAX_SIZE] = {'i', 'j', 'k'}; strcat(newFileName, toBeEncFileName);FILE *fp1 = fopen(toBeEncFileName, "rb");FILE *fp2 = fopen(newFileName, "wb");int i, s, t, size = getFileSize(toBeEncFileName);for(i = 0; i < size; i++){s = getc(fp1);t = genFun(size, key, i) ^ s; // 加密putc(t, fp2);}fclose(fp1);fclose(fp2);}int main(){printf("这是一个文件加密软件!\n");printf("请输入您的加密身份认证:");int key;scanf("%d", &key);if(KEY != key){printf("身份认证错误!\n");exit(1);}printf("请输入文件的文件名(包括后缀):");char fileName[FILE_NAME_MAX_SIZE];scanf("%s", fileName);encrypt(fileName, KEY);printf("加密完成!\n");return 0;}加密界面为:
下面附上解密代码:
#include <stdio.h>#include <stdlib.h>#include <string.h>#define KEY 729520 // 解密密码#define FILE_NAME_MAX_SIZE 100 // 文件名长度// 变换法则int genFun(int size, int key, int i){return size + key + i - size / key;}// 获得文件大小int getFileSize(char str[]){FILE *fp = fopen(str, "rb"); fseek( fp, 0, SEEK_END ); int size = ftell(fp);fclose(fp);return size;}// 文件解密void decrypt(char toBeDecFileName[], int key){char newFileName[FILE_NAME_MAX_SIZE] = {'i', 'j', 'k'}; strcat(newFileName, toBeDecFileName);FILE *fp1 = fopen(toBeDecFileName, "rb");FILE *fp2 = fopen(newFileName, "wb");int i, s, t, size = getFileSize(toBeDecFileName);for(i = 0; i < size; i++){s = getc(fp1);t = genFun(size, key, i) ^ s; // 解密putc(t, fp2);}fclose(fp1);fclose(fp2);}int main(){printf("这是一个文件解密软件!\n");printf("请输入密码:");int key;scanf("%d", &key);if(KEY != key){printf("密码错误!\n");exit(1);} printf("请输入文件的文件名(包括后缀):");char fileName[FILE_NAME_MAX_SIZE];scanf("%s", fileName);decrypt(fileName, key);printf("解密完成!\n");return 0;}
- 一个简单且安全的文件加密算法
- 一个简单的加密算法(注册码)
- 一个有意思的简单的SAS加密算法
- 自己设计的一个简单高速加密算法
- 菜鸟求助:一个简单的数字加密算法
- 一个简单的异或加密算法
- [python]rsa加密算法的一个简单实现
- 一个简单的公私钥加密算法
- 最安全的加密算法
- paip.提升安全性---选择一个安全的加密算法
- 一个简单的加密算法(通用于java和OC的简单加密算法)
- 加密算法不是线程安全的
- java 中 DES 加密算法的一个简单实现
- 一个简单的加密算法Kaiser(C语言实现)
- 一个简单的MD5加密算法C语言示例程序
- 一个简单的MD5加密算法C语言示例程序
- 一个简单的MD5加密算法C语言示例程序
- 最简单 的 加密算法
- OpenGL样板程序,会转动的正方形
- android shape的使用
- 黑马程序员--API中其他常用的类
- HDU 1503
- 获得用户身份C#
- 一个简单且安全的文件加密算法
- android:shape的使用2
- Android SparseArray替代HashMap
- 在JAVA中使用JSONObject生成json
- LinuxC/C++编程基础(25) “心跳”信息的处理
- Linux 文件系统剖析:剖析 ext4 了解第 4 个扩展文件系统
- 第十七周上机项目1:指针法排序
- ubuntu 下载编译android源代码
- 字符串---统计数字个数