C#中使用TripleDESCryptoServiceProvider類 3DES加密解密

C#中使用TripleDESCryptoServiceProvider類

 
 

//C#中使用TripleDESCryptoServiceProvider類

using System;
using System.Text;
using System.Collections;
using System.IO;
using System.Security.Cryptography;
namespace ImageAnimatorExample
{
    class TripleDESCryptoServiceProviderDemo
    {
        public static void Main(String[] args)
        {
            //加密
            string myID = "435-86-0985-021";
            TripleDESCryptoServiceProvider key = new TripleDESCryptoServiceProvider();
            MemoryStream ms = new MemoryStream();
            CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);
            StreamWriter sw = new StreamWriter(encStream);
            sw.WriteLine(myID);
            sw.Close();
            //獲取加密後的字節
            byte[] buffer = ms.ToArray();
            //解密
            ms = new MemoryStream(buffer);
            encStream = new CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read);
            StreamReader sr = new StreamReader(encStream);
            //輸出解密後的內容
            Console.WriteLine(sr.ReadLine());
            key.Clear();
            sr.Close();
            Console.ReadLine();
        }

 

 #region 3DES加密

        public static string Encrypt3DES(string a_strString, string a_strKey, string a_strIV)
        {
            System.Security.Cryptography.TripleDESCryptoServiceProvider des = new System.Security.Cryptography.TripleDESCryptoServiceProvider();
            byte[] inputByteArray = System.Text.Encoding.UTF8.GetBytes(a_strString);
            des.Key = System.Text.Encoding.UTF8.GetBytes(a_strKey);
            des.IV = System.Text.Encoding.UTF8.GetBytes(a_strIV);
            des.Mode = System.Security.Cryptography.CipherMode.CBC;
            des.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
            System.IO.StreamWriter swEncrypt = new System.IO.StreamWriter(cs);
            swEncrypt.WriteLine(a_strString);
            swEncrypt.Close();
          
            //把內存流轉換成字節數組,內存流現在已經是密文了
            byte[] bytesCipher = ms.ToArray();
            //內存流關閉
          
            string base64String= System.Convert.ToBase64String(bytesCipher);
            //string by = "";
            //foreach (byte b in bytesCipher)
            //{
            //    by += b.ToString() + " ";
            //}
            //SbeLogger.info("【3DESBytes】" + by);
            //byte[] FromBase64String = Convert.FromBase64String(base64String);
            //ms = new MemoryStream(FromBase64String);
            //cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
            //StreamReader sr = new StreamReader(cs);
            ////輸出解密後的內容
            //string DecryptString = sr.ReadLine();
          
            //加密流關閉
            cs.Close();
            des.Clear();
            ms.Close();
           

            return base64String;
        }


        public static string Decrypt3DES(string a_strString, string a_strKey, string a_strIV)
        {
            TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
            byte[] inputByteArray = Encoding.UTF8.GetBytes(a_strString);
            des.Key = System.Text.Encoding.UTF8.GetBytes(a_strKey);
            des.IV = System.Text.Encoding.UTF8.GetBytes(a_strIV);
            des.Mode = CipherMode.CBC;
            des.Padding = PaddingMode.PKCS7;
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);           
            byte[] FromBase64String = Convert.FromBase64String(a_strString);
            ms = new MemoryStream(FromBase64String);
            cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
            StreamReader sr = new StreamReader(cs);
            //輸出解密後的內容
            string DecryptString = sr.ReadLine();
            //加密流關閉
            cs.Close();
            des.Clear();
            ms.Close();
            sr.Close();
            return DecryptString;
           
        }
       
        #endregion


    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章