分享

C#的DES加密解密算法

 昵称20408881 2015-04-25

des是常用的对称加密解密方法,下面是C#下的核心代码

/// <summary>
        
/// 进行DES加密。
        
/// </summary>
        
/// <param name="pToEncrypt">要加密的字符串。</param>
        
/// <param name="sKey">密钥,且必须为8位。</param>
        
/// <returns>以Base64格式返回的加密字符串。</returns>

        public string Encrypt(string pToEncrypt, string sKey)
        {
            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
            {
                byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt);
                des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(inputByteArray, 0, inputByteArray.Length);
                    cs.FlushFinalBlock();
                    cs.Close();
                }

                string str = Convert.ToBase64String(ms.ToArray());
                ms.Close();
                return str;
            }

        }


        /// <summary>
        
/// 进行DES解密。
        
/// </summary>
        
/// <param name="pToDecrypt">要解密的以Base64</param>
        
/// <param name="sKey">密钥,且必须为8位。</param>
        
/// <returns>已解密的字符串。</returns>

        public string Decrypt(string pToDecrypt, string sKey)
        {
            byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);
            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
            {
                des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(inputByteArray, 0, inputByteArray.Length);
                    cs.FlushFinalBlock();
                    cs.Close();
                }

                string str = Encoding.UTF8.GetString(ms.ToArray());
                ms.Close();
                return str;
            }

        }
        


在代码中还要应用个类库:using System.Security.Cryptography;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约