包含VC1plC解密的詞條
廣州龍躍自動(dòng)化專業(yè)破解解密各類plc加密,全國24小時(shí)聯(lián)系手機(jī):18520649527 【關(guān)技術(shù)】 微信:guanshiyou009如有任何問題請(qǐng)打手機(jī)或者添加微信,謝謝支持
VC 簡(jiǎn)單加密!
#include stdio.h
#include string.hvoid main()
{
char a[50] = "加密~!中英文都要支持!越簡(jiǎn)單越好!";//原文
char b[50];
char key[5] = "abcd\0";//密鑰
int i, j; printf("原文:%s\n\n", a);
printf("密鑰:%s\n\n", key); for (i = 0; i strlen(a); i ++)
{
for (j = 0; j 4; j ++)
{
b[i] = a[i] ^ key[j];//將每一個(gè)原文字符跟密鑰字符異或
}
}
b[i] = 0;//結(jié)束字符串
printf("加密后:%s\n\n", b); for (i = 0; i strlen(a); i ++)
{
for (j = 3; j = 0; j --)
{
b[i] = b[i] ^ key[j];
}
}
printf("解密后:%s\n\n", a);
}
[img]用C語言設(shè)計(jì)一個(gè)文件加密與解密程序
c語言文件加密和解密方法如下:
1、首先打開VC++6.0;
2、選擇文件,新建;
3、選擇C++ source file 新建一個(gè)空白文檔;
4、聲明頭文件
#includestdio.h
#includestdlib.h
#includestring.h
首先寫個(gè)加密函數(shù),算法就是簡(jiǎn)介里說的;
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ù):與加密的過程相反;
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];
/*用來保存密碼字符*/
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();
/*屏幕以*來表示輸入的加密字符*/
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;
}
使用高級(jí)語言(C、C++、C#語言)實(shí)現(xiàn)一個(gè)加密/解密程序,調(diào)試并通過該程序。
同意一樓的看法,要不你就要赫夫曼編碼原理吧,這個(gè)比較簡(jiǎn)單,實(shí)現(xiàn)也比較容易;根據(jù)字符出現(xiàn)的頻率作為字符權(quán)值,利用Huffman算法進(jìn)行處理,形成Huffman樹,得到Huffman碼,利用Huffman碼對(duì)字符進(jìn)行加密,已二進(jìn)制的形式存儲(chǔ)到磁盤。 再利用Huffman碼對(duì)加密后的文件解密。
#includestdio.h
typedef struct LNode{ /*-------------鏈表-------------------*/
int data;
struct LNode *next;
}LNode,*Linklist;
typedef struct Character{ /*-------------字符結(jié)構(gòu)體-------------*/
char data; /*--------------字符值----------------*/
int frequency; /*-------------字符出現(xiàn)頻率-----------*/
}Character;
typedef struct HTNode{ /*-------------哈夫曼接點(diǎn)-------------*/
char data; /*-------------接點(diǎn)值-----------------*/
unsigned int weight; /*--------------權(quán)值------------------*/
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree;
Linklist L; /*-------------鏈表頭接點(diǎn)--------------*/
Character T[256]; /*-----存放信息中出現(xiàn)的字符(不含漢字)----*/
HuffmanTree HT; /*--------------存放哈夫曼接點(diǎn)--------------*/
char *HC[257],*HA[256]; /*------HC中緊密存放哈夫曼編碼,HA中按字符值位置存放該字符的編碼,如A存放于HA中第65號(hào)元---*/
int len=0; /*-------------信息中出現(xiàn)的字符數(shù)量-----------*/
int s1,s2;
int i,j;
char ch;
char Infile[10],Outfile[10],decfile[10]; /*------分別為源信息文件,加密后的2進(jìn)制文件(解密源文件),解密后的文件------*/
FILE *fp,*fin,*fout;
void Create_L(int n) /*------對(duì)有n接點(diǎn)建一條帶頭接點(diǎn)的鏈表(頭插法)-----*/
{
int i;
Linklist p,k;
L=(Linklist)malloc(sizeof(LNode));
k=L;
for(i=1;i=n;i++)
{
p=(Linklist)malloc(sizeof(LNode));
p-next=NULL;
p-data=i;
k-next=p;k=p;
}
}
void Init() /*-------初始化,統(tǒng)計(jì)Infile中的字符數(shù)目len及每個(gè)字符出現(xiàn)的頻率------*/
{ /*-------將這len個(gè)字符存于T[0]到T[len-1]中,然后按頻率值將這len個(gè)字符按升序排列------*/
void QuickSort(Character A[],int p,int r);
printf("Input the Infilename:\n");
scanf("%s",Infile);
if((fp=fopen(Infile,"r"))==NULL)
{
printf("Cannot open Infile!\n");
exit(0);
}
for(i=0;i256;i++)
{
T[i].data=i;
T[i].frequency=0;
}
while(!feof(fp))
{
ch=fgetc(fp);
T[ch].frequency++;
}
for(i=0,j=0;i256;i++)
{
while(!T[i].frequencyi256)
T[i++].data=0;
if(i256)
T[j++]=T[i];
}
len=j;
Create_L(len);
QuickSort(T,0,len-1);
fclose(fp);
}
void QuickSort(Character A[],int p,int r) /*--------冒泡法對(duì)A數(shù)組元素按頻率升序排列---------*/
{
Character t;
for(i=p;ir;i++)
for(j=p;jr-i;j++)
if(A[j].frequencyA[j+1].frequency)
{
t=A[j]; A[j]=A[j+1]; A[j+1]=t;
}
}
void Select() /*------------取出鏈表的前兩個(gè)權(quán)值最小的元素,將新增元素按升序規(guī)則插于鏈表-------*/
{
Linklist p,q;
int w,t;
p=L-next;
s1=p-data;
q=p-next;
s2=q-data;
w=HT[s1].weight+HT[s2].weight;
q-data=i;
L-next=q;
free(p);
while(q-next)
{
if(wHT[q-next-data].weight)
{ t=q-data;q-data=q-next-data;q-next-data=t;}
q=q-next;
}
}
void HuffmanCoding(int n) /*-------對(duì)n種字符進(jìn)行編碼存于*HA[257]中---------*/
{
int m,c,f,start;
int lencd;
HuffmanTree p;
char *cd;
if(n=1) return;
m=2*n-1;
HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));
for(p=HT+1,i=1;i=n;++i,++p)
{
p-data=T[i-1].data;
p-weight=T[i-1].frequency;
p-parent=0;
p-lchild=0;
p-rchild=0;
}
for(;i=m;++i,++p)
{
p-data=0;
p-weight=0;
p-parent=0;
p-lchild=0;
p-rchild=0;
}
for(i=n+1;i=m;++i)
{
Select();
HT[s1].parent=i;
HT[s2].parent=i;
HT[i].lchild=s1;
HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;
}
cd=(char *)malloc(n*sizeof(char));
for(start=0;startn;start++) cd[i]='\0';
for(i=1;i=n;++i)
{
start=0;
for(c=i,f=HT[i].parent;f!=0;f=HT[f].parent,c=HT[c].parent)
{
if(HT[f].lchild==c)
cd[start++]='0';
else
cd[start++]='1';
}
lencd=start;
HC[i]=(char *)malloc((lencd+1)*sizeof(char));
ch=HT[i].data;
HA[ch]=(char *)malloc((lencd+1)*sizeof(char));
for(start=lencd-1,j=0;start=0;start--)
{
HC[i][j]=cd;
j++;
}
HC[i][j]='\0';
strcpy(HA[ch],HC[i]);
}
free(cd);
}
void Encrytion() /*-------按HA中的編碼把Infile文件中的每一個(gè)字符翻譯成2進(jìn)制文件存于outfile文件中----*/
{
printf("Input the outfilename:\n");
scanf("%s",Outfile);
if((fout=fopen(Outfile,"a"))==NULL)
{
printf("Cannot open outfile!\n");
exit(0);
}
if((fin=fopen(Infile,"r"))==NULL)
{
printf("Cannot open Infile in the Encrytion!\n");
exit(0);
}
while(!feof(fin))
{
ch=fgetc(fin);
fputs(HA[ch],fout);
}
fclose(fin);
fclose(fout);
}
void Decryption() /*--------對(duì)存于outfile文件中的密文解碼,從哈夫曼樹的根接點(diǎn)按0,1分別選擇左右子樹,
直到葉子接點(diǎn),輸出葉子接點(diǎn)值-----*/
{
int m=2*len-1;
if((fin=fopen(Outfile,"r"))==NULL)
{
printf("Cannot open sourcefile!\n");
exit(0);
}
printf("Input the decfile!\n");
scanf("%s",decfile);
if((fout=fopen(decfile,"a"))==NULL)
{
printf("Cannot open decfile!\n");
exit(0);
}
while(!feof(fin))
{
i=m;
while(HT[i].lchildHT[i].rchild)
{
ch=fgetc(fin);
if(ch=='0') i=HT[i].lchild;
else if(ch=='1') i=HT[i].rchild;
else
{
printf("END!\n");
exit(0);
}
}
printf("%c",HT[i].data);
fprintf(fout,"%c",HT[i].data);
}
fclose(fin);
fclose(fout);
}
/*----------------主函數(shù)----------------------*/
void main()
{
void Init(); /*---------------聲明部分-------------------*/
void HuffmanCoding(int n);
void Encrytion();
void Decryption();
Init(); /*--------------初始化函數(shù)------------------*/
HuffmanCoding(len); /*--------------編碼函數(shù)--------------------*/
Encrytion(); /*--------------加密函數(shù)--------------------*/
Decryption(); /*--------------解密函數(shù)--------------------*/
}
VC 如何加密解密 ini 文本文檔
C++加密解密函數(shù)及用法示例
// 常量
#define C1 52845
#define C2 22719
CString Encrypt(CString S, WORD Key) // 加密函數(shù)
{
CString Result,str;
int i,j;
Result=S; // 初始化結(jié)果字符串
for(i=0; iS.GetLength(); i++) // 依次對(duì)字符串中各字符進(jìn)行操作
{
Result.SetAt(i, S.GetAt(i)^(Key8)); // 將密鑰移位后與字符異或
Key = ((BYTE)Result.GetAt(i)+Key)*C1+C2; // 產(chǎn)生下一個(gè)密鑰
}
S=Result; // 保存結(jié)果
Result.Empty(); // 清除結(jié)果
for(i=0; iS.GetLength(); i++) // 對(duì)加密結(jié)果進(jìn)行轉(zhuǎn)換
{
j=(BYTE)S.GetAt(i); // 提取字符
// 將字符轉(zhuǎn)換為兩個(gè)字母保存
str="12"; // 設(shè)置str長(zhǎng)度為2
str.SetAt(0, 65+j/26);//這里將65改大點(diǎn)的數(shù)例如256,密文就會(huì)變亂碼,效果更好,相應(yīng)的,解密處要改為相同的數(shù)
str.SetAt(1, 65+j%26);
Result += str;
}
return Result;
}
CString Decrypt(CString S, WORD Key) // 解密函數(shù)
{
CString Result,str;
int i,j;
Result.Empty(); // 清除結(jié)果
for(i=0; i S.GetLength()/2; i++) // 將字符串兩個(gè)字母一組進(jìn)行處理
{
j = ((BYTE)S.GetAt(2*i)-65)*26;);//相應(yīng)的,解密處要改為相同的數(shù)
j += (BYTE)S.GetAt(2*i+1)-65;
str="1"; // 設(shè)置str長(zhǎng)度為1
str.SetAt(0, j);
Result+=str; // 追加字符,還原字符串
}
S=Result; // 保存中間結(jié)果
for(i=0; iS.GetLength(); i++) // 依次對(duì)字符串中各字符進(jìn)行操作
{
Result.SetAt(i, (BYTE)S.GetAt(i)^(Key8)); // 將密鑰移位后與字符異或
Key = ((BYTE)S.GetAt(i)+Key)*C1+C2; // 產(chǎn)生下一個(gè)密鑰
}
return Result;
}
用法
CString text=_T("192.168.18.14");//需要加密的字符串
WORD key=1314;//key
CString jiami=Encrypt(text,key);//加密
AfxMessageBox(_T("密文:")+jiami);
CString jiemi=Decrypt(jiami,key);//解密
AfxMessageBox(_T("原文:")+jiemi);
VC++ RC4,加密解密, 使用問題
#include "rc4.h"
void main()
{
char key[]="abcd";
RC4_KEY stKey;
BYTE d1[4]={0x11,0x22,0x33,0x44};
//加密
RC4Init(key,strlen(key),stKey);
RC4Works(d1,4,stKey);
//解密
RC4Init(key,strlen(key),stKey);
RC4Works(d1,4,stKey);
}
廣州龍躍自動(dòng)化專業(yè)破解解密各類plc加密,全國24小時(shí)聯(lián)系手機(jī):18520649527 【關(guān)技術(shù)】 微信:guanshiyou009如有任何問題請(qǐng)打手機(jī)或者添加微信,謝謝支持