DES加密

作者: fanyu__ | 来源:发表于2021-01-02 09:52 被阅读0次
     public static class DesHelper
     {
            private const string key = "weihuajt";
    
            private const string iv = "hijklmno";
    
            /// <summary>
            /// DES加密
            /// </summary>
            /// <param name="data">加密数据</param>
            /// <param name="key">8位字符的密钥字符串</param>
            /// <param name="iv">8位字符的初始化向量字符串</param>
            /// <returns></returns>
            public static string DESEncrypt(string data, string key = key, string iv = iv)
            {
                byte[] byKey = Encoding.ASCII.GetBytes(key);
                byte[] byIV = Encoding.ASCII.GetBytes(iv);
    
                using (DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider())
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        using (CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write))
                        {
                            using (StreamWriter sw = new StreamWriter(cst))
                            {
                                sw.Write(data);
                                sw.Flush();
                                cst.FlushFinalBlock();
                                sw.Flush();
                                return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
                            }
                        }
                    }
    
                }
            }
    
            /// <summary>
            /// DES解密
            /// </summary>
            /// <param name="data">解密数据</param>
            /// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>
            /// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>
            /// <returns></returns>
            public static string DESDecrypt(string data, string key = key, string iv = iv)
            {
                byte[] byKey = Encoding.ASCII.GetBytes(key);
                byte[] byIV = Encoding.ASCII.GetBytes(iv);
    
                byte[] byEnc;
                try
                {
                    byEnc = Convert.FromBase64String(data);
                }
                catch
                {
                    return null;
                }
    
                using (DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider())
                {
                    using (MemoryStream ms = new MemoryStream(byEnc))
                    {
                        using (CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read))
                        {
                            using (StreamReader sr = new StreamReader(cst))
                            {
                                return sr.ReadToEnd();
                            }
                        }
                    }
    
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:DES加密

          本文链接:https://www.haomeiwen.com/subject/rnfeoktx.html