DESCryptoServiceProvider加密、解密

.net名稱空間System.Security.Cryptography下DESCryptoServiceProvider類爲咱們提供了加密和解密方法,咱們只需少量代碼即可實現加密和解密。ide

稍感不託的地方,若是不是自行加密的在解密時會報錯。加密

使用注意事項,密鑰64位,8個字符。spa

定義默認加密密鑰.net

const string KEY_64 = "ChinabCd";
const string IV_64 = "ChinabCd";

加密code

/// <summary>
/// 按指定鍵值進行加密
/// </summary>
/// <param name="strContent">要加密字符</param>
/// <param name="strKey">自定義鍵值</param>
/// <returns></returns>

public static string EnCrypt(string strContent, string strKey)

        {
            if (string.IsNullOrEmpty(strContent)) return string.Empty;
            if (strKey.Length > 8) strKey = strKey.Substring(0, 8); else strKey = KEY_64;
            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(strKey);
            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
            int i = cryptoProvider.KeySize;
            MemoryStream ms = new MemoryStream();
            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

            StreamWriter sw = new StreamWriter(cst);
            sw.Write(strContent);
            sw.Flush();
            cst.FlushFinalBlock();
            sw.Flush();
            return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
        }
View Code

 解密blog

 /// <summary>
        /// 按指定鍵值進行解密
        /// </summary>
        /// <param name="strContent">要解密字符</param>
        /// <param name="strKey">加密時使用的鍵值</param>
        /// <returns></returns>
        public static string DeCrypt(string strContent, string strKey)
        {
            if (string.IsNullOrEmpty(strContent)) return string.Empty;
            if (strKey.Length > 8) strKey = strKey.Substring(0, 8); else strKey = KEY_64;
            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(strKey);
            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

            byte[] byEnc;
            try
            {
                byEnc = Convert.FromBase64String(strContent);
            }
            catch
            {
                return null;
            }

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
            MemoryStream ms = new MemoryStream(byEnc);
            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
            StreamReader sr = new StreamReader(cst);
            return sr.ReadToEnd();
        }
View Code
相關文章
相關標籤/搜索