/// <summary> /// DES解密 /// </summary> /// <param name="buffer">加密的数组</param> /// <param name="password">密钥</param> /// <param name="iv">解密矢量:只有在CBC解密模式下才适用</param> /// <param name="cMode">运算模式</param> /// <returns></returns> public static byte[] DecryptDES(DESTYPE type, byte[] buffer, string password, CipherMode cMode = CipherMode.ECB, PaddingMode pMode = PaddingMode.Zeros, byte[] iv = null) { try { SymmetricAlgorithm des = null; if (type == DESTYPE.DES) { des = new DESCryptoServiceProvider(); } if (type == DESTYPE.TripleDES) { des = new TripleDESCryptoServiceProvider(); } des.Key = Encoding.UTF8.GetBytes(password); des.Mode = cMode; des.Padding = pMode; if (cMode == CipherMode.CBC) { des.IV = iv; } return(des.CreateDecryptor().TransformFinalBlock(buffer, 0, buffer.Length)); } catch (Exception e) { throw e; } }
/// <summary> /// DES解密成string /// </summary> /// <param name="buffer">加密的数组</param> /// <param name="password">密钥</param> /// <param name="iv">解密矢量:只有在CBC解密模式下才适用</param> /// <param name="cMode">运算模式</param> /// <returns></returns> public static string DecryptDESToString(DESTYPE type, string base64text, string password, CipherMode cMode = CipherMode.ECB, PaddingMode pMode = PaddingMode.Zeros, byte[] iv = null) { return(Encoding.UTF8.GetString(DecryptDES(type, Convert.FromBase64String(base64text), password, cMode, pMode, iv))); }
/// <summary> /// DES解密Base64字符串成string /// </summary> /// <param name="buffer">加密的数组</param> /// <param name="password">密钥</param> /// <param name="iv">解密矢量:只有在CBC解密模式下才适用</param> /// <param name="cMode">运算模式</param> /// <returns></returns> public static string DecryptDESToString(DESTYPE type, byte[] buffer, string password, CipherMode cMode = CipherMode.ECB, PaddingMode pMode = PaddingMode.Zeros, byte[] iv = null) { return(Encoding.UTF8.GetString(DecryptDES(type, buffer, password, cMode, pMode, iv))); }
/// <summary> /// DES加密成Base64 /// </summary> /// <param name="buffer">加密数组</param> /// <param name="password">加密的密码</param> /// <param name="iv">密钥</param> /// <param name="mode">运算模式</param> /// <returns>Base64字符串</returns> public static string EncryptDESToBase64(DESTYPE type, byte[] buffer, string password, CipherMode cMode = CipherMode.ECB, PaddingMode pMode = PaddingMode.Zeros, byte[] iv = null) { return(Convert.ToBase64String(EncryptDES(type, buffer, password, cMode, pMode, iv))); }