吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3368|回复: 6
上一主题 下一主题
收起左侧

[C&C++ 转载] 简易加密解密文件工具

   关闭 [复制链接]
跳转到指定楼层
楼主
4455159211 发表于 2022-3-16 10:02 回帖奖励
背景: 之前一个客户需要加密解密他自己的工作文件,所以请我编写了一个小工具,当时为了快速弄完所以就用Java写的UI与算法,打包成JAR给他使用的,本来核心代码不多,但要运行Java代码就需要JRE环境,所以导致打的包很大.
改进: 这次我将小工具的算法用C语言重新编写了,目前在macOS上测试通过, 预计Linux也可以的, Windows没有尝试.
算法: 对文件的每个byte进行反码一次为加密,再次反码则解密,没有添加其他更复杂的算法,所以比较简易.
说明: 1. 加密解密后的扩展名未自动添加 2. 暂没有对文件夹加密与解密  3. C语言新手,请赐教,谢谢~~~
效果图:


代码:
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>

#define MAX_SIZE 300 //字符数组大小
#define BUFFERSIZE 1024 * 1024

// 取得文件大小
int file_size(char *filename) {
	struct stat statbuf;
	stat(filename, &statbuf);
	int size = statbuf.st_size;

	return size;
}

// 加密文件
int encryptionFile() {

	char file_name[MAX_SIZE] = { 0 }; // 原始文件名及路径
	char file_name_new[MAX_SIZE] = { 0 }; // 加密后文件名及路径
	int oldFileAllTotalSize = 0; // 原始文件大小
	int index = 0, *out = 0;
	int encryByte = 0;

	printf("请输入或拖入要加密文件名及路径[eg: c:/aa.txt]:");
	scanf("%s", &file_name);

	strcpy(file_name_new, file_name);
	strcat(file_name_new, "_new");
	printf("原始文件名: %s\n加密后文件名: %s\n", file_name, file_name_new);

	int totalcount = 0;
	//读取文件写入文件
	FILE *oldFile = fopen(file_name, "rb"); // r:只读 , b:二进制

	//获取文件的大小
	if (!oldFile) {
		printf("文件不存在!\n");
		return -1;
	}

	oldFileAllTotalSize = file_size(file_name);
	printf("文件总大小: %d\n", oldFileAllTotalSize);

	FILE *newFile = fopen(file_name_new, "wb+"); // w:可写 , b:二进制 +:不存在则创建
	char buf[BUFFERSIZE];
	int len = 0;
	while (!feof(oldFile)) {
		len = fread(buf, 1, BUFFERSIZE, oldFile);
		if (len >= 0) {
			totalcount += len;
			for (index = 0; index < len; index++) {
				out = &buf[index];
				encryByte = ~*out; // byte首次取反加密,再次取反则解密
				fwrite(&encryByte, 1, 1, newFile);
			}

			printf("处理进度:%.2f%s\n", ((float) totalcount / (float) oldFileAllTotalSize) * 100, "%");
		}
	}

	fclose(oldFile);
	fclose(newFile);
	printf("完成加密或解密!!!	处理后文件路径: %s\n\n", file_name_new);
	encryptionFile();

}

int main(void) {
	encryptionFile();
	return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
mudlib 发表于 2022-5-1 23:31
好东西必须要支持!
3#
sjzdevin 发表于 2022-8-30 09:58
4#
LYCYX 发表于 2022-11-13 00:29
5#
aft705 发表于 2023-10-18 15:07
神奇的代码,这样也能搞定文件加密。
6#
DDDY 发表于 2023-10-19 18:44
太强了,原来这样也可以。感谢楼主。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 00:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表