DES加密解密工具类

 

 1 /// <summary>
 2 /// DES加密解密工具类
 3 /// </summary>
 4 public class DesUtil
 5 {
 6     /// <summary>
 7     /// 秘钥
 8     /// </summary>
 9     private static string g_Key = "D228E0B3";
10 
11     /// <summary>
12     /// DES加密解密方法
13     /// </summary>
14     /// <param name="_String">加密解密字符串</param>
15     /// <param name="_Type">0:加密,1:解密</param>
16     /// <param name="_Key">Ksy</param>
17     /// <returns></returns>
18     public static bool DesFunction(ref string _String, E_Cipher _Type, params string[] _Key)
19     {
20         bool result = false;
21         if (_Key.Length != 0)
22             g_Key = _Key[0];
23 
24         switch (_Type)
25         {
26             case E_Cipher.Encrypt:
27                 result = DesEncrypt(ref _String, g_Key);
28                 break;
29             case E_Cipher.Decrypt:
30                 result = DesDecrypt(ref _String, g_Key);
31                 break;
32         }
33         return result;
34     }
35 
36     /// <summary>
37     /// DES加密
38     /// </summary>
39     /// <param name="encryptString">需要加密的字符串</param>
40     /// <returns>加密后的字符串</returns>
41     private static bool DesEncrypt(ref string encryptString, string key)
42     {
43         try
44         {
45             byte[] keyBytes = Encoding.UTF8.GetBytes(key);
46             byte[] keyIV = keyBytes;
47             byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
48             DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
49             //直接加密
50             byte[] encrypted = provider.CreateEncryptor(keyBytes, keyIV).TransformFinalBlock(inputByteArray, 0, inputByteArray.Length);
51             encryptString = Convert.ToBase64String(encrypted);
52             return true;
53         }
54         catch (Exception _ex)
55         {
56             return false;
57         }
58     }
59 
60     /// <summary>
61     /// DES解密
62     /// </summary>
63     /// <param name="decryptString">需要解密的字符串</param>
64     /// <returns>解密后的字符串</returns>
65     private static bool DesDecrypt(ref string decryptString, string key)
66     {
67         try
68         {
69             byte[] keyBytes = Encoding.UTF8.GetBytes(key);
70             byte[] keyIV = keyBytes;
71             byte[] inputByteArray = Convert.FromBase64String(decryptString);
72             DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
73             //直接解密
74             byte[] outputdata = provider.CreateDecryptor(keyBytes, keyIV).TransformFinalBlock(inputByteArray, 0, inputByteArray.Length);
75             decryptString = Encoding.UTF8.GetString(outputdata, 0, outputdata.Length);
76             return true;
77         }
78         catch (Exception _ex)
79         {
80             return false;
81         }
82     }
83 }
 1 /// <summary>
 2 /// 枚举类型
 3 /// </summary>
 4 public enum E_Cipher
 5 {
 6     /// <summary>
 7     /// 加密
 8     /// </summary>
 9     Encrypt = 0,
10     /// <summary>
11     /// 解密
12     /// </summary>
13     Decrypt = 1
14 }

  调用方式

/// <summary>
/// 加密解密方法
/// </summary>
public void DESEncryption()
{
    string str = "12345";
    bool result;
    //加密操作
    result = DesUtil.DesFunction(ref str, E_Cipher.Encrypt);
    if (result)
        Console.WriteLine(str);
    //解密操作
    result = DesUtil.DesFunction(ref str, E_Cipher.Decrypt);
    if (result)
        Console.WriteLine(str);
}

 

转载于:https://www.cnblogs.com/Mo-MaTure/p/5398288.html

我们总是有太多帐号,常常不得不把密码记到文档。但又想对密码加密,避免别人直接看到密码。这个工具实现对密码的加密和还原。 本程序源码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Security.Cryptography; using System.IO; namespace 密码管理 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private static String RDKey = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; private void button1_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); Random rd = new Random((int)DateTime.Now.Ticks); for (int i = 0; i < 16; i++) sb.Append(RDKey[rd.Next(RDKey.Length)]); OPSW.Text = sb.ToString(); } private void button3_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(Q.Text)) { MessageBox.Show("密保不能为空"); return; } if (string.IsNullOrEmpty(OPSW.Text)) { MessageBox.Show("原始密码不能为空"); return; } PSW1.Text = EncryptDES(OPSW.Text, Q.Text); } private void button2_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(Q.Text)) { MessageBox.Show("密保不能为空"); return; } if (string.IsNullOrEmpty(PSW1.Text)) { MessageBox.Show("加密密码不能为空"); return; } OPSW.Text = DecryptDES(PSW1.Text, Q.Text); } //默认密钥向量 private static byte[] rgbIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; public static string EncryptDES(string encryptString, string encryptKey) { try { encryptKey += "--------"; byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));//转换为字节 byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();//实例化数据加密标准 MemoryStream mStream = new MemoryStream();//实例化内存流 //将数据流链接到加密转换的流 CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } catch { return encryptString; } } /// /// DES解密字符串 /// /// 待解密的字符串 /// 解密密钥,要求为8位,和加密密钥相同 /// 解密成功返回解密后的字符串,失败返源串 public static string DecryptDES(string decryptString, string decryptKey) { try { decryptKey += "--------"; byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));//转换为字节 byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return decryptString; } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值