c语言文本加密解密 可打印,C语言实现任何文件的加密解密功能.pdf

C语语言言实实现现任任何何文文件件的的加加密密解解密密功功能能

本文实例为大家分享了C语言实现文件加密解密功能的具体代码,供大家参考,具体内 如下

使用命令提示符,实现任何文件的加密和解密功能。

代码如下:

//#define _CRT_SECURE_NO_WARNINGS

#include

#include

#include

#include

#include

#p agma wa ning(disable:4996)

//加密

void Enc yption(cha *p, size_t n)

{

fo (int i = 0; i < n;++i)

{

*p += 7;

}

}

//解密

void Dec ypt(cha *p, size_t n)

{

fo (int i = 0; i < n;++i)

{

*p -= 7;

}

}

cha *EnO De = {0};

int main(int a gc, cha *a gs[])

{

clock_t c1 = clock();//系统当前时间,毫秒为单位

cha *FileNameS c = (cha *)calloc(160, sizeof(cha ));//待操作文件

cha *p2 = (cha *)calloc(200, sizeof(cha ));//操作后文件名

//从命令行获取文件名和要处理的操作

FileNameS c = a gs[1];//文件名,包含路径

cha *p1 = a gs[1];

EnO De = a gs[2];//en表示加密,de表示解密

/*FileNameS c = "E:\\iPhone6-new.txt" ;

cha *p1 = FileNameS c;

EnO De = "de";*/

/**********处理生成新的文件名***********/

//cha *p2 = { 0 };

/*FileNameS c = p1;*/

//p intf("%s\n", FileNameS c);

//p intf("%s\n", EnO De);

int index = 0;

while (*p1)

{

if (*p1!='.')

{

*p2 = *p1;

p2++;

p1++;

index++;

}

else if (*p1 == '.')

{

*p2 = '_ ';

p2++;

*p2 = 'H';

p2++;

*p2 = '.';

p2++;

p1++;

index+=2;

}

}

p intf("\n");

p intf("信息摘要:\n");

p intf("\n");

p intf("原文件:%s\n", FileNameS c);

p intf("操作:%s (en――加密,de――解密)\n", EnO De);

p intf("预计结果文件:%s\n", p2 - index - 1);

p intf("\n\n");

p intf("请稍后,玩命处理中\n");

cha *FileNameDst = p2 - index - 1;

FILE *p = fopen(FileNameS c, " b");

FILE *pw = fopen(FileNameDst, "wb");

st uct stat st = { 0 };

size_t fileSize = st.st_size;//以字节为单位

//cha *buf = NULL;

//if (file

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DES是一种对称密算法,可以用C语言实现密和解密。下面是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <openssl/des.h> void des_encrypt(const char *key, const char *input, char *output) { // 创建key DES_cblock des_key; DES_key_schedule des_key_schedule; memset(des_key, 0, sizeof(des_key)); memcpy(des_key, key, strlen(key) > 8 ? 8 : strlen(key)); DES_set_key_checked(&des_key, &des_key_schedule); // 密 DES_cblock input_block, output_block; memset(input_block, 0, sizeof(input_block)); memset(output_block, 0, sizeof(output_block)); memcpy(input_block, input, strlen(input) > 8 ? 8 : strlen(input)); DES_ecb_encrypt(&input_block, &output_block, &des_key_schedule, DES_ENCRYPT); // 输出结果 for (int i = 0; i < 8; i++) { sprintf(output + i * 2, "%02x", output_block[i]); } } void des_decrypt(const char *key, const char *input, char *output) { // 创建key DES_cblock des_key; DES_key_schedule des_key_schedule; memset(des_key, 0, sizeof(des_key)); memcpy(des_key, key, strlen(key) > 8 ? 8 : strlen(key)); DES_set_key_checked(&des_key, &des_key_schedule); // 解密 DES_cblock input_block, output_block; memset(input_block, 0, sizeof(input_block)); memset(output_block, 0, sizeof(output_block)); for (int i = 0; i < strlen(input) / 2; i++) { sscanf(input + i * 2, "%02x", &input_block[i]); } DES_ecb_encrypt(&input_block, &output_block, &des_key_schedule, DES_DECRYPT); // 输出结果 memcpy(output, output_block, 8); } int main() { char key[] = "12345678"; char input[] = "hello"; char output[17]; des_encrypt(key, input, output); printf("密结果: %s\n", output); des_decrypt(key, output, input); printf("解密结果: %s\n", input); return 0; } ``` 使用方法: 1. 将上面的代码保存到一个名为`des.c`的文件中。 2. 在终端中进入到代码所在的目录,并使用以下命令编译代码: ``` gcc des.c -o des -lcrypto ``` 3. 运行程序,输入以下命令: ``` ./des ``` 4. 程序将输出密和解密结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值