Search code examples
c++hashcrypto++

Using Crypto++ to generate random hashes with SHA1


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.


Solution

  • 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))));
    }