亚洲高清在线一区_女S丝袜调教女视频丨ⅤK_七七久久成人影院网站_秀人网艾小青国产精品视频_成 人 亚洲 综合_最新国产高清主播高清第一页_国产精品视频一区松下纱荣子_六六影院午夜伦理_18禁裸乳无遮挡自慰羞羞_日韩av在线光看

VC1plC解密的簡單介紹

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

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

}

VC與西門子plc通信的教程

問:我的下位機(jī)是西門子S7-300,上位機(jī)是由VC++編寫的監(jiān)控界面的PC機(jī),現(xiàn)在上位監(jiān)控與plc要實現(xiàn)通訊,請問有哪些通訊方式,哪種通訊方式比較好,每種方式是如何實現(xiàn)的?

答:1、Prodave通訊

Prodave是西門子提供的一個軟件包,為高級語言編程和plc通訊提供接口。

通訊接口:MPI

因為MPI口是每塊cpu的編程口,所以plc不需要另外添加通訊模塊,這個方案就比較經(jīng)濟(jì),而且prodave軟件包里面附帶了example和詳細(xì)的說明,用起來應(yīng)該比較簡單和方便(本人只匆匆看過文檔,沒有實驗過)。這方面的資料在百度上很多。當(dāng)然,mpi的速度是有限的,如果采用普通的pc adapter連接pc和plc,最高速度也就38.4kbps,我不知道prodave能否支持mpi卡(5611之類的話),如果可以的話速度可以達(dá)到187.5kbps。

2、串行通訊

看到過一些論文,采用串行通訊的方法實現(xiàn)pc和plc通訊。這種情況存在幾點要求:

a、需要為plc添加一塊串行通訊模塊,比如300的話就需要cp340或者cp341(前者便宜些);

b、plc里面需要對串行通訊進(jìn)行編程,其實也就是接收報文和發(fā)送報文,調(diào)用fb2/fb3(cp340的話)。

c、串行通訊的速度是有目共睹的,而且cp340或者cp341的數(shù)據(jù)吞吐量也是有限的,即報文長度是有限制的,因此個人認(rèn)為通訊數(shù)據(jù)量大的話采用串行通訊就不合適了。

d、報文格式的話就比較自由,但是也應(yīng)當(dāng)合理,我雖然沒有具體實驗過,但是個人認(rèn)為可以參考modbus的報文結(jié)構(gòu)來編程,甚至就采用modbus的規(guī)范,不過這樣的話要求編程者對pc和plc側(cè)的modbus編程都要熟悉。

3、opc

Opc是這些年來很流行的東西,其實我很討厭opc的安全認(rèn)證的設(shè)定。不過采用opc編程來訪問plc真的是一件非常輕松愜意的事情。你需要做的就是了解opc的結(jié)構(gòu)和編程,尤其是采用vb來編寫opc簡直是件傻瓜化的工作當(dāng)然也犧牲了很多。

前面我實驗了用vb通過opc(以太網(wǎng))來訪問300,包括用西門子的simaticnet提供的opc接口和第三方的kepserver。

采用opc接口編程的優(yōu)點:通訊速度快,編程簡單。

4、以太網(wǎng)編程

采用以太網(wǎng)編程訪問plc,其實又可以分為兩種:

一種是socket接口,需要在plc里面編程進(jìn)行收/發(fā),大概是fc5/fc6吧,印象不深了,當(dāng)然plc里面要定義一個connection,填好地址、端口號之類的信息,這個對于熟悉西門子工業(yè)通訊的人是很easy的事情。Pc側(cè)采用socket接口編程,最簡單的就是vb里面的wisock控件,當(dāng)然這掩蓋了很多細(xì)節(jié)。Socket編程本來就是一門藝術(shù),講究說學(xué)逗唱:)

這個方法的優(yōu)點應(yīng)該是pc側(cè)編程稍微簡單點(相對于后一種),而且可以不局限于windows平臺,因為socket接口被諸如unix支持的更好。

第二種是采用西門子的sapi接口函數(shù),這樣plc里面不需要過多的編程了,當(dāng)然pc側(cè)的編程難度就比較高了,ms只能用c來寫,所以我望而卻步鳥。

初學(xué)者可以結(jié)合plc視頻教程來學(xué)習(xí),技成plc不錯。

[img]

VC 簡單加密!

#include stdio.h

#include string.hvoid main()

{

char a[50] = "加密~!中英文都要支持!越簡單越好!";//原文

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];//將每一個原文字符跟密鑰字符異或

}

}

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

}

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++) // 依次對字符串中各字符進(jìn)行操作

{

Result.SetAt(i, S.GetAt(i)^(Key8)); // 將密鑰移位后與字符異或

Key = ((BYTE)Result.GetAt(i)+Key)*C1+C2; // 產(chǎn)生下一個密鑰

}

S=Result; // 保存結(jié)果

Result.Empty(); // 清除結(jié)果

for(i=0; iS.GetLength(); i++) // 對加密結(jié)果進(jìn)行轉(zhuǎn)換

{

j=(BYTE)S.GetAt(i); // 提取字符

// 將字符轉(zhuǎn)換為兩個字母保存

str="12"; // 設(shè)置str長度為2

str.SetAt(0, 65+j/26);//這里將65改大點的數(shù)例如256,密文就會變亂碼,效果更好,相應(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++) // 將字符串兩個字母一組進(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長度為1

str.SetAt(0, j);

Result+=str; // 追加字符,還原字符串

}

S=Result; // 保存中間結(jié)果

for(i=0; iS.GetLength(); i++) // 依次對字符串中各字符進(jìn)行操作

{

Result.SetAt(i, (BYTE)S.GetAt(i)^(Key8)); // 將密鑰移位后與字符異或

Key = ((BYTE)S.GetAt(i)+Key)*C1+C2; // 產(chǎn)生下一個密鑰

}

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

使用高級語言(C、C++、C#語言)實現(xiàn)一個加密/解密程序,調(diào)試并通過該程序。

同意一樓的看法,要不你就要赫夫曼編碼原理吧,這個比較簡單,實現(xiàn)也比較容易;根據(jù)字符出現(xiàn)的頻率作為字符權(quán)值,利用Huffman算法進(jìn)行處理,形成Huffman樹,得到Huffman碼,利用Huffman碼對字符進(jìn)行加密,已二進(jìn)制的形式存儲到磁盤。 再利用Huffman碼對加密后的文件解密。

#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{ /*-------------哈夫曼接點-------------*/

char data; /*-------------接點值-----------------*/

unsigned int weight; /*--------------權(quán)值------------------*/

unsigned int parent,lchild,rchild;

}HTNode,*HuffmanTree;

Linklist L; /*-------------鏈表頭接點--------------*/

Character T[256]; /*-----存放信息中出現(xiàn)的字符(不含漢字)----*/

HuffmanTree HT; /*--------------存放哈夫曼接點--------------*/

char *HC[257],*HA[256]; /*------HC中緊密存放哈夫曼編碼,HA中按字符值位置存放該字符的編碼,如A存放于HA中第65號元---*/

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) /*------對有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)計Infile中的字符數(shù)目len及每個字符出現(xiàn)的頻率------*/

{ /*-------將這len個字符存于T[0]到T[len-1]中,然后按頻率值將這len個字符按升序排列------*/

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) /*--------冒泡法對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() /*------------取出鏈表的前兩個權(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) /*-------對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文件中的每一個字符翻譯成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);

VC1plC解密的簡單介紹

fclose(fout);

}

void Decryption() /*--------對存于outfile文件中的密文解碼,從哈夫曼樹的根接點按0,1分別選擇左右子樹,

直到葉子接點,輸出葉子接點值-----*/

{

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ù)--------------------*/

}

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

上一篇:祁連縣信捷plc解密(信捷PLC手冊)
下一篇:

服務(wù)熱線

18520649527

24小時PLC破解咨詢電話

微信客服

微信客服