當前位置:首頁 » 密碼管理 » c加密函數

c加密函數

發布時間: 2022-05-31 22:11:09

c語言文件加密和解密

c語言文件加密和解密方法如下:

1、首先打開VC++6.0;

voidDecryptFile(FILE*sfp,FILE*dfp,charpwd)
{
charch;
while((ch=fgetc(sfp))!=EOF)
{
if((ch>='a')&&(ch<='z'))
{
ch=ch^pwd;
ch=(ch-'a'+25)%26+'a';
}
if((ch>='A')&&(ch<='Z'))
{
ch=ch^pwd;
ch=(ch-'A'+25)%26+'A';
}
fputc(ch,dfp);
}
}

輸出函數,輸出文件內容
voidOutputFile(FILE*fp)
{
charch;
while((ch=fgetc(fp))!=EOF)
putchar(ch);
}
主函數,主要調用這幾個函數
intmain()
{
/*用戶輸入的要加密的文件名*/
charsfilename[20];
/*用戶輸入加密後保存的文件名*/
chardfilename[20];
/*用來保存密碼字元*/
charpwd;
FILE*sfp,*dfp;

printf(": ");
/*得到要加密的文件名*/
gets(sfilename);
/*得到加密後你要的文件名*/
printf(": ");
gets(dfilename);
/*得到加密字元*/
printf("PleaseinputyourPassword: ");
//scanf("%c",&pwd);
pwd=getch();
/*屏幕以*來表示輸入的加密字元*/
printf("* ");
/*以只讀方式打開要加密的文件*/
if((sfp=fopen(sfilename,"r"))==0)
{
printf("Can'topenthefile:%s ",sfilename);
exit(0);
}
/*輸出要加密的文件*/
printf(": ");
OutputFile(sfp);
/*建立加密後的文件*/
if((dfp=fopen(dfilename,"w+"))==0)
{
printf("Can'topenorcreatethefile:%s ",dfilename);
//exit(0);
}
/*文件加密*/
fseek(sfp,0L,SEEK_SET);
EncryptFile(sfp,dfp,pwd);
printf(" Encryptedthefilesuccessfully! ");
/*輸出加密後的文件*/
printf(": ");
fseek(dfp,0L,SEEK_SET);
OutputFile(dfp);
fclose(sfp);
fclose(dfp);
getch();
return0;
}


⑵ 編寫一個數據加密函數(用C編寫)

這個問題並不難,兩個數組很容易實現
main()
{
int i,a[4],b[4];
printf("請輸入四個數字: ");
for(i=0;i<4;i++)
scanf("%d",a[i]);
b[0]=(a[3]+6)%8;
b[1]=(a[2]+6)%8;
b[2]=(a[1]+6)%8;
b[3]=(a[0]+6)%8;
printf("原數組是:")
for(i=0;i<4;i++)
printf("%d",a[i])
printf("加密後的數組是:")
for(i=0;i<4;i++)
printf("%d",b[i])
}

⑶ 用c語言寫一個加密函數。


printf("please enter the user code:")

scanf("%d",&co);

if(co==2)

printf("plese enter the kassword:");

scanf("%d",&passwd);

if(passwd==)

⑷ C語言的加密函數問題。

char* encode(const char* str)
{
int i, s;
s = 0;
for(i = 0; str[i]; i++) s += str[i] * str[i];
for(i = 0; str[i]; i++) {
if(str[i] >= 'a' && str[i] <= 'z') {
str[i] = (str[i] + s) % 128;
}
}
return str;
}
不能准確地恢復

⑸ c語言電碼加密中加密函數有幾種實現方法

加密方式無窮,隨便舉個例子:
void encrypt(char*s)
{
for(;*s!='\0';s++)
if(*s=='z')
*s='a';
else *s=*s+1;
}

⑹ C語言 加密演算法

#include<stdio.h>

#include<string.h>

#defineMAX_LEN1024

#defineMAX_KEY_LEN10

/*key必須是1-9之間的數字*/

/*擁有K個字元的Key,包含且僅包含1-K*/

intCheckKey(char*key)

{

inti,check[MAX_KEY_LEN]={0};

intmax=strlen(key);

intkeyVal;

for(i=0;i<max;i++)

{

keyVal=key[i]-'0';

if(keyVal>max||keyVal<1)

return0;

if(check[keyVal]==1)

return0;

else

check[keyVal]=1;

}

return1;

}

intEncrypt(char*word,char*key,char*secretWord)

{

inti,start;

intnLenWord=strlen(word);

intnLenKey=strlen(key);

intindex[MAX_KEY_LEN];

if(nLenWord%nLenKey!=0)

{

printf("明文的位數不是密鑰位數的整數倍! ");

return0;

}

for(i=0;i<nLenKey;i++)

{

index[i]=key[i]-'0'-1;

}

/*START關鍵代碼*/

start=0;

while(start<nLenWord)

{

for(i=0;i<nLenKey;i++)

{

secretWord[start+i]=word[start+index[i]];

}

start+=nLenKey;

}

secretWord[nLenWord]='';

/*END關鍵代碼*/

return1;

}

intmain()

{

charword[MAX_LEN];

charkey[MAX_KEY_LEN];

charsecretWord[MAX_LEN];

printf("請輸入明文:");

scanf("%1024s",word);

printf("請輸入密鑰:");

scanf("%10s",key);

if(!CheckKey(key))

{

printf("密鑰輸入錯誤! ");

exit(-1);

}

if(Encrypt(word,key,secretWord))

printf("密文是:%s ",secretWord);

return0;

}

⑺ C語言, 加密函數,為什麼程序執行後,輸出的數字成了方塊,怎麼解決

對於數字,你的加密方式是減去22,於是變成不可見字元了。
要想改成可見的,除非換方法,比如把0-9一樣做一個凱撒加密

⑻ c語言加密解密演算法

這里使用的是按位加密,按ASCII碼進行加密的演算法自己寫個,很容易的。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
void
dofile(char
*in_fname,char
*pwd,char
*out_fname);/*對文件進行加密的具體函數*/
void
usage(char
*name);
void
main(int
argc,char
*argv[])/*定義main()函數的命令行參數*/
{
char
in_fname[30];/*用戶輸入的要加密的文件名*/
char
out_fname[30];
char
pwd[10];/*用來保存密碼*/
if(argc!=4)
{/*容錯處理*/
usage(argv[0]);
printf("\nIn-fname:\n");
gets(in_fname);/*得到要加密的文件名*/
while(*in_fname==NULL)
{
printf("\nIn-fname:\n");
gets(in_fname);
}
printf("Password
6-8:\n");
gets(pwd);/*得到密碼*/
while(*pwd==NULL
||
strlen(pwd)>8
||
strlen(pwd)<6)
{
printf("Password
6-8:\n");
gets(pwd);
}
printf("Out-file:\n");
gets(out_fname);/*得到加密後你要的文件名*/
while(*in_fname==NULL)
{
printf("Out-file:\n");
gets(out_fname);
}
while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n");
printf("Out-file:\n");
gets(out_fname);
}
dofile(in_fname,pwd,out_fname);
printf("加密成功,解密請再次運行程序\n");
}
else
{/*如果命令行參數正確,便直接運行程序*/
strcpy(in_fname,argv[1]);
strcpy(pwd,argv[2]);
strcpy(out_fname,argv[3]);
while(*pwd==NULL
||
strlen(pwd)>8
||
strlen(pwd)<6)
{
printf("Password
faied!\n");
printf("Password
6-8:\n");
gets(pwd);
}
while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n");
printf("Out-file:\n");
gets(out_fname);
while(*in_fname==NULL)
{
printf("Out-file:\n");
gets(out_fname);
}
}
dofile(in_fname,pwd,out_fname);
printf("加密成功,解密請再次運行程序\n");
}
}
/*加密子函數開始*/
void
dofile(char
*in_fname,char
*pwd,char
*out_file)
{
FILE
*fp1,*fp2;
register
char
ch;
int
j=0;
int
j0=strlen(pwd);
fp1=fopen(in_fname,"rb");
if(fp1==NULL)
{
printf("cannot
open
in-file.\n");
exit(1);/*如果不能打開要加密的文件,便退出程序*/
}
fp2=fopen(out_file,"wb");
if(fp2==NULL)
{
printf("cannot
open
or
create
out-file.\n");
exit(1);/*如果不能建立加密後的文件,便退出*/
}
/*加密演算法開始*/
while(j0>=0)
{
ch=fgetc(fp1);
while(!feof(fp1))
{
fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*異或後寫入fp2文件*/
ch=fgetc(fp1);
}
j0--;
}
fclose(fp1);/*關閉源文件*/
fclose(fp2);/*關閉目標文件*/
}
void
usage(char
*name)
{
printf("\t=======================File
encryption======================\n");
printf("\tusage:
%s
In-fname
password
out_fname\n",name);
printf("\tExample:
%s
file1.txt
12345678
file2.txt\n",name);
}

⑼ C語言設計一個簡單的加密解密程序

C語言設計一個簡單的加密解密程序如下:
加密程序代碼:
#include<stdio.h>
main()
{
char c,filename[20];
FILE *fp1,*fp2;
printf("請輸入待加密的文件名:\n");
scanf("%s",filename);
fp1=fopen(filename,"r");
fp2=fopen("miwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=c-32;
c=126-c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
解密程序代碼:
#include<stdio.h>
#include<string.h>
main()
{
char c,filename[20];
char yanzhengma[20];
FILE *fp1,*fp2;
printf("請輸入待解密文件名:\n");
scanf("%s",filename);
printf("請輸入驗證碼:\n");
scanf("%s",yanzhengma);
if(strcmp(yanzhengma,"shan")==0)
{
fp1=fopen(filename,"r");
fp2=fopen("yuanwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=126-c;
c=32+c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
else
{
printf("驗證碼錯誤!請重新輸入:\n");
scanf("%s",filename);
}
}

熱點內容
開拓者交易雲伺服器配置 發布:2025-05-17 19:19:47 瀏覽:11
編程2e8 發布:2025-05-17 19:19:04 瀏覽:419
贊贊快手腳本 發布:2025-05-17 19:14:33 瀏覽:229
佳能相機存儲卡錯誤 發布:2025-05-17 19:00:59 瀏覽:889
雲訪問安全 發布:2025-05-17 18:36:31 瀏覽:625
演算法設計與分析課件 發布:2025-05-17 18:21:11 瀏覽:766
安卓禁止軟體安裝怎麼解除 發布:2025-05-17 18:16:52 瀏覽:219
絕地求生極客電腦怎麼配置 發布:2025-05-17 18:16:50 瀏覽:51
顯卡編程語言 發布:2025-05-17 18:11:46 瀏覽:919
編程用什麼軸機械鍵盤 發布:2025-05-17 18:10:35 瀏覽:960