文件加解密算法C++ txt word均可

#include  < stdio.h >
#include 
< stdlib.h >
int  main()
{
int  jiajie_fun( char  infile[ 20 ] , char  outfile[ 20 ] ); // 对加密解密函数的声明
int  choose;
char  mingfile[ 20 ];
char  mifile[ 20 ];
printf(
" 欢迎进入加密与解密文件系统\n\n " );
while ( 1 )
{
printf(
" 输入数字 1 并按回车则进入加密系统\n " );
printf(
" 输入数字 2 并按回车则进入解密系统\n\n " );
printf(
" 请选择并输入1或2\n " );
scanf(
" %d " , & choose);
if (choose == 1 || choose == 2 break ;
printf(
" 您没有正确输入 请输入字母1或2并按回车结束,请您重新输入\n\n\n\n " );
}
if (choose == 1 )
{
printf(
" 请输入您想要加密的文件名,并按回车结束\n " );
scanf(
" %s " ,mingfile);
printf(
" 请输入加密到的目标文件名,并按回车结束\n " );
scanf(
" %s " ,mifile);
jiajie_fun(mingfile,mifile);
printf(
" 对%s文件的加密已经成功,感谢您对本程序的使用\n " ,mingfile);


if (choose == 2 )
{
printf(
" 请输入您想要解密的文件名, 并按回车结束\n " );
scanf(
" %s " ,mifile);
printf(
" 请输入解密到的目标文件名, 并按回车结束\n " );
scanf(
" %s " ,mingfile);
jiajie_fun(mifile,mingfile);
printf(
" 对%s文件的解密已经成功,感谢您对本程序的使用\n " ,mifile);

}
getchar();
getchar();

}

int  jiajie_fun( char  infile[ 20 ], char  outfile[ 20 ])
{
int  key = 50 ; // 0无法加密 密钥位数少不安全,但我个人意见,不是长度,而是复杂度决定安全性 
// float key=3.14;  // 需要的话就更换密钥 
// char key[]="I am a goodboy";
FILE  * in , * out ;
char  ch;

if (( in = fopen(infile, " rb " )) == NULL)
{printf(
" 不能找到该文件\n " );
exit (
0 );} // 结束程序
if (( out = fopen(outfile, " wb " )) == NULL)
{printf(
" 不能找到该文件\n " );
exit (
0 );}


while  ( 1 )
{
ch
= fgetc( in );
ch
= ch ^ key;  // 这里换用其他更复杂的算式也不错 
if (feof( in ))  break ;
fputc(ch,
out ); 
}

fclose(
in );
fclose(
out );
return   0 ;
}
// *******************************异或加解密********************************** //
// *****************************嵌入到文件读取中****************************** //
/*
#include <stdio.h>
void main()
{
char ming[13]="I am goodboy";//'\0'明文
int miyao=356;//密钥
char secret[13];//必须指定大小 密文
for (int i=0;i<13;i++)
{ *(secret+i)=miyao^(*(ming+i));}//加密
printf("%s\n",secret);
for (i=0;i<13;i++)
{ *(ming+i)=miyao^(*(secret+i));}//解密
printf("%s\n",ming);
}
*/

你可能感兴趣的:(word)