#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char TA[100];
char TAB[100];
char TB[100];
char T[100];
char A[100];
char B[100];
string str;
char change(char c)
{
if('0' <= c && c <= '9')
return c-'0';
return c-'A'+10;
}
int main()
{
int len;
str = "207A35304765D69D9670F53856584E952BCDE2F8CA939CC01F82840E2934071EC91F7058";
len = str.size();
for(int i = 0 ; i < len ; i+=2, TA[i]='\0')
TA[i/2] = (change(str[i])<<4)+change(str[i+1]);
str = "FD34A487207AC50873EF2AB01243AEF677D4B40ADD7A82F1C9FFB0B2394F7199F590DA97";
for(int i = 0 ; i < len ; i+=2, TAB[i]='\0')
TAB[i/2] = (change(str[i])<<4)+change(str[i+1]);
str = "76EC54D8C05EB5FB53436FC2E0C457339DDBFA31BA42B8707EDE807DBBA6D0C6905419B4";
for(int i = 0 ; i < len ; i+=2, TB[i]='\0')
TB[i/2] = (change(str[i])<<4)+change(str[i+1]);
for(int i = 0 ; i < len/2 ; i++)
B[i] = TA[i] ^ TAB[i];
for(int i = 0 ; i < len/2 ; i++)
T[i] = TB[i] ^ B[i];
T[len/2] = '\0';
puts(T);
return 0;
}
#include<iostream>
#include<sstream>
using namespace std;
char hex2char(char hex1,char hex2)
{
int c=0;
string s; s+=hex1; s+=hex2;
istringstream ss(s);
ss>>hex>>c;
return c;
}
int main()
{
string a,b,c;
ostringstream oss;
a="207A35304765D69D9670F53856584E952BCDE2F8CA939CC01F82840E2934071EC91F7058";
b="FD34A487207AC50873EF2AB01243AEF677D4B40ADD7A82F1C9FFB0B2394F7199F590DA97";
c="76EC54D8C05EB5FB53436FC2E0C457339DDBFA31BA42B8707EDE807DBBA6D0C6905419B4";
//cin>>a>>b>>c;
for(int i=0;i<a.size();i+=2)
{
int ha,hb,hc;
ha=hex2char(a[i],a[i+1]);
hb=hex2char(b[i],b[i+1]);
hc=hex2char(c[i],c[i+1]);
oss<<char(ha^hb^hc);
}
cout<<oss.str()<<endl;
}
@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);
}