📄 strciphr_8h-source.html
字号:
<a name="l00232"></a>00232 <span class="keyword">template</span> <<span class="keyword">class</span> BASE><a name="l00233"></a><a class="code" href="class_c_f_b___cipher_template.html">00233</a> <span class="keyword">class </span>CRYPTOPP_NO_VTABLE CFB_CipherTemplate : <span class="keyword">public</span> BASE<a name="l00234"></a>00234 {<a name="l00235"></a>00235 <span class="keyword">public</span>:<a name="l00236"></a>00236 <span class="keywordtype">void</span> ProcessData(byte *outString, <span class="keyword">const</span> byte *inString, <span class="keywordtype">size_t</span> length);<a name="l00237"></a>00237 <span class="keywordtype">void</span> Resynchronize(<span class="keyword">const</span> byte *iv);<a name="l00238"></a><a class="code" href="class_c_f_b___cipher_template.html#3055f5f53d6770aacfb4c042f75e5dab">00238</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> OptimalBlockSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> this->GetPolicy().GetBytesPerIteration();}<a name="l00239"></a><a class="code" href="class_c_f_b___cipher_template.html#dae738b3fbef96cb5ed6c0f37f6e9621">00239</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> GetOptimalNextBlockSize()<span class="keyword"> const </span>{<span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)m_leftOver;}<a name="l00240"></a><a class="code" href="class_c_f_b___cipher_template.html#3efd5acd93a2e3601d80bbbf9beaaf1d">00240</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> OptimalDataAlignment()<span class="keyword"> const </span>{<span class="keywordflow">return</span> this->GetPolicy().GetAlignment();}<a name="l00241"></a><a class="code" href="class_c_f_b___cipher_template.html#71489329f90306fbf7916335b9bc0ca9">00241</a> <span class="keywordtype">bool</span> IsRandomAccess()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}<a name="l00242"></a><a class="code" href="class_c_f_b___cipher_template.html#dd3c4fa05f62c3e601faa4a469ee108d">00242</a> <span class="keywordtype">bool</span> IsSelfInverting()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}<a name="l00243"></a>00243 <a name="l00244"></a><a class="code" href="class_c_f_b___cipher_template.html#9e72e3524dd351fd0e87382fe84cd306">00244</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> BASE::PolicyInterface PolicyInterface;<a name="l00245"></a>00245 <a name="l00246"></a>00246 <span class="keyword">protected</span>:<a name="l00247"></a>00247 <span class="keyword">virtual</span> <span class="keywordtype">void</span> CombineMessageAndShiftRegister(byte *output, byte *reg, <span class="keyword">const</span> byte *message, <span class="keywordtype">size_t</span> length) =0;<a name="l00248"></a>00248 <a name="l00249"></a>00249 <span class="keywordtype">void</span> UncheckedSetKey(<span class="keyword">const</span> byte *key, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keyword">const</span> <a class="code" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> &params);<a name="l00250"></a>00250 <a name="l00251"></a><a class="code" href="class_c_f_b___cipher_template.html#1360b5b5f16118705792176b1847027a">00251</a> <span class="keywordtype">size_t</span> m_leftOver;<a name="l00252"></a>00252 };<a name="l00253"></a>00253 <a name="l00254"></a>00254 <span class="keyword">template</span> <<span class="keyword">class</span> BASE = AbstractPolicyHolder<CFB_CipherAbstractPolicy, SymmetricCipher> ><a name="l00255"></a><a class="code" href="class_c_f_b___encryption_template.html">00255</a> <span class="keyword">class </span>CRYPTOPP_NO_VTABLE CFB_EncryptionTemplate : <span class="keyword">public</span> CFB_CipherTemplate<BASE><a name="l00256"></a>00256 {<a name="l00257"></a>00257 <span class="keywordtype">bool</span> IsForwardTransformation()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}<a name="l00258"></a>00258 <span class="keywordtype">void</span> CombineMessageAndShiftRegister(byte *output, byte *reg, <span class="keyword">const</span> byte *message, <span class="keywordtype">size_t</span> length);<a name="l00259"></a>00259 };<a name="l00260"></a>00260 <a name="l00261"></a>00261 <span class="keyword">template</span> <<span class="keyword">class</span> BASE = AbstractPolicyHolder<CFB_CipherAbstractPolicy, SymmetricCipher> ><a name="l00262"></a><a class="code" href="class_c_f_b___decryption_template.html">00262</a> <span class="keyword">class </span>CRYPTOPP_NO_VTABLE CFB_DecryptionTemplate : <span class="keyword">public</span> CFB_CipherTemplate<BASE><a name="l00263"></a>00263 {<a name="l00264"></a>00264 <span class="keywordtype">bool</span> IsForwardTransformation()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}<a name="l00265"></a>00265 <span class="keywordtype">void</span> CombineMessageAndShiftRegister(byte *output, byte *reg, <span class="keyword">const</span> byte *message, <span class="keywordtype">size_t</span> length);<a name="l00266"></a>00266 };<a name="l00267"></a>00267 <a name="l00268"></a>00268 <span class="keyword">template</span> <<span class="keyword">class</span> BASE><a name="l00269"></a><a class="code" href="class_c_f_b___require_full_data_blocks.html">00269</a> <span class="keyword">class </span><a class="code" href="class_c_f_b___require_full_data_blocks.html">CFB_RequireFullDataBlocks</a> : <span class="keyword">public</span> BASE<a name="l00270"></a>00270 {<a name="l00271"></a>00271 <span class="keyword">public</span>:<a name="l00272"></a><a class="code" href="class_c_f_b___require_full_data_blocks.html#50110baae9ee5d0821f7c7cf00adc584">00272</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="class_c_f_b___require_full_data_blocks.html#50110baae9ee5d0821f7c7cf00adc584">MandatoryBlockSize</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> this->OptimalBlockSize();}<a name="l00273"></a>00273 };<a name="l00274"></a>00274 <span class="comment"></span><a name="l00275"></a>00275 <span class="comment">//! _</span><a name="l00276"></a>00276 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> BASE, <span class="keyword">class</span> INFO = BASE><a name="l00277"></a><a class="code" href="class_symmetric_cipher_final.html">00277</a> <span class="keyword">class </span><a class="code" href="class_symmetric_cipher_final.html" title="_">SymmetricCipherFinal</a> : <span class="keyword">public</span> <a class="code" href="class_algorithm_impl.html" title="_">AlgorithmImpl</a><SimpleKeyingInterfaceImpl<BASE, INFO>, INFO><a name="l00278"></a>00278 {<a name="l00279"></a>00279 <span class="keyword">public</span>:<a name="l00280"></a><a class="code" href="class_symmetric_cipher_final.html#2d1682edd7a8ec665a2f45f3109b7660">00280</a> <a class="code" href="class_symmetric_cipher_final.html#2d1682edd7a8ec665a2f45f3109b7660">SymmetricCipherFinal</a>() {}<a name="l00281"></a><a class="code" href="class_symmetric_cipher_final.html#9d94e7e8c1b2804c13d62ae227d60bb5">00281</a> <a class="code" href="class_symmetric_cipher_final.html#2d1682edd7a8ec665a2f45f3109b7660">SymmetricCipherFinal</a>(<span class="keyword">const</span> byte *key)<a name="l00282"></a>00282 {this->SetKey(key, this->DEFAULT_KEYLENGTH);}<a name="l00283"></a><a class="code" href="class_symmetric_cipher_final.html#8b33ceb6b2889f1ba3a81570b77b0529">00283</a> <a class="code" href="class_symmetric_cipher_final.html#2d1682edd7a8ec665a2f45f3109b7660">SymmetricCipherFinal</a>(<span class="keyword">const</span> byte *key, <span class="keywordtype">size_t</span> length)<a name="l00284"></a>00284 {this->SetKey(key, length);}<a name="l00285"></a><a class="code" href="class_symmetric_cipher_final.html#48ea66f5aed98d2b2b4959a28f8179cd">00285</a> <a class="code" href="class_symmetric_cipher_final.html#2d1682edd7a8ec665a2f45f3109b7660">SymmetricCipherFinal</a>(<span class="keyword">const</span> byte *key, <span class="keywordtype">size_t</span> length, <span class="keyword">const</span> byte *iv)<a name="l00286"></a>00286 {this->SetKeyWithIV(key, length, iv);}<a name="l00287"></a>00287 <a name="l00288"></a><a class="code" href="class_symmetric_cipher_final.html#75544ff20b50a7eb76080a043c97e941">00288</a> <a class="code" href="class_clonable.html" title="interface for cloning objects, this is not implemented by most classes yet">Clonable</a> * <a class="code" href="class_symmetric_cipher_final.html#75544ff20b50a7eb76080a043c97e941">Clone</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="class_symmetric_cipher.html" title="interface for one direction (encryption or decryption) of a stream cipher or cipher...">SymmetricCipher</a> *<span class="keyword">></span>(<span class="keyword">new</span> <a class="code" href="class_symmetric_cipher_final.html" title="_">SymmetricCipherFinal<BASE, INFO></a>(*this));}<a name="l00289"></a>00289 };<a name="l00290"></a>00290 <a name="l00291"></a>00291 NAMESPACE_END<a name="l00292"></a>00292 <a name="l00293"></a>00293 <span class="preprocessor">#ifdef CRYPTOPP_MANUALLY_INSTANTIATE_TEMPLATES</span><a name="l00294"></a>00294 <span class="preprocessor"></span><span class="preprocessor">#include "strciphr.cpp"</span><a name="l00295"></a>00295 <span class="preprocessor">#endif</span><a name="l00296"></a>00296 <span class="preprocessor"></span><a name="l00297"></a>00297 NAMESPACE_BEGIN(CryptoPP)<a name="l00298"></a>00298 CRYPTOPP_DLL_TEMPLATE_CLASS <a class="code" href="class_two_bases.html" title="_">TwoBases</a><<a class="code" href="class_symmetric_cipher.html" title="interface for one direction (encryption or decryption) of a stream cipher or cipher...">SymmetricCipher</a>, <a class="code" href="class_random_number_generator.html" title="interface for random number generators">RandomNumberGenerator</a>>;<a name="l00299"></a>00299 CRYPTOPP_DLL_TEMPLATE_CLASS <a class="code" href="class_abstract_policy_holder.html">AbstractPolicyHolder</a><<a class="code" href="struct_additive_cipher_abstract_policy.html">AdditiveCipherAbstractPolicy</a>, <a class="code" href="class_two_bases.html" title="_">TwoBases</a><SymmetricCipher, RandomNumberGenerator> >;<a name="l00300"></a>00300 CRYPTOPP_DLL_TEMPLATE_CLASS AdditiveCipherTemplate<<a class="code" href="class_abstract_policy_holder.html">AbstractPolicyHolder</a><AdditiveCipherAbstractPolicy, <a class="code" href="class_two_bases.html" title="_">TwoBases</a><SymmetricCipher, RandomNumberGenerator> > >;<a name="l00301"></a>00301 CRYPTOPP_DLL_TEMPLATE_CLASS CFB_CipherTemplate<<a class="code" href="class_abstract_policy_holder.html">AbstractPolicyHolder</a><CFB_CipherAbstractPolicy, SymmetricCipher> >;<a name="l00302"></a>00302 CRYPTOPP_DLL_TEMPLATE_CLASS CFB_EncryptionTemplate<<a class="code" href="class_abstract_policy_holder.html">AbstractPolicyHolder</a><CFB_CipherAbstractPolicy, SymmetricCipher> >;<a name="l00303"></a>00303 CRYPTOPP_DLL_TEMPLATE_CLASS CFB_DecryptionTemplate<<a class="code" href="class_abstract_policy_holder.html">AbstractPolicyHolder</a><CFB_CipherAbstractPolicy, SymmetricCipher> >;<a name="l00304"></a>00304 NAMESPACE_END<a name="l00305"></a>00305 <a name="l00306"></a>00306 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 1 11:11:25 2007 for Crypto++ by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -