欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#的3DES加密解密算法實例代碼

 更新時間:2013年11月26日 14:45:10   作者:  
這篇文章主要介紹了C#的3DES加密解密算法實例代碼,有需要的朋友可以參考一下

C#類如下:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace ConsoleApplication1
{
    /// <summary>
    /// 加解密類
    /// </summary>
    public class EncryptHelper
    {
       

        //構(gòu)造一個對稱算法
        private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();

        #region 加密解密函數(shù)

        /// <summary>
        /// 字符串的加密
        /// </summary>
        /// <param name="Value">要加密的字符串</param>
        /// <param name="sKey">密鑰,必須32位</param>
        /// <param name="sIV">向量,必須是12個字符</param>
        /// <returns>加密后的字符串</returns>
        public string EncryptString(string Value, string sKey,string sIV)
        {
            try
            {
                ICryptoTransform ct;
                MemoryStream ms;
                CryptoStream cs;
                byte[] byt;
                mCSP.Key = Convert.FromBase64String(sKey);
                mCSP.IV = Convert.FromBase64String(sIV);
                //指定加密的運算模式
                mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
                //獲取或設(shè)置加密算法的填充模式
                mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
                ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);//創(chuàng)建加密對象
                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());
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message, "出現(xiàn)異常", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return ("Error in Encrypting " + ex.Message);
            }
        }

        /// <summary>
        /// 解密字符串
        /// </summary>
        /// <param name="Value">加密后的字符串</param>
        /// <param name="sKey">密鑰,必須32位</param>
        /// <param name="sIV">向量,必須是12個字符</param>
        /// <returns>解密后的字符串</returns>
        public string DecryptString(string Value, string sKey, string sIV)
        {
            try
            {
                ICryptoTransform ct;//加密轉(zhuǎn)換運算
                MemoryStream ms;//內(nèi)存流
                CryptoStream cs;//數(shù)據(jù)流連接到數(shù)據(jù)加密轉(zhuǎn)換的流
                byte[] byt;
                //將3DES的密鑰轉(zhuǎn)換成byte
                mCSP.Key = Convert.FromBase64String(sKey);
                //將3DES的向量轉(zhuǎn)換成byte
                mCSP.IV = Convert.FromBase64String(sIV);
                mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
                mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
                ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);//創(chuàng)建對稱解密對象
                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());
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message, "出現(xiàn)異常", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return ("Error in Decrypting " + ex.Message);
            }
        }

        #endregion
    }
}


調(diào)用方法如下:
復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            EncryptHelper helper = new EncryptHelper();

            //加密
            string oldValue = "13800138000";
            //加密后結(jié)果
            //密鑰,必須32位
            string sKey = "qJzGEh6hESZDVJeCnFPGuxzaiB7NLQM5";
            //向量,必須是12個字符
            string sIV = "andyliu1234=";
            //print
            string newValue =  helper.EncryptString(oldValue,sKey,sIV);
            Console.WriteLine("加密后:"+ newValue);
            //解密
            string desValue = helper.DecryptString(newValue,sKey,sIV);
            //
            Console.WriteLine("解密后:"+ desValue);
            Console.ReadLine();

        }
    }
}

相關(guān)文章

  • C#實現(xiàn)在啟動目錄創(chuàng)建快捷方式的方法

    C#實現(xiàn)在啟動目錄創(chuàng)建快捷方式的方法

    這篇文章主要介紹了C#實現(xiàn)在啟動目錄創(chuàng)建快捷方式的方法,涉及C#快捷方式的創(chuàng)建技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#插入圖片到Excel表格單元格代碼詳解

    C#插入圖片到Excel表格單元格代碼詳解

    在本篇文章里小編給大家整理了關(guān)于C#插入圖片到Excel表格單元格的具體方法和實例代碼,需要的朋友們可以學(xué)習(xí)下。
    2019-07-07
  • C#畫圓角矩形的方法

    C#畫圓角矩形的方法

    這篇文章主要介紹了C#畫圓角矩形的方法,涉及C#繪圖的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • C#實現(xiàn)圖像銳化的方法

    C#實現(xiàn)圖像銳化的方法

    這篇文章主要介紹了C#實現(xiàn)圖像銳化的方法,涉及C#操作圖像的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#多線程學(xué)習(xí)之(二)操縱一個線程的方法

    C#多線程學(xué)習(xí)之(二)操縱一個線程的方法

    這篇文章主要介紹了C#多線程學(xué)習(xí)之操縱一個線程的方法,實例分析了C#中線程的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • Unity UI拖拽模型選擇功能

    Unity UI拖拽模型選擇功能

    這篇文章主要為大家詳細(xì)介紹了Unity UI拖拽模型選擇功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • C# 中string.split用法詳解

    C# 中string.split用法詳解

    本文給大家分享了C# 中string.split用法的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-06-06
  • Unity3D實現(xiàn)攻擊范圍檢測

    Unity3D實現(xiàn)攻擊范圍檢測

    這篇文章主要為大家詳細(xì)介紹了Unity3D實現(xiàn)攻擊范圍檢測,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C# 獲取PDF中的數(shù)字簽名證書

    C# 獲取PDF中的數(shù)字簽名證書

    PDF中的加數(shù)字簽名是對文檔權(quán)威性的有效證明。本文將以C#代碼示例展示如何來獲取PDF中的數(shù)字簽名證書信息。感興趣的小伙伴可以學(xué)習(xí)一下
    2021-11-11
  • C#網(wǎng)絡(luò)請求與JSON解析的示例代碼

    C#網(wǎng)絡(luò)請求與JSON解析的示例代碼

    這篇文章主要介紹了C#網(wǎng)絡(luò)請求與JSON解析的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論