XCrypt - Encryption and decryption class wrapper






4.86/5 (19 votes)
This is an alternative for "XCrypt - Encryption and decryption class wrapper".
This article is built on top of 'XCrypt' -- the legendary cryptography wrapper which had been around in CodeProject for a while. Unfortunately the original author of the article has left it unattended for several years. I brought it to the attention of CP Team here: http://www.codeproject.com/Messages/4409016/Article-Adoption.aspx and as per the guidance I am submitting this alternative branch.
XCrypt helps as a generic encryption and decryption wrapper for .NET applications. Besides that, it adds the following two algorithms (which are not part of the .NET Base Class Library):
- Blowfish
- Twofish
As of this writing, I did have an observation of another algorithm called 'Blakesharp' (http://www.codeproject.com/Articles/286937/BlakeSharp-A-Csharp-Implementation-of-the-BLAKE-Ha). I have taken a humble initiative to get XCrypt updated in having able to use this algorithm too.
Background
- Basic concepts, BlowFish, TwoFish: Credits to the parent XCrypt
- Blakesharp: http://www.codeproject.com/Articles/286937/BlakeSharp-A-Csharp-Implementation-of-the-BLAKE-Ha
Using the code
The sample code initializes the engine to 3DES, you also can call
InitializeEngine
again to reset the engine to a different algorithm.
XCryptEngine xe = new XCryptEngine();
...
xe.InitializeEngine(XCryptEngine.AlgorithmType.TripleDES);
enc_str = xe.Encrypt(src_str);
dec_str = xe.Decrypt(enc_str);
xe.DestroyEngine();
NuGet:
You can get the latest reference to this assembly through NuGet here.
Points of Interest
- XCrypt earns the credit of making me learn different encryption algorithms besides kindling an interest to explore on them.
- .NET has a good cryptography library but the paucity of documentation in MSDN as an end-to-end solution makes you run pillar to post whilst trying to decide on a particular algorithm. XCrypt endeavors to fulfill the gap.
Change log:
The following are the changes from the parent program (XCrypt):
- Included the two BlakeSharp algorithms into XCrypt as I had highlighted.
- The Test Application had hard-coded 'This is a test string' as the initial value.
To make it a bit more realistic I have replaced that with
srcText.Text = Environment.UserName.Length > 0 ? Environment.UserName : "Hello World";
. - The Test Application had bloated piece of code that the algorithm names were repeatedly hard-bound. I have tried replacing that with a quick and small reflection
code (
LoadEnumMembers()
). - The Test Application had a bug that for hash where decryption would not be possible. I changed this by exposing two more public methods disabling the Decrypt button for the same.
- I have removed the setup and other projects which might not be of utility for a lot of users.
History
- First update built on XCrypt in a humble endeavor to make it a one-stop lookup for a cryptography library in .NET.
- Added a quick clipboard support to the application.
- 8th May 2013: Now you can have XCrypt from within a using block of the application so that memory is elegantly reclaimed.