/*
This program shows encoding of an integer into a byte array
and again decoding the byte array into integer.
This encoding and decoding is basically used when we need to give a byte array to SHA256 or SHA512
*/
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
#include <cryptopp/integer.h>
using CryptoPP::Integer;
#include <cryptopp/sha.h>
using CryptoPP::SHA512;
Integer hashOfInteger(const Integer &a) // {0,1}* -> Zp*
{
cout<<"Finding hash of "<<a<<endl;
// using SHA512 here
int byteCount=a.BitCount()/8;
if(a.BitCount()%8!=0)
byteCount++;
byte byteArray[byteCount];
byte digest[SHA512::DIGESTSIZE];
a.Encode(byteArray,byteCount);
// now byte array contains bytes corresponding to the Integer a
SHA512().CalculateDigest(digest,byteArray,byteCount);
Integer result;
result.Decode(digest,SHA512::DIGESTSIZE);
return result;
}
int main()
{
int n;
cin>>n;
cout<<"result = "<<hashOfInteger(Integer::Power2(n))<<endl;
return 0;
}
Tuesday, 20 June 2017
Hash Functions and Encoding and Decoding of Integer in Crypto++
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment