出于某种目的,要用到字符串的加解密功能,提供个方法,效果截图
默认取密匙的前八位,如果超过八位后面的发生变化并不影响加解密结果。通过两个方法来实现,这两个方法大家可以保存下来,肯定会用得到的,要引入两个命名空间啊。错误信息大家自己处理下。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Security.Cryptography;//引入命名空间 using System.IO;//引入命名空间 namespace splitstr { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //密匙长度8位 //加密密匙和解密密匙要一致才能正确解密 private void bt_jiami_Click(object sender, EventArgs e)//执行加密 { if (tb_1.Text.Trim() != "" && tb_keys.Text.Trim() != "") { tb_2.Text = Encrypt(tb_1.Text,tb_keys.Text.Trim()); } } private void bt_jiemi_Click(object sender, EventArgs e)//执行解密 { if (tb_2.Text.Trim() != "" && tb_keys.Text.Trim() != "") { tb_1.Text = Decrypt(tb_2.Text, tb_keys.Text.Trim()); } } /// <summary> /// 字符串加密 /// </summary> /// <param name="encryptString">待加密字符串</param> /// <param name="key">加密密匙</param> /// <returns>返回加密后的字符串</returns> private string Encrypt(string encryptString,string key) { try { byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); byte[] keyIV = keyBytes; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } catch (Exception er) { return "加密出错:" + er.Message.ToString(); } } /// <summary> /// 字符串解密 /// </summary> /// <param name="decryptString">待解密字符串</param> /// <param name="key">解密密匙</param> /// <returns>返回解密后的字符串</returns> private string Decrypt(string decryptString, string key) { try { byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); byte[] keyIV = keyBytes; byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch (Exception er) { return "解密出错:" + er.Message.ToString(); } } } }