📄 strciphr_8h.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++: strciphr.h File 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>strciphr.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>This file contains helper classes for implementing stream ciphers.<p>All this infrastructure may look very complex compared to what's in Crypto++ 4.x, but stream ciphers implementations now support a lot of new functionality, including better performance (minimizing copying), resetting of keys and IVs, and methods to query which features are supported by a cipher.<p>Here's an explanation of these classes. The word "policy" is used here to mean a class with a set of methods that must be implemented by individual stream cipher implementations. This is usually much simpler than the full stream cipher API, which is implemented by either AdditiveCipherTemplate or CFB_CipherTemplate using the policy. So for example, an implementation of <a class="el" href="struct_s_e_a_l.html">SEAL</a> only needs to implement the AdditiveCipherAbstractPolicy interface (since it's an additive cipher, i.e., it xors a keystream into the plaintext). See this line in <a class="el" href="seal_8h.html">seal.h</a>:<p>typedef SymmetricCipherFinalTemplate<ConcretePolicyHolder<SEAL_Policy<b>, AdditiveCipherTemplate<> > > Encryption;</b><p><b> AdditiveCipherTemplate and CFB_CipherTemplate are designed so that they don't need to take a policy class as a template parameter (although this is allowed), so that their code is not duplicated for each new cipher. Instead they each get a reference to an abstract policy interface by calling AccessPolicy() on itself, so AccessPolicy() must be overriden to return the actual policy reference. This is done by the ConceretePolicyHolder class. Finally, SymmetricCipherFinalTemplate implements the constructors and other functions that must be implemented by the most derived class.</b><p><b></b><p>Definition in file <a class="el" href="strciphr_8h-source.html">strciphr.h</a>.<p><code>#include "seckey.h"</code><br><code>#include "secblock.h"</code><br><p><a href="strciphr_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Compounds</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><b>AbstractPolicyHolder</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><b>ConcretePolicyHolder</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><b>AdditiveCipherAbstractPolicy</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><b>AdditiveCipherConcretePolicy</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><b>AdditiveCipherConcretePolicy::KeystreamOutput</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><b>AdditiveCipherTemplate</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><b>CFB_CipherAbstractPolicy</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><b>CFB_CipherConcretePolicy</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><b>CFB_CipherConcretePolicy::RegisterOutput</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><b>CFB_CipherTemplate</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><b>CFB_EncryptionTemplate</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><b>CFB_DecryptionTemplate</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><b>SymmetricCipherFinalTemplate</b></td></tr><tr><td colspan=2><br><h2>Enumerations</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom><b>KeystreamOperation</b> { <b>WRITE_KEYSTREAM</b>, <b>XOR_KEYSTREAM</b>, <b>XOR_KEYSTREAM_INPLACE</b> }</td></tr></table><hr size="1"><address style="align: right;"><small>Generated on Tue Jul 8 23:34:31 2003 for Crypto++ by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.2 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -