用c語(yǔ)言plc解密(C語(yǔ)言plc)

博主: 2022-12-04 03:14:07 143 0條評(píng)論

   廣州龍躍自動(dòng)化專業(yè)破解解密各類plc加密,全國(guó)24小時(shí)聯(lián)系手機(jī):18520649527 【關(guān)技術(shù)】 微信:guanshiyou009如有任何問題請(qǐng)打手機(jī)或者添加微信,謝謝支持

如何用C語(yǔ)言對(duì)文件進(jìn)行加密和解密?

對(duì)于加密要求不高的完全可以自己定義規(guī)則來(lái)進(jìn)行加密。這種加密是很簡(jiǎn)單很自由的,例如你在存文件的時(shí)候可以將文件中的每個(gè)字符都加上一個(gè)數(shù),然后讀取該文件的時(shí)候再每個(gè)字符相應(yīng)地減去那個(gè)數(shù),即可實(shí)現(xiàn)就簡(jiǎn)單的加密,這樣你儲(chǔ)存的文件看上去就是亂碼了。只是這個(gè)規(guī)則太簡(jiǎn)單,規(guī)則你可以自己定,加密與解密對(duì)著來(lái)就行了。

下面程序用異或操作對(duì)文件進(jìn)行加密和解密

/****************** 設(shè)計(jì)思路 ******************/

// 根據(jù)用戶輸入的加密/機(jī)密密碼,

// 每次都拿原文件和密碼等長(zhǎng)度的一個(gè)字符串和密碼

// 對(duì)應(yīng)元素異或進(jìn)行加密/解密

// 另外因?yàn)槭怯卯惢蚍椒?,所以加密和解密就是同一個(gè)程序

// 即按照同樣的加密即是對(duì)文件的解密

#include stdio.h

#include string.h

#include ctype.h

#include conio.h

#include stdlib.h

char filename[256]; // 原文件

char password[256]; // 加密/解密密碼

const char filenametemp[] = "temp15435255435325432543.temp"; // 加密/解密中間文件

void inputpass(char *pass); //密碼輸入以"******"顯示

void main() {

FILE *fp; // 加密/解密的文件

FILE *fptemp; // 加密/解密過(guò)程臨時(shí)文件

int pwdlen; // 密碼長(zhǎng)度

int i = 0; // 計(jì)數(shù)器

char ch = 0; // 讀入的字符

printf("請(qǐng)輸入要加密/解密的文件名(全路徑名): \n");

gets(filename);

if( (fp = fopen(filename, "rb")) == NULL) {

printf("找不到文件 %s\n", filename);

exit(1);

} // if

printf("請(qǐng)輸入要加密/解密的密碼: \n");

inputpass(password);

pwdlen = strlen(password);

if(pwdlen == 0) {

printf("密碼不能為空,加密/解密失敗\n");

exit(1);

} // if

fptemp = fopen(filenametemp, "wb"); // 打開中間文件

while(1) {

ch = fgetc(fp);// 從原文件讀入一個(gè)字符

if(feof(fp)) { // 已經(jīng)讀到文件尾

break; // 退出循環(huán)

}

ch ^= password[i++]; // 對(duì)原字符和密碼進(jìn)行異或操作

fputc(ch, fptemp); // 將異或結(jié)果寫入中間文件

if(i == pwdlen) { // 使得原文件每和密碼長(zhǎng)度相同的固定長(zhǎng)度異或加密

i = 0;

}

} // while

fclose(fp); // 關(guān)閉打開原文件

fclose(fptemp); // 關(guān)閉打開中間文件

remove(filename); // 刪除原文件

rename(filenametemp, filename); // 將中間文件重命名為原文件

printf("加密/解密成功\n"); // 至此加密/解密成功

}

// 密碼輸入以"******"顯示

void inputpass(char *pass) {

int i = 0;

char c;

while(isprint(c = getch())) {

pass[i++] = c;

// printf("*");

}

pass[i] = '\0';

printf("\n");

}

如何用C語(yǔ)言對(duì)文件進(jìn)行加密和解密?急求......................

文件分為文本文件和二進(jìn)制文件。加密方法也略有不同。

1、文本文件

加密的主要是文本的內(nèi)容,最簡(jiǎn)單的方法就是修改文檔的內(nèi)容,比如1.txt中的文件內(nèi)容:

用c語(yǔ)言plc解密(C語(yǔ)言plc)

abcd

只要給每一個(gè)字符+1,就可以實(shí)現(xiàn)加密。文件內(nèi)容即會(huì)變?yōu)?/p>

bcde

2、二進(jìn)制文件加密

二進(jìn)制文件加密也就是對(duì)應(yīng)用程序加密,需要理解可執(zhí)行文件格式,比如Windows平臺(tái)的Exe文件它是PE結(jié)構(gòu),Linux上的可執(zhí)行文件是ELF結(jié)構(gòu),要對(duì)這樣的程序進(jìn)行加密,實(shí)際上是開發(fā)一種叫做“殼”的程序,這種程序的開發(fā),需要將扎實(shí)的底層基礎(chǔ),同時(shí)也需要對(duì)軟件加密解密有細(xì)致的理解,比如流行的vmprotect、z殼以及早些年的upx殼、aspack等等。

3、無(wú)論哪種加密都牽涉到文件操作的問題,使用C語(yǔ)言進(jìn)行文件操作時(shí),極少使用C標(biāo)準(zhǔn)庫(kù)中的I/O函數(shù),大多數(shù)使用操作系統(tǒng)提供的內(nèi)存文件映射相關(guān)的API函數(shù),有興趣,可以搜索相關(guān)的資料。

[img]

用C語(yǔ)言設(shè)計(jì)一個(gè)文件加密與解密程序

c語(yǔ)言文件加密和解密方法如下:

1、首先打開VC++6.0;

2、選擇文件,新建;

3、選擇C++ source file 新建一個(gè)空白文檔;

4、聲明頭文件

#includestdio.h

#includestdlib.h

#includestring.h

首先寫個(gè)加密函數(shù),算法就是簡(jiǎn)介里說(shuō)的;

void?EncryptFile(FILE?*sfp,FILE?*dfp,char?pwd)

{

char?ch;

if(sfp==0||dfp==0)

{

printf("ERROR!\n");

return;

}

while((ch=fgetc(sfp))!=EOF)

{

if((ch='a')(ch='z'))

{

ch=(ch-'a'+1)%26+'a';

ch=ch^pwd;

}

if((ch='A')(ch='Z'))

{

ch=(ch-'A'+1)%26+'A';

ch=ch^pwd;

}

fputc(ch,dfp);

}

}

寫解密子函數(shù):與加密的過(guò)程相反;

void?DecryptFile(FILE?*sfp,FILE?*dfp,char?pwd)

{

char?ch;

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);

}

}

輸出函數(shù),輸出文件內(nèi)容

void?OutputFile(FILE?*fp)

{

char?ch;

while((ch=fgetc(fp))!=EOF)

putchar(ch);

}

 主函數(shù),主要調(diào)用這幾個(gè)函數(shù)

int?main()

{

/*用戶輸入的要加密的文件名*/

char?sfilename[20];

/*用戶輸入加密后保存的文件名*/

char?dfilename[20];

/*用來(lái)保存密碼字符*/

char?pwd;

FILE?*sfp,*dfp;

printf("\nPlease?input?filename?to?be?encrypted:\n");

/*得到要加密的文件名*/

gets(sfilename);

/*得到加密后你要的文件名*/

printf("input?filename?to?save?the?encrypted?file:\n");

gets(dfilename);

/*得到加密字符*/

printf("Please?input?your?Password:\n");

//scanf("%c",pwd);

pwd=getch();

/*屏幕以*來(lái)表示輸入的加密字符*/

printf("*\n");

/*以只讀方式打開要加密的文件*/

if((sfp=fopen(sfilename,"r"))==0)

{

printf("Can't?open?the?file?:%s\n",sfilename);

exit(0);

}

/*輸出要加密的文件*/

printf("\nThe?the?text?of?file?to?be?encrypted?is:\n");

OutputFile(sfp);

/*建立加密后的文件*/

if((dfp=fopen(dfilename,"w+"))==0)

{

printf("Can't?open?or?create?the?file?:%s\n",dfilename);

//exit(0);

}

/*文件加密*/

fseek(sfp,0L,SEEK_SET);

EncryptFile(sfp,dfp,pwd);

printf("\n\nEncrypted?the?file?successfully!\n");

/*輸出加密后的文件*/

printf("\nAfter?encrypting?the?text?of?file?is:\n");

fseek(dfp,0L,SEEK_SET);

OutputFile(dfp);

fclose(sfp);

fclose(dfp);

getch();

return?0;

}

C語(yǔ)言設(shè)計(jì)一個(gè)簡(jiǎn)單的加密解密程序

C語(yǔ)言設(shè)計(jì)一個(gè)簡(jiǎn)單的加密解密程序如下:

加密程序代碼:

#includestdio.h

main()

{

char c,filename[20];

FILE *fp1,*fp2;

printf("請(qǐng)輸入待加密的文件名:\n");

scanf("%s",filename);

fp1=fopen(filename,"r");

fp2=fopen("miwen.txt","w");

do

{

c=fgetc(fp1);

if(c=32c=126)

{

c=c-32;

c=126-c;

}

if(c!=-1)

fprintf(fp2,"%c",c);

}

while(c!=-1);

}

解密程序代碼:

#includestdio.h

#includestring.h

main()

{

char c,filename[20];

char yanzhengma[20];

FILE *fp1,*fp2;

printf("請(qǐng)輸入待解密文件名:\n");

scanf("%s",filename);

printf("請(qǐng)輸入驗(yàn)證碼:\n");

scanf("%s",yanzhengma);

if(strcmp(yanzhengma,"shan")==0)

{

fp1=fopen(filename,"r");

fp2=fopen("yuanwen.txt","w");

do

{

c=fgetc(fp1);

if(c=32c=126)

{

c=126-c;

c=32+c;

}

if(c!=-1)

fprintf(fp2,"%c",c);

}

while(c!=-1);

}

else

{

printf("驗(yàn)證碼錯(cuò)誤!請(qǐng)重新輸入:\n");

scanf("%s",filename);

}

}

   廣州龍躍自動(dòng)化專業(yè)破解解密各類plc加密,全國(guó)24小時(shí)聯(lián)系手機(jī):18520649527 【關(guān)技術(shù)】 微信:guanshiyou009如有任何問題請(qǐng)打手機(jī)或者添加微信,謝謝支持

分享