📄 class_hash_transformation.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Crypto++: HashTransformation class Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.2 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File Members</a></div><h1>HashTransformation Class Reference</h1><code>#include <<a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>></code><p><p>Inheritance diagram for HashTransformation:<p><center><img src="class_hash_transformation.png" usemap="#HashTransformation_map" border="0" alt=""></center><map name="HashTransformation_map"><area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="0,56,299,80"><area href="class_clonable.html" alt="Clonable" shape="rect" coords="0,0,299,24"><area href="class_adler32.html" alt="Adler32" shape="rect" coords="309,168,608,192"><area href="class_c_r_c32.html" alt="CRC32" shape="rect" coords="309,224,608,248"><area href="class_m_d2.html" alt="MD2" shape="rect" coords="309,504,608,528"><area href="class_message_authentication_code.html" alt="MessageAuthenticationCode" shape="rect" coords="309,560,608,584"><area href="class_sapphire_hash.html" alt="SapphireHash" shape="rect" coords="309,672,608,696"><area href="class_truncated_hash_template.html" alt="TruncatedHashTemplate< T >" shape="rect" coords="309,728,608,752"></map><a href="class_hash_transformation-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>interface for hash functions and data processing part of MACs <p>HashTransformation objects are stateful. They are created in an initial state, change state as <a class="el" href="class_hash_transformation.html#_x_m_a_c_ca5">Update()</a> is called, and return to the initial state when <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final()</a> is called. This interface allows a large message to be hashed in pieces by calling <a class="el" href="class_hash_transformation.html#_x_m_a_c_ca5">Update()</a> on each piece followed by calling <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final()</a>. <p><p>Definition at line <a class="el" href="cryptlib_8h-source.html#l00515">515</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>.<table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca5" doxytag="HashTransformation::Update"></a>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_ca5">Update</a> (const byte *input, unsigned int length)=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">process more input <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca6" doxytag="HashTransformation::CreateUpdateSpace"></a>virtual byte * </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_ca6">CreateUpdateSpace</a> (unsigned int &size)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">request space to write input into <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final</a> (byte *digest)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">compute hash for current message, then restart for a new message </em> <a href="#_x_m_a_c_c___basea13"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca8" doxytag="HashTransformation::Restart"></a>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_ca8">Restart</a> ()</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">discard the current state, and restart with a new message <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca9" doxytag="HashTransformation::DigestSize"></a>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_ca9">DigestSize</a> () const=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">size of the hash returned by <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca10" doxytag="HashTransformation::BlockSize"></a>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_ca10">BlockSize</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">block size of underlying compression function, or 0 if not block based <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca11" doxytag="HashTransformation::OptimalBlockSize"></a>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_ca11">OptimalBlockSize</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">input to <a class="el" href="class_hash_transformation.html#_x_m_a_c_ca5">Update()</a> should have length a multiple of this for optimal speed <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea14" doxytag="HashTransformation::CalculateDigest"></a>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea14">CalculateDigest</a> (byte *digest, const byte *input, unsigned int length)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">use this if your input is in one piece and you don't want to call <a class="el" href="class_hash_transformation.html#_x_m_a_c_ca5">Update()</a> and <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final()</a> separately <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea15">Verify</a> (const byte *digest)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">verify that digest is a valid digest for the current message, then reinitialize the object </em> <a href="#_x_m_a_c_c___basea15"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea16" doxytag="HashTransformation::VerifyDigest"></a>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea16">VerifyDigest</a> (const byte *digest, const byte *input, unsigned int length)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">use this if your input is in one piece and you don't want to call <a class="el" href="class_hash_transformation.html#_x_m_a_c_ca5">Update()</a> and <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea15">Verify()</a> separately <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca15" doxytag="HashTransformation::TruncatedFinal"></a>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_ca15">TruncatedFinal</a> (byte *digest, unsigned int digestSize)=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea17" doxytag="HashTransformation::CalculateTruncatedDigest"></a>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea17">CalculateTruncatedDigest</a> (byte *digest, unsigned int digestSize, const byte *input, unsigned int length)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea14">CalculateDigest()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca17" doxytag="HashTransformation::TruncatedVerify"></a>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_ca17">TruncatedVerify</a> (const byte *digest, unsigned int digestLength)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea15">Verify()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea18" doxytag="HashTransformation::VerifyTruncatedDigest"></a>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea18">VerifyTruncatedDigest</a> (const byte *digest, unsigned int digestLength, const byte *input, unsigned int length)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea16">VerifyDigest()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_zlib_decompressora17" doxytag="HashTransformation::AlgorithmName"></a>virtual std::string </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_zlib_decompressora17">AlgorithmName</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns name of this algorithm, not universally implemented yet <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_zlib_decompressora18" doxytag="HashTransformation::Clone"></a>virtual <a class="el" href="class_clonable.html">Clonable</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_zlib_decompressora18">Clone</a> () const</td></tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -