出于某种目的,要用到字符串的加解密功能,提供个方法,效果截图

C#字符串加解密

默认取密匙的前八位,如果超过八位后面的发生变化并不影响加解密结果。通过两个方法来实现,这两个方法大家可以保存下来,肯定会用得到的,要引入两个命名空间啊。错误信息大家自己处理下。

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(); }
        }
    }
}