4

I need to generate a random hash using Crypto++, using SHA1. At the moment I have:

#include <cryptopp/sha.h>
#include <cryptopp/filters.h>
#include <cryptopp/hex.h>

...

CryptoPP::SHA1 sha1;
string source = "Hello";  //This will be randomly generated somehow
string hash = "";
StringSource(source, true, new HashFilter(sha1, new HexEncoder(new StringSink(hash))));

When I come to compile, I get the following error reported:

error: expected type-specifier before 'HashFilter'
error: expected ')' before 'HashFilter'
error: 'StringSource' was not declared in this scope

Can anyone help me to get this working? Is there a much simpler way of performing this using this library? I am new to using Crypto++ so all help will be much appreciated.

Thanks.

jww
  • 97,681
  • 90
  • 411
  • 885
MeanwhileInHell
  • 6,780
  • 17
  • 57
  • 106

1 Answers1

10

Just specify your namespaces correctly and carefully:

#include <cryptopp/sha.h>
#include <cryptopp/filters.h>
#include <cryptopp/hex.h>

#include <string>

int main()
{
  CryptoPP::SHA1 sha1;
  std::string source = "Hello";  //This will be randomly generated somehow
  std::string hash = "";
  CryptoPP::StringSource(source, true, new CryptoPP::HashFilter(sha1, new CryptoPP::HexEncoder(new CryptoPP::StringSink(hash))));
}
Kerrek SB
  • 464,522
  • 92
  • 875
  • 1,084
  • Great, thanks a lot. I thought I had tried this previously, but must've missed something! – MeanwhileInHell Aug 08 '11 at 13:04
  • 7
    THANK YOU! The cryptopp documentation has **no** examples. – kipple Jun 20 '13 at 15:52
  • 2
    Documentation is not the proper place to look since its an API reference (you are talking about the links at the top of the homepage, right?). Try the [Crypto++ Wiki](http://www.cryptopp.com/wiki/Main_Page). In particular, the [Sample Category](http://www.cryptopp.com/wiki/Category:Sample). – jww Oct 02 '13 at 05:31