DESC加密方法
直接上代码:
1、加密
/// <summary> /// 加密 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static string EncryptParameter(object obj) { if (obj == null) { return ""; } StringBuilder builder = new StringBuilder(); try { string str = obj.ToString(); DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); provider.Key = Encoding.UTF8.GetBytes(_securityKey); provider.IV = Encoding.UTF8.GetBytes(_securityKey); byte[] bytes = Encoding.UTF8.GetBytes(str); MemoryStream stream = new MemoryStream(); CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write); stream2.Write(bytes, 0, bytes.Length); stream2.FlushFinalBlock(); foreach (byte num in stream.ToArray()) { builder.AppendFormat("{0:X2}", num); } stream.Close(); } catch (Exception ex) { LogHelper.LogError(ex); } return builder.ToString(); }
2、解密
/// <summary> /// 解密 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string DecryptParameter(string str) { try { DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); provider.Key = Encoding.ASCII.GetBytes(_securityKey); provider.IV = Encoding.ASCII.GetBytes(_securityKey); byte[] buffer = new byte[str.Length / 2]; for (int i = 0; i < (str.Length / 2); i++) { int num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10); buffer[i] = (byte)num2; } MemoryStream stream = new MemoryStream(); CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write); stream2.Write(buffer, 0, buffer.Length); stream2.FlushFinalBlock(); stream.Close(); return Encoding.GetEncoding("GB2312").GetString(stream.ToArray()); } catch { return string.Empty; } }
设置一个_securityKey字符串,加密、解密的密钥要同一个才行。
因此正如其它人加密后的文件,用常用方法是打不开的,密钥不一样~