初识3DES

来源:互联网 发布:东方网络股票 编辑:程序博客网 时间:2024/06/17 14:07

  3DES是三重数据加密算法块密码的通称,它相当于是对每个数据块应用三次DES加密算法,3DES是通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。 它使用3条56位的密钥对数据进行三次加密。

  设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文  这样:

  3DES的加密过程为:

  C=Ek3(Dk2(Ek1(M)))

  3DES的解密过程为:

  M=Dk1(Ek2(Dk3(C)))

 

  附上一个示例DEMO

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Security.Cryptography;using System.IO;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            Console.WriteLine("Encrypt String ... ");            txtkey = "tkGGRmBErvc=";             btnKeyGen();            Console.WriteLine("Encrypt key: {0} ",txtkey);            txtIv = "kl7ZgtM1dvQ=";            btnIVGen();            Console.WriteLine("Encrypt IV: {0} ",txtIv);            Console.WriteLine();            string txtEncrypted = EncryptString("1111");            Console.WriteLine("Encrypt String :{0}",txtEncrypted);            string txtOriginal = DecryptString(txtEncrypted);            Console.WriteLine("Decrypt String : {0}",txtOriginal);        }        private static SymmetricAlgorithm mCSP;        private static string txtkey;        private static string txtIv;        private static void btnKeyGen()        {            mCSP = SetEnc();            byte[] byt2 = Convert.FromBase64String(txtkey);            mCSP.Key = byt2;        }        private static void btnIVGen()        {            byte[] byt2 = Convert.FromBase64String(txtIv);            mCSP.IV = byt2;        }        private static string EncryptString(string Value)        {            ICryptoTransform ct;            MemoryStream ms;            CryptoStream cs;            byte[] byt;            ct = mCSP.CreateEncryptor(mCSP.Key,mCSP.IV);            byt = Encoding.UTF8.GetBytes(Value);            ms = new MemoryStream();            cs = new CryptoStream(ms,ct,CryptoStreamMode.Write);            cs.Write(byt,0,byt.Length);            cs.FlushFinalBlock();            cs.Close();            return Convert.ToBase64String(ms.ToArray());        }        private static string DecryptString(string value)        {            ICryptoTransform ct;            MemoryStream ms;            CryptoStream cs;            byte[] byt;            ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);            byt = Convert.FromBase64String(value);            ms = new MemoryStream();            cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);            cs.Write(byt, 0, byt.Length);            cs.FlushFinalBlock();            cs.Close();            return Encoding.UTF8.GetString(ms.ToArray());        }        private static SymmetricAlgorithm SetEnc()        {            return new DESCryptoServiceProvider();        }    }}


0 0
原创粉丝点击