C# DES加密与解密

来源:互联网 发布:xp怎么查找网络打印机 编辑:程序博客网 时间:2024/05/01 12:39

一、DES是一种数据加密标准,属于对称的加密算法体系。

下边是自己写的一个加密类:

<span style="font-size:10px;">using System;using System.Text;using System.IO;using System.Security.Cryptography;namespace WpfApplication12{    /// <summary>    /// DES密码加密与解密    /// </summary>    class DES    {        /// <summary>        /// DES加密        /// </summary>        /// <param name="password">密码明文</param>        /// <returns>密码密文</returns>        public string Encrypt(string password)        {            try            {                DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();                using (MemoryStream memoryStream = new MemoryStream())                {                    using (CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateEncryptor(Encoding.UTF8.GetBytes("ascdefgh"), Encoding.UTF8.GetBytes("ascdefgh")), CryptoStreamMode.Write))                                                                   //加密器对象                    {                        cryptoStream.Write(Encoding.UTF8.GetBytes(password), 0, Encoding.UTF8.GetBytes(password).Length);                        cryptoStream.FlushFinalBlock();                    }                    return Convert.ToBase64String(memoryStream.ToArray());                }            }            catch { return ""; }        }        /// <summary>        /// DES解密        /// </summary>        /// <param name="password">密码密文</param>        /// <returns>密码明文</returns>        public string Decrypt(string password)        {            DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();            using (MemoryStream memoryStream = new MemoryStream())            {                try                {                    using (CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateDecryptor(Encoding.UTF8.GetBytes("ascdefgh"), Encoding.UTF8.GetBytes("ascdefgh")), CryptoStreamMode.Write))                    {                        cryptoStream.Write(Convert.FromBase64String(password), 0, Convert.FromBase64String(password).Length);                        cryptoStream.FlushFinalBlock();                    }                    return Encoding.UTF8.GetString(memoryStream.ToArray());                }                catch                {                    return "";                }            }        }    }}</span><span style="font-size: 18px;"></span>


解释:des.CreateDecryptor(btKey, btIV)中的两个参数为:(用于对称算法的密钥,用于对称算法的初始化向量);

因为是对称算法:所以加密和解密中两个参数必须相同。





0 0
原创粉丝点击