<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5186190474666807897</id><updated>2012-02-15T23:41:17.638-08:00</updated><title type='text'>Encryption In Csharp</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://encryptionincsharp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5186190474666807897/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://encryptionincsharp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Avinash Tiwari</name><uri>http://www.blogger.com/profile/15802356010881135678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_LGmdihF6s00/SbOiiR5usKI/AAAAAAAAACo/AetFd4M1LfU/S220/UploadedImage.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5186190474666807897.post-8850802828408336563</id><published>2009-05-30T06:29:00.001-07:00</published><updated>2009-05-30T06:29:24.383-07:00</updated><title type='text'>Symmetric Encryption Class</title><content type='html'>using System;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Security.Cryptography;&lt;br /&gt;using Encryption;&lt;br /&gt;&lt;br /&gt;namespace Encryption {&lt;br /&gt;&lt;br /&gt;    public class TripleDESEncryption {&lt;br /&gt;&lt;br /&gt;    public static string EncryptData(string data, out byte[] desKey, out byte[] desIV) {&lt;br /&gt;           MemoryStream output = new MemoryStream();&lt;br /&gt;        byte[] byteData = new UnicodeEncoding().GetBytes(data);&lt;br /&gt;&lt;br /&gt;          //Use the TripleDES symmetric encryption algorithm to encrypt our data. Without an IV, the&lt;br /&gt;           //same input block of plaintext will encrypt to same output block of ciphertext. IV guarantees&lt;br /&gt;        //output of two identical plaintext blocks are different.&lt;br /&gt;        TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();&lt;br /&gt;        CryptoStream crypt = new CryptoStream(output, des.CreateEncryptor(), CryptoStreamMode.Write);&lt;br /&gt;&lt;br /&gt;        //Assign our crypto-generated key and iv values to our output arguments&lt;br /&gt;        desKey = des.Key; desIV = des.IV;&lt;br /&gt;        crypt.Write(byteData, 0, byteData.Length);&lt;br /&gt;&lt;br /&gt;            crypt.Close(); output.Close();&lt;br /&gt;        return new UnicodeEncoding().GetString(output.ToArray());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static string EncryptData(byte[] desKey, byte[] desIV, string data) {&lt;br /&gt;        MemoryStream output = new MemoryStream();&lt;br /&gt;        byte[] byteData = new UnicodeEncoding().GetBytes(data);&lt;br /&gt;&lt;br /&gt;           //Use the TripleDES symmetric encryption algorithm to encrypt our data. Without an IV, the&lt;br /&gt;          //same input block of plaintext will encrypt to same output block of ciphertext. IV guarantees&lt;br /&gt;        //output of two identical plaintext blocks are different.&lt;br /&gt;        TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();&lt;br /&gt;        CryptoStream crypt = new CryptoStream(output, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);&lt;br /&gt;        crypt.Write(byteData, 0, byteData.Length);&lt;br /&gt;&lt;br /&gt;            crypt.Close(); output.Close();&lt;br /&gt;        return new UnicodeEncoding().GetString(output.ToArray());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static string DecryptData(string data, byte[] desKey, byte[] desIV) {&lt;br /&gt;        MemoryStream output = new MemoryStream();&lt;br /&gt;        byte[] byteData = new UnicodeEncoding().GetBytes(data);&lt;br /&gt;&lt;br /&gt;          //Use the TripleDES symmetric encryption algorithm to decrypt our data. In order for the ciphertext to be&lt;br /&gt;        //successfully decrypted, the exact same key and iv must be used when initially encryted.&lt;br /&gt;        TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();&lt;br /&gt;        CryptoStream crypt = new CryptoStream(output, des.CreateDecryptor(desKey, desIV), CryptoStreamMode.Write);&lt;br /&gt;        crypt.Write(byteData, 0, byteData.Length);&lt;br /&gt;&lt;br /&gt;         crypt.Close(); output.Close();&lt;br /&gt;        return new UnicodeEncoding().GetString(output.ToArray());&lt;br /&gt;    }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class CipherText {&lt;br /&gt;&lt;br /&gt;    static void Main() {&lt;br /&gt;    byte[] key; byte[] iv;&lt;br /&gt;        string password = "secret";&lt;br /&gt;    string cif = TripleDESEncryption.EncryptData(password, out key, out iv);&lt;br /&gt;    Console.WriteLine(TripleDESEncryption.DecryptData(cif, key, iv));&lt;br /&gt;&lt;br /&gt;        //NOTE: Key and IVector must be 16 bytes each&lt;br /&gt;    //byte[] key = UnicodeEncoding.Unicode.GetBytes("cornhle");&lt;br /&gt;    //string cif = TripleDESEncryption.EncryptData(key, key, password);&lt;br /&gt;    //Console.WriteLine(TripleDESEncryption.DecryptData(cif, key, key));&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5186190474666807897-8850802828408336563?l=encryptionincsharp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://encryptionincsharp.blogspot.com/feeds/8850802828408336563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://encryptionincsharp.blogspot.com/2009/05/symmetric-encryption-class.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5186190474666807897/posts/default/8850802828408336563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5186190474666807897/posts/default/8850802828408336563'/><link rel='alternate' type='text/html' href='http://encryptionincsharp.blogspot.com/2009/05/symmetric-encryption-class.html' title='Symmetric Encryption Class'/><author><name>Avinash Tiwari</name><uri>http://www.blogger.com/profile/15802356010881135678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_LGmdihF6s00/SbOiiR5usKI/AAAAAAAAACo/AetFd4M1LfU/S220/UploadedImage.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5186190474666807897.post-7942844628843482437</id><published>2009-05-30T06:28:00.001-07:00</published><updated>2009-05-30T06:28:59.234-07:00</updated><title type='text'>Encrypting data from one stream to another and attaching hash of the password</title><content type='html'>using System.Security.Cryptography;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Data;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;&lt;br /&gt;public class PasswordEncryptor&lt;br /&gt;{&lt;br /&gt;        private byte[] _keyBytes;&lt;br /&gt;        private byte[] _IVBytes;&lt;br /&gt;        private int _bufferSize=256;&lt;br /&gt;        private byte[] _hash;&lt;br /&gt;&lt;br /&gt;        public PasswordEncryptor(string password)&lt;br /&gt;        {&lt;br /&gt;                byte[] saltValueBytes  = null;&lt;br /&gt;                PasswordDeriveBytes pdb = new     PasswordDeriveBytes(password,saltValueBytes,"SHA1",50);&lt;br /&gt;                _keyBytes = pdb.GetBytes(32);&lt;br /&gt;                _IVBytes = pdb.GetBytes(16);&lt;br /&gt;&lt;br /&gt;                HashAlgorithm hasher = SHA256.Create();&lt;br /&gt;                _hash = hasher.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes("password"));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void EncryptWithHash(Stream input, ref Stream output)&lt;br /&gt;        {&lt;br /&gt;                output.Write(_hash,0,_hash.Length);&lt;br /&gt;&lt;br /&gt;                RijndaelManaged rj = new System.Security.Cryptography.RijndaelManaged();&lt;br /&gt;                rj.Mode= CipherMode.CBC;&lt;br /&gt;&lt;br /&gt;                ICryptoTransform trans = rj.CreateEncryptor(_keyBytes, _IVBytes);&lt;br /&gt;&lt;br /&gt;                CryptoStream cs = new CryptoStream(output, trans, CryptoStreamMode.Write);&lt;br /&gt;&lt;br /&gt;                byte[] bytes = new byte[_bufferSize];&lt;br /&gt;&lt;br /&gt;                int byteCount;&lt;br /&gt;&lt;br /&gt;                while((byteCount = input.Read(bytes, 0, bytes.Length))!= 0)&lt;br /&gt;                {&lt;br /&gt;                        cs.Write(bytes,0,byteCount);&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                cs.FlushFinalBlock();&lt;br /&gt;                //cs.Close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void DecryptWithHash(Stream input, ref Stream output)&lt;br /&gt;        {&lt;br /&gt;                byte[] inputHash = new byte[_hash.Length];&lt;br /&gt;                input.Read(inputHash,0,_hash.Length);&lt;br /&gt;&lt;br /&gt;                if (inputHash.Length!=_hash.Length) throw new Exception("Invalid Password");&lt;br /&gt;&lt;br /&gt;                for (int i=0;i&lt;_hash.Length;i++)&lt;br /&gt;                {&lt;br /&gt;                        if (_hash[i]!=inputHash[i]) throw new Exception("Invalid Password");&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                RijndaelManaged rj = new System.Security.Cryptography.RijndaelManaged();&lt;br /&gt;                rj.Mode= CipherMode.CBC;&lt;br /&gt;&lt;br /&gt;                ICryptoTransform trans = rj.CreateDecryptor(_keyBytes, _IVBytes);&lt;br /&gt;&lt;br /&gt;                CryptoStream cs = new CryptoStream(input, trans, CryptoStreamMode.Read);&lt;br /&gt;&lt;br /&gt;                byte[] bytes = new byte[_bufferSize];&lt;br /&gt;&lt;br /&gt;                int byteCount;&lt;br /&gt;&lt;br /&gt;                while((byteCount = cs.Read(bytes, 0, bytes.Length))!= 0)&lt;br /&gt;                {&lt;br /&gt;                        output.Write(bytes,0,byteCount);&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                cs.Flush();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5186190474666807897-7942844628843482437?l=encryptionincsharp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://encryptionincsharp.blogspot.com/feeds/7942844628843482437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://encryptionincsharp.blogspot.com/2009/05/encrypting-data-from-one-stream-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5186190474666807897/posts/default/7942844628843482437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5186190474666807897/posts/default/7942844628843482437'/><link rel='alternate' type='text/html' href='http://encryptionincsharp.blogspot.com/2009/05/encrypting-data-from-one-stream-to.html' title='Encrypting data from one stream to another and attaching hash of the password'/><author><name>Avinash Tiwari</name><uri>http://www.blogger.com/profile/15802356010881135678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_LGmdihF6s00/SbOiiR5usKI/AAAAAAAAACo/AetFd4M1LfU/S220/UploadedImage.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5186190474666807897.post-2243598923015175594</id><published>2009-05-30T06:27:00.000-07:00</published><updated>2009-05-30T06:28:10.175-07:00</updated><title type='text'>Basic Rijndael (AES) encryption</title><content type='html'>// Basic Rijndael (AES) encryption&lt;br /&gt;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Security.Cryptography;&lt;br /&gt;&lt;br /&gt;private static readonly byte[] SALT = new byte[] { 0x26, 0xdc, 0xff, 0x00, 0xad, 0xed, 0x7a, 0xee, 0xc5, 0xfe, 0x07, 0xaf, 0x4d, 0x08, 0x22, 0x3c };&lt;br /&gt;&lt;br /&gt;public static byte[] Encrypt(byte[] plain, string password)&lt;br /&gt;{&lt;br /&gt;    MemoryStream memoryStream;&lt;br /&gt;    CryptoStream cryptoStream;&lt;br /&gt;    Rijndael rijndael = Rijndael.Create();&lt;br /&gt;    Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, SALT);&lt;br /&gt;    rijndael.Key = pdb.GetBytes(32);&lt;br /&gt;    rijndael.IV = pdb.GetBytes(16);&lt;br /&gt;    memoryStream = new MemoryStream();&lt;br /&gt;    cryptoStream = new CryptoStream(memoryStream, rijndael.CreateEncryptor(), CryptoStreamMode.Write);&lt;br /&gt;    cryptoStream.Write(plain, 0, plain.Length);&lt;br /&gt;    cryptoStream.Close();&lt;br /&gt;&lt;br /&gt;    return memoryStream.ToArray();&lt;br /&gt;}&lt;br /&gt;public static byte[] Decrypt(byte[] cipher, string password)&lt;br /&gt;{&lt;br /&gt;    MemoryStream memoryStream;&lt;br /&gt;    CryptoStream cryptoStream;&lt;br /&gt;    Rijndael rijndael = Rijndael.Create();&lt;br /&gt;    Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, SALT);&lt;br /&gt;    rijndael.Key = pdb.GetBytes(32);&lt;br /&gt;    rijndael.IV = pdb.GetBytes(16);&lt;br /&gt;    memoryStream = new MemoryStream();&lt;br /&gt;    cryptoStream = new CryptoStream(memoryStream, rijndael.CreateDecryptor(), CryptoStreamMode.Write);&lt;br /&gt;    cryptoStream.Write(cipher, 0, cipher.Length);&lt;br /&gt;    cryptoStream.Close();&lt;br /&gt;&lt;br /&gt;    return memoryStream.ToArray();&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5186190474666807897-2243598923015175594?l=encryptionincsharp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://encryptionincsharp.blogspot.com/feeds/2243598923015175594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://encryptionincsharp.blogspot.com/2009/05/basic-rijndael-aes-encryption.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5186190474666807897/posts/default/2243598923015175594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5186190474666807897/posts/default/2243598923015175594'/><link rel='alternate' type='text/html' href='http://encryptionincsharp.blogspot.com/2009/05/basic-rijndael-aes-encryption.html' title='Basic Rijndael (AES) encryption'/><author><name>Avinash Tiwari</name><uri>http://www.blogger.com/profile/15802356010881135678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_LGmdihF6s00/SbOiiR5usKI/AAAAAAAAACo/AetFd4M1LfU/S220/UploadedImage.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5186190474666807897.post-8918015908881912523</id><published>2009-05-30T06:26:00.000-07:00</published><updated>2009-05-30T06:27:26.154-07:00</updated><title type='text'>RC4 Encryption</title><content type='html'>// RC4 Encryption&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;  From RSA Security's website:&lt;br /&gt;  "RC4 is a stream cipher designed by Rivest for RSA Data&lt;br /&gt;  Security (now RSA Security). It is a variable key-size stream&lt;br /&gt;  cipher with byte-oriented operations. The algorithm is based on&lt;br /&gt;  the use of a random permutation. Analysis shows that the period&lt;br /&gt;  of the cipher is overwhelmingly likely to be greater than 10^100.&lt;br /&gt;  Eight to sixteen machine operations are required per output byte,&lt;br /&gt;  and the cipher can be expected to run very quickly in software.&lt;br /&gt;  Independent analysts have scrutinized the algorithm and it is&lt;br /&gt;  considered secure."&lt;br /&gt;&lt;br /&gt;  This implementation encodes the byte stream to be encrypted&lt;br /&gt;  "in-place".&lt;br /&gt;&lt;br /&gt;  ------------&lt;br /&gt;  // Examples:&lt;br /&gt;  ------------&lt;br /&gt;&lt;br /&gt;  Byte[] Key = new Byte[5] { 12, 34, 22, 12, 32 };&lt;br /&gt;  Byte[] B = new Byte[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };&lt;br /&gt;&lt;br /&gt;  // Examine B array before and after this next call.&lt;br /&gt;  RC4(ref B, Key);&lt;br /&gt;&lt;br /&gt;  // Examine B array before and after this next call.&lt;br /&gt;  RC4(ref B, Key);&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void RC4(ref Byte[] bytes, Byte[] key )&lt;br /&gt;{&lt;br /&gt;        Byte[] s = new Byte[256];&lt;br /&gt;        Byte[] k = new Byte[256];&lt;br /&gt;        Byte temp;&lt;br /&gt;        int i, j, t;&lt;br /&gt;        int byteLen = bytes.GetLength(0);&lt;br /&gt;        int keyLen = key.GetLength(0);&lt;br /&gt;&lt;br /&gt;        // Generate "8x8 S-Box" and initialize key index&lt;br /&gt;        for (i = 0; i &lt; 256; i++)&lt;br /&gt;        {&lt;br /&gt;                s[i] = (Byte) i;&lt;br /&gt;                k[i] = key[i % keyLen];&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        j = 0;&lt;br /&gt;        for (i = 0; i&lt;256; i++)&lt;br /&gt;        {&lt;br /&gt;                j = (j + s[i] + k[i]) % 256;&lt;br /&gt;                // swap&lt;br /&gt;                temp = s[i];&lt;br /&gt;                s[i] = s[j];&lt;br /&gt;                s[j] = temp;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        i = j = 0;&lt;br /&gt;        for (int x = 0; x &lt; byteLen; x++)&lt;br /&gt;        {&lt;br /&gt;                // The following is used to generate a random byte&lt;br /&gt;                i = (i + 1) % 256;&lt;br /&gt;                j = (j + s[i]) % 256;&lt;br /&gt;                temp = s[i];&lt;br /&gt;                s[i] = s[j];&lt;br /&gt;                s[j] = temp;&lt;br /&gt;                t = ((int)s[i] + s[j]) % 256;&lt;br /&gt;                // which is xor'd to the source&lt;br /&gt;                bytes[x] ^= s[t];&lt;br /&gt;        }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5186190474666807897-8918015908881912523?l=encryptionincsharp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://encryptionincsharp.blogspot.com/feeds/8918015908881912523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://encryptionincsharp.blogspot.com/2009/05/rc4-encryption.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5186190474666807897/posts/default/8918015908881912523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5186190474666807897/posts/default/8918015908881912523'/><link rel='alternate' type='text/html' href='http://encryptionincsharp.blogspot.com/2009/05/rc4-encryption.html' title='RC4 Encryption'/><author><name>Avinash Tiwari</name><uri>http://www.blogger.com/profile/15802356010881135678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_LGmdihF6s00/SbOiiR5usKI/AAAAAAAAACo/AetFd4M1LfU/S220/UploadedImage.jpg'/></author><thr:total>0</thr:total></entry></feed>
