用c語(yǔ)言plc解密(C語(yǔ)言plc)
廣州龍躍自動(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)容:
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ī)或者添加微信,謝謝支持