#include<iostream>
#include<algorithm>
using std::cout;
using std::cin;
using std::endl;
#include<cryptopp/integer.h>
using CryptoPP::Integer;
Integer XOR(Integer &a,Integer &b)
{
Integer result=0;
if(a>b)
{
for(int i=a.BitCount()-1;i>=b.BitCount();i--)
result=result*2 + a.GetBit(i);
for(int i=b.BitCount()-1;i>=0;i--)
result=result*2 + (a.GetBit(i) ^ b.GetBit(i));
}
else
{
for(int i=b.BitCount()-1;i>=a.BitCount();i--)
result=result*2 + b.GetBit(i);
for(int i=a.BitCount()-1;i>=0;i--)
result=result*2 + (a.GetBit(i) ^ b.GetBit(i));
}
return result;
}
void printBits(Integer &a)
{
for(int i=a.BitCount()-1;i>=0;i--)
cout<<a.GetBit(i);
cout<<endl;
}
int main()
{
int x,y;
cin>>x>>y;
Integer a(Integer::Power2(x));
Integer b(Integer::Power2(y));
cout<<XOR(a,b)<<endl;
return 0;
}
Tuesday, 20 June 2017
Integer XOR in Crypto++
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment