HashFilter
Documentation |
#include <cryptopp/filters.h>
|
HashFilter uses the specified hash algorithm to calculate the hash of all input data up to the first MessageEnd
signal, at which time it outputs the resulting hash value to its attached transformation. The companion class is the HashVerificationFilter.
The HashFilter
takes a pointer to a BufferedTransformation
. Because a pointer is taken, the HashFilter
owns the attached transformation, and therefore will destroy it. See ownership for more details.
Sources, filters and sinks are discussed at Pipelining. The pipeline article explains the design and shows you how to use them.
Construction
HashFilter(HashTransformation &hm, BufferedTransformation *attachment=NULL, bool putMessage=false, int truncatedDigestSize=-1)
hm
is a hash, like MD5, SHA-1, RIPEMD-160, SHA-256.
attachment
is a BufferedTransformation, such as another filter or sink. If attachment
is NULL
, then the HashFilter
object will internally accumulate the output byte stream.
putMessage
indicates whether the hash should be output along with the message. If true
, then the hash is appended to the message.
truncatedDigestSize
indicates the size of the digest to output. If the value is -1
, then the full digest size is output.
Examples
Hash the string "Yoda said, Do or do not. There is no try." with SHA256:
string source, value; SHA256 hash; source = "Yoda said, Do or do not. There is no try."; StringSource ss( source, true /* PumpAll */, new HashFilter( hash, new HexEncoder( new StringSink( value ) ) // HexEncoder ) // HashFilter ); // StringSource cout << source << endl; cout << value << endl;
Hash the contents of a file rather than a string:
FileSource fs( filename, true /* PumpAll */, new HashFilter( hash, new HexEncoder( new StringSink( value ) ) // HexEncoder ) // HashFilter ); // FileSource
Format the string to something similar to 0C:AE:59:41:2D:32:72:C1:2A:49:85:93:0F:31:3D:C1
:
FileSource fs( filename, true /* PumpAll */, new HashFilter( hash, new HexEncoder( new StringSink( value ), true /*UCase*/, 2 /*Grouping*/ ) // HexEncoder ) // HashFilter ); // FileSource
Downloads
No downloads.