Esempio n. 1
0
        public static string EncryptStringWith3DES(string data, string key, string iv)
        {
            UnicodeEncoding unicode = new UnicodeEncoding();

            Byte[] Bytes = unicode.GetBytes(data);

            MemoryStream mem = new MemoryStream(100);
            TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();

            Byte[] KeyBytes = unicode.GetBytes(key);
            Byte[] tmpBytes = new Byte[16];
            Array.Copy(KeyBytes, tmpBytes, KeyBytes.Length < 16 ? KeyBytes.Length : 16);
            KeyBytes = tmpBytes;

            if (tdes.ValidKeySize(KeyBytes.Length * 8))
            {
                System.Diagnostics.Debug.WriteLine("Key size valid");
            }
            if (TripleDESCryptoServiceProvider.IsWeakKey(KeyBytes))
            {
                System.Diagnostics.Debug.WriteLine("Key weak");
            }

            CryptoStream CrStream = new CryptoStream(mem, tdes.CreateEncryptor(KeyBytes, unicode.GetBytes(iv)), CryptoStreamMode.Write);

            for (int i = 0; i < Bytes.Length; i++)
            {
                CrStream.WriteByte(Bytes[i]);
            }

            CrStream.FlushFinalBlock();

            string result = Convert.ToBase64String(mem.GetBuffer(), 0, (int)mem.Length);

            CrStream.Dispose();
            return(result);
        }