| Class | Description |
| AESCryptoKey | Provides AES-256 bit encryption using a global IV (Init vector) based on the current process' entry assembly. |
| AsciiEncoder | This class has been moved to CSharpTest.Net.Formatting.Safe64Encoding |
| AsymmetricKey | Provides the ability to encrypt and decrypt block-transform data |
| BinaryComparer | Dictionary comparer for comparing arrays of bytes by value equality |
| CryptoKey | Base class for encryption/decryption classes |
| Encryption | Maintains backwards compatibility for access to the encryption api |
| Hash | Represents a comparable, sortable, hash code |
| HashDerivedBytes<THash> | Provided an implementation very similiar to that of the Rfc2898DeriveBytes with the following excpetions: 1) any hash size can be used, 2) original key bytes are always hashed, 3) bytes generated are always rounded to hash size, thus GetBytes(4) + GetBytes(4) != GetBytes(8) |
| HashStream | Represents a writtable stream for computing the hash value without retaining the data |
| LocalHostKey | Provides access to local machine and local user encryption via the ProtectedData class |
| ModifiedRijndael | This class is provided to essentially unlock the Rijndael algorithm from the constraints imposed by the AES standards. The Rijndael algorithm here supports a wider length of key sizes and allows users to explicitly set the number of rounds. This class is fully AES compliant when used with key sizes of 16, 24, or 32 bytes with rounds of 10, 12, and 14 respectivly. |
| Password | Stores an encrypted version of the supplied password in memory so that it can be provided as clear-text to external systems. |
| Password.EqualityComparer | Implements the equality comparer |
| PasswordHash | Creates a salted hash |
| PasswordKey | Creates an in-memory object that can be used for salted password encryption without storing the password in memory (based on Rfc2898DeriveBytes, SHA1 hash of password is stored) |
| PBKDF2 | Provided an implementation of Rfc2898DeriveBytes accessable via the IPasswordDerivedBytes interface. One primary difference in GetBytes() ensures that the number of bytes generated are always rounded to hash size, thus GetBytes(4) + GetBytes(4) != GetBytes(8) |
| RSAPrivateKey | Provides a wrapper around encrypting/decrypting with public/private key pairs from Certificats or CSP |
| RSAPublicKey | Provides a wrapper around encrypting with public keys from Certificats or CSP |
| RtlProcessKey | Provides the ability to encrypt and decrypt data accessable by the current process only, requires |
| Salt | Represents a random sequence of bytes used to combine with hash and encryption values to provide an extra level of security. |
| SaltedData | Represents the combination of Salt and Data together |
| SecureStringStream | Allows you to stream raw bytes from a secure string, use UTF16 to decode text |
| SecureStringUtils | Various utility methods for access to secure strings. Lets be real about this before you go off, SecureString is NOT secure, it obfuscated. If your in the process you can access it's contents; however, if you looking at a crash dump or swap file then the SecureString provides value... just not much ;) So these methods are actually my attempt to get people to USE a SecureString or similar class (i.e. Password) rather than continuing to use plain text strings. Hopefully with the ease of access within the process we can provide better security without. |
| SecureTransfer | SecureTransfer is a static class that contains two user types, Sender and Receiver. Each provide one-half of a secure file transfer protocol. The security is based on pre-shared public keys used to sign all messages between the client and server. Additionally these keys are used durring the session negotiation to exchange a 256-bit session key. The session key is combined with a random salt for each message to produce an AES-256 cryptographic key. The file content is then tranfered with this session key. |
| SecureTransfer.BeginTransferEventArgs | Event args that provides details about the start of a transfer |
| SecureTransfer.BytesReceivedEventArgs | Event args that provides details about the contents of a transfer |
| SecureTransfer.Client | Provides a file transfer handler for the client-side of file transfers. |
| SecureTransfer.CompleteTransferEventArgs | Event args that provides details about the completion of a transfer |
| SecureTransfer.DownloadBytesEventArgs | Event args that provides details about the contents of a transfer |
| SecureTransfer.Server | Provides a file transfer handler for the server-side (receiver) of file transfers. |
| UnicodeReader | Bufferless stream reader for Unicode data |
| WhirlpoolManaged | The Whirlpool hashing function. References The Whirlpool algorithm was developed by Paulo S. L. M. Barreto and Vincent Rijmen. See P.S.L.M. Barreto, V. Rijmen, ``The Whirlpool hashing function,'' NESSIE submission, 2000 (tweaked version, 2001), https://www.cosic.esat.kuleuven.ac.be/nessie/workshop/submissions/whirlpool.zip @author Paulo S.L.M. Barreto @author Vincent Rijmen. ============================================================================= .Net Coversion on May 2010 by Roger O Knapp http://csharptest.net Performance considerations: coult be improved by moving to unmanaged/unsafe implementations, currently SHA512 is about 10% faster. The code remains, as much as was possible, exactly as it appears in the example 'c' implementation available from the documentation package on http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html ============================================================================= @version 3.0 (2003.03.12) ============================================================================= Differences from version 2.1: - Suboptimal diffusion matrix replaced by cir(1, 1, 4, 1, 8, 5, 2, 9). ============================================================================= Differences from version 2.0: - Generation of ISO/IEC 10118-3 test vectors. - Bug fix: nonzero carry was ignored when tallying the data length (this bug apparently only manifested itself when feeding data in pieces rather than in a single chunk at once). - Support for MS Visual C++ 64-bit integer arithmetic. Differences from version 1.0: - Original S-box replaced by the tweaked, hardware-efficient version. ============================================================================= THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |