@T16-2 E.風聲
#include<cstdio>
#include<iostream>
#include<cstring>
#include<ctime>
#include<cstdlib>
using namespace std;
typedef unsigned char UCHAR;
void makeKey(UCHAR s[],int len){
for(int i=0;i<len;++i)
s[i]=rand()%256;
s[len]=0;
}
void HEX(UCHAR s[],int len){
for(int i=0;i<len;++i)
printf("%02X",s[i]);
printf("\n");
}
void XOR(const UCHAR a[],const UCHAR b[],UCHAR c[],int len){
for(int i=0;i<len;++i){
c[i]=a[i]^b[i];
}
c[len]=0;
}
int main(){
srand(time(NULL));
UCHAR S[]="哈囉你好嗎衷心感謝珍重再見期待再相逢";
UCHAR A[40],B[40],TA[40],TAB[40],TB[40];
int len=strlen((char*)S);
makeKey(A,len);
makeKey(B,len);
cout<<"Key Len:"<<len<<endl;
cout<<"===========AC==========\n";
HEX(S,len);
cout<<"===========A===========\n";
HEX(A,len);
cout<<"===========B===========\n";
HEX(A,len);
cout<<endl;
//TA
XOR(S,A,TA,len);
//TAB
XOR(TA,B,TAB,len);
//TB
XOR(TAB,A,TB,len);
//User Get
cout<<"Input:"<<endl;
cout<<"===========TA==========\n";
HEX(TA,len);
cout<<"===========TAB=========\n";
HEX(TAB,len);
cout<<"===========TB==========\n";
HEX(TB,len);
UCHAR cB[60],ans[40];
cout<<"check : \n";
XOR(TA,TAB,cB,len);
XOR(cB,TB,ans,len);
cout<<endl;
cout<<"===========TB==========\n";
HEX(ans,len);
puts((char*)ans);
}