TripleDES加密、解密算法

本文提供了一种使用TripleDES算法进行数据加密和解密的方法。通过实例代码展示了如何利用.NET Framework中的TripleDES组件实现字符串的加密与解密过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自fangq的专栏

  1. using System;   
  2.   
  3. using System.Collections.Generic;   
  4.   
  5. using System.Linq;   
  6.   
  7. using System.Text;   
  8.   
  9. using System.Security.Cryptography;   
  10.   
  11. using System.IO;   
  12.   
  13. namespace WindowsFormsApplication1   
  14.   
  15. {  
  16.  
  17.     #region TripleDES算法   
  18.   
  19.   
  20.   
  21.     public class ClassTripleDES   
  22.   
  23.     {   
  24.   
  25.         public ClassTripleDES()   
  26.   
  27.         {   
  28.   
  29.         }   
  30.   
  31.   
  32.   
  33.         //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。   
  34.   
  35.         public static string Encrypt(string pass)   
  36.   
  37.         {   
  38.   
  39.             try  
  40.   
  41.             {   
  42.   
  43.                 byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);   
  44.   
  45.                 PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);   
  46.   
  47.                 byte[] key = pdb.GetBytes(24);   
  48.   
  49.                 byte[] iv = pdb.GetBytes(8);   
  50.   
  51.                 MemoryStream ms = new MemoryStream();   
  52.   
  53.                 TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();   
  54.   
  55.                 CryptoStream cs = new CryptoStream(ms, tdesc.CreateEncryptor(key, iv), CryptoStreamMode.Write);   
  56.   
  57.                 cs.Write(bt, 0, bt.Length);   
  58.   
  59.                 cs.FlushFinalBlock();   
  60.   
  61.                 return Convert.ToBase64String(ms.ToArray());   
  62.   
  63.             }   
  64.   
  65.             catch (Exception ex)   
  66.   
  67.             {   
  68.   
  69.                 throw ex;   
  70.   
  71.             }   
  72.   
  73.         }   
  74.   
  75.   
  76.   
  77.         //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。   
  78.   
  79.         public static string Decrypt(string str, string pass)   
  80.   
  81.         {   
  82.   
  83.             try  
  84.   
  85.             {   
  86.   
  87.                 byte[] bt = Convert.FromBase64String(str);   
  88.   
  89.                 PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);   
  90.   
  91.                 byte[] key = pdb.GetBytes(24);   
  92.   
  93.                 byte[] iv = pdb.GetBytes(8);   
  94.   
  95.                 MemoryStream ms = new MemoryStream();   
  96.   
  97.                 TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();   
  98.   
  99.                 CryptoStream cs = new CryptoStream(ms, tdesc.CreateDecryptor(key, iv), CryptoStreamMode.Write);   
  100.   
  101.                 cs.Write(bt, 0, bt.Length);   
  102.   
  103.                 cs.FlushFinalBlock();   
  104.   
  105.                 return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());   
  106.   
  107.             }   
  108.   
  109.             catch (Exception ex)   
  110.   
  111.             {   
  112.   
  113.                 throw ex;   
  114.   
  115.             }   
  116.   
  117.         }   
  118.   
  119.         //使用:   
  120.   
  121.         //string str = Encrypt("bbb");   
  122.   
  123.         //Console.WriteLine(Decrypt(str, "bbb"));   
  124.   
  125.   
  126.   
  127.         //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。   
  128.   
  129.         public static string EncryptWithKey(string pass, string p_key)   
  130.   
  131.         {   
  132.   
  133.             try  
  134.   
  135.             {   
  136.   
  137.                 byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);   
  138.   
  139.                 PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);   
  140.   
  141.                 byte[] key = pdb.GetBytes(24);   
  142.   
  143.                 byte[] iv = pdb.GetBytes(8);   
  144.   
  145.                 MemoryStream ms = new MemoryStream();   
  146.   
  147.                 TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();   
  148.   
  149.                 CryptoStream cs = new CryptoStream(ms, tdesc.CreateEncryptor(key, iv), CryptoStreamMode.Write);   
  150.   
  151.                 cs.Write(bt, 0, bt.Length);   
  152.   
  153.                 cs.FlushFinalBlock();   
  154.   
  155.                 return Convert.ToBase64String(ms.ToArray());   
  156.   
  157.             }   
  158.   
  159.             catch (Exception ex)   
  160.   
  161.             {   
  162.   
  163.                 throw ex;   
  164.   
  165.             }   
  166.   
  167.         }   
  168.   
  169.   
  170.   
  171.         //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。   
  172.   
  173.         public static string DecryptWithKey(string str, string p_key)   
  174.   
  175.         {   
  176.   
  177.             try  
  178.   
  179.             {   
  180.   
  181.                 byte[] bt = Convert.FromBase64String(str);   
  182.   
  183.                 PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);   
  184.   
  185.                 byte[] key = pdb.GetBytes(24);   
  186.   
  187.                 byte[] iv = pdb.GetBytes(8);   
  188.   
  189.                 MemoryStream ms = new MemoryStream();   
  190.   
  191.                 TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();   
  192.   
  193.                 CryptoStream cs = new CryptoStream(ms, tdesc.CreateDecryptor(key, iv), CryptoStreamMode.Write);   
  194.   
  195.                 cs.Write(bt, 0, bt.Length);   
  196.   
  197.                 cs.FlushFinalBlock();   
  198.   
  199.                 return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());   
  200.   
  201.             }   
  202.   
  203.             catch (Exception ex)   
  204.   
  205.             {   
  206.   
  207.                 throw ex;   
  208.   
  209.             }   
  210.   
  211.         }   
  212.   
  213.   
  214.   
  215.     }  
  216.  
  217.  
  218.  
  219.     #endregion   
  220.   
  221. }  
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Security.Cryptography;

using System.IO;

namespace WindowsFormsApplication1

{

    #region TripleDES算法



    public class ClassTripleDES

    {

        public ClassTripleDES()

        {

        }



        //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。

        public static string Encrypt(string pass)

        {

            try

            {

                byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);

                PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);

                byte[] key = pdb.GetBytes(24);

                byte[] iv = pdb.GetBytes(8);

                MemoryStream ms = new MemoryStream();

                TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();

                CryptoStream cs = new CryptoStream(ms, tdesc.CreateEncryptor(key, iv), CryptoStreamMode.Write);

                cs.Write(bt, 0, bt.Length);

                cs.FlushFinalBlock();

                return Convert.ToBase64String(ms.ToArray());

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }



        //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。

        public static string Decrypt(string str, string pass)

        {

            try

            {

                byte[] bt = Convert.FromBase64String(str);

                PasswordDeriveBytes pdb = new PasswordDeriveBytes(pass, null);

                byte[] key = pdb.GetBytes(24);

                byte[] iv = pdb.GetBytes(8);

                MemoryStream ms = new MemoryStream();

                TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();

                CryptoStream cs = new CryptoStream(ms, tdesc.CreateDecryptor(key, iv), CryptoStreamMode.Write);

                cs.Write(bt, 0, bt.Length);

                cs.FlushFinalBlock();

                return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

        //使用:

        //string str = Encrypt("bbb");

        //Console.WriteLine(Decrypt(str, "bbb"));



        //加密,使用密码产生加密算法的公钥,并使用TripleDES对密码进行加密。

        public static string EncryptWithKey(string pass, string p_key)

        {

            try

            {

                byte[] bt = (new System.Text.UnicodeEncoding()).GetBytes(pass);

                PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);

                byte[] key = pdb.GetBytes(24);

                byte[] iv = pdb.GetBytes(8);

                MemoryStream ms = new MemoryStream();

                TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();

                CryptoStream cs = new CryptoStream(ms, tdesc.CreateEncryptor(key, iv), CryptoStreamMode.Write);

                cs.Write(bt, 0, bt.Length);

                cs.FlushFinalBlock();

                return Convert.ToBase64String(ms.ToArray());

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }



        //解密,使用密码产生加密算法的公钥,并使用TripleDES对加密数据进行解密。

        public static string DecryptWithKey(string str, string p_key)

        {

            try

            {

                byte[] bt = Convert.FromBase64String(str);

                PasswordDeriveBytes pdb = new PasswordDeriveBytes(p_key, null);

                byte[] key = pdb.GetBytes(24);

                byte[] iv = pdb.GetBytes(8);

                MemoryStream ms = new MemoryStream();

                TripleDESCryptoServiceProvider tdesc = new TripleDESCryptoServiceProvider();

                CryptoStream cs = new CryptoStream(ms, tdesc.CreateDecryptor(key, iv), CryptoStreamMode.Write);

                cs.Write(bt, 0, bt.Length);

                cs.FlushFinalBlock();

                return (new System.Text.UnicodeEncoding()).GetString(ms.ToArray());

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }



    }



    #endregion

}

很有用,收藏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值