C语言如何使用异或(xor)加密或解密文件

发布时间:2022-08-06 09:54:08

C语言使用异或(xor)函数可以加密或解密文件你知道吗?你知道C语言如何使用异或(xor)加密或解密文件吗?下面是小编为大家带来的关于C语言如何使用异或(xor)加密或解密文件的知识,欢迎阅读。

xor_encrypt.c

C语言如何使用异或(xor)加密或解密文件

#defineTRUE1

#defineFALSE0

#include

#include

#include

#include//如果在/usr/include/找不到,可以在/usr/include/sys/复制过去

//输出信息

voidmsg_log(char*str);

//判断文件是否存在

intfile_exists(char*filename);

//主函数

//更多精*内容:bianceng/Programming/C/

intmain(intargc,char*argv[]){

intkeylen,index=0;

char*source,*dest,*key,fBuffer[1],tBuffer[20],ckey;

FILE*fSource,*fDest;

source=argv[1];//原文件

dest=argv[2];//目的文件

key=argv[3];//加密字串

//检查参数

if(source==NULL||dest==NULL||key==NULL){

msg_log("paramerror

usage:xor_encryptsourcedestkey

e.g./xor_encrypto.txtd.txt123456");

exit(0);

}

//判断原文件是否存在

if(file_exists(source)==FALSE){

sprintf(tBuffer,"%snotexists",source);

msg_log(tBuffer);

exit(0);

}

//获取key长度

keylen=strlen(key);

fSource=fopen(source,"rb");

fDest=fopen(dest,"wb");

while(!feof(fSource)){

fread(fBuffer,1,1,fSource);//读取1字节

if(!feof(fSource)){

ckey=key[index%keylen];//循环获取key

*fBuffer=*fBuffer^ckey;//xorencrypt

fwrite(fBuffer,1,1,fDest);//写入文件

index++;

}

}

fclose(fSource);

fclose(fDest);

msg_log("success");

exit(0);

}

//输出信息

voidmsg_log(char*str){

printf("%s

",str);

}

//判断文件是否存在

intfile_exists(char*filename){

return(access(filename,0)==0);

}

这张图如果使用php来处理需要2秒左右,但用C处理只需要130毫秒。

fdipzone@ubuntu:~/C$gcc-oxor_encryptxor_encrypt.c

fdipzone@ubuntu:~/C$time./xor_encrypt1280.jpg1280en.jpg'@#$%^&*()_DFGHJKadsklfjasdf'

success

real0m0.139s

user0m0.060s

sys0m0.070s

看了C语言如何使用异或(xor)加密或解密文件还看了:
  • PHP如何使用AES加密算法进行数据加密和解密

    在利用PHP制作项目的时候经常会使用AES加密算法进行数据加密和解密,那么AES加密算法是如何进行数据加密和解密的呢?下面小编为大家解答一下,希望能帮到您!AES加密是一种高级加密标准,AES加密采用对称分组密码体制,AES加密数据块分组长...

  • 文件夹如何加密

    热心网友 一、加密护护份教莓寄逢犀抚篓文件或文件夹 步骤一:打开Windows资源管理器。 步骤二:右键单击要加密的文件或文件夹,然后单击[属*"。 步骤三:在[常规"选项卡上,单击[高级"。选中[加密内容以便保护数据"复选框 在加密过程...

  • tplogin.cn如何设置或修改密码

    tplogin怎么重新设置密码?tplogin怎么修改密码?要重新设置(修改)tplogin登录页面的密码,需要分情况来进行*作。一种情况是,用户忘记了之前的密码,已经不能登录到tplogin设置页面了;另一种情况是,用户知道原来的密码,可...

  • 如何选择和使用密封件

    在选购和使用密封件时,用户应经常留意下列各项要求,避免出现不必要的质量问题:1、生产我们经过严格的选择和长期的经验积累,已经产生一套系列*的供应渠道,我们的供货,是密封件行业的最全面的,所以在生产质量方面,都能很好地把关,保持平稳高质量的水...

  • C/C++中如何判断某一文件或目录是否存在

    不同的编程语言判断文件是否存在的方法是不一样的。你知道C/C++中如何判断某一文件或目录是否存在吗?下面是小编为大家带来的C/C++中如何判断某一文件或目录是否存在的知识,欢迎阅读。1.C++很简单的一种办法:复制代码代码如下:#inclu...