DES加密解密
2015-12-20 04:38:40 访问(1398) 赞(0) 踩(0)
相关下载:百度网盘 SlowX.DesEncryptOperApp[code] SlowX.DesEncryptOperApp[release]
-

-
#region DES 加密
/// <summary>
/// DES 加密
/// </summary>
/// <param name="EncryptKey"></param>
/// <param name="EncryptKeyIV"></param>
/// <param name="str">明文</param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string DESEncrypt
(
string EncryptKey,
string EncryptIV,
string str,
System.Text.Encoding _encoding
)
{
string theResult = null;
MemoryStream msEncrypt = null;
CryptoStream csEncrypt = null;
try
{
DES desValue = new DESCryptoServiceProvider();
byte[] ivb = Encoding.ASCII.GetBytes(EncryptIV);
byte[] keyb = Encoding.ASCII.GetBytes(EncryptKey);//得到加密密钥
byte[] toEncrypt = _encoding.GetBytes(str);//得到要加密的内容
byte[] encrypted;
ICryptoTransform encryptor = desValue.CreateEncryptor(keyb, ivb);
msEncrypt = new MemoryStream();
csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);
csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
csEncrypt.FlushFinalBlock();
encrypted = msEncrypt.ToArray();
theResult= _encoding.GetString(encrypted);
}
catch (Exception err)
{
throw err;
}
finally
{
if (csEncrypt != null)
{
csEncrypt.Close();
}
if (msEncrypt != null)
{
msEncrypt.Close();
}
csEncrypt = null;
msEncrypt = null;
}
return theResult;
}
#endregion DES 加密
#region DES 解密
/// <summary>
/// DES 解密
/// </summary>
/// <param name="EncryptKey"></param>
/// <param name="EncryptKeyIV"></param>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string DESDecrypt
(
string EncryptKey,
string EncryptIV,
string str,
System.Text.Encoding _encoding
)
{
string theResult = null;
MemoryStream msDecrypt = null;
CryptoStream csDecrypt = null;
try
{
DES desValue = new DESCryptoServiceProvider();
byte[] ivb = Encoding.ASCII.GetBytes(EncryptIV);
byte[] keyb = Encoding.ASCII.GetBytes(EncryptKey);
byte[] toDecrypt = _encoding.GetBytes(str);
byte[] deCrypted = new byte[toDecrypt.Length];
ICryptoTransform deCryptor = desValue.CreateDecryptor(keyb, ivb);
msDecrypt = new MemoryStream(toDecrypt);
csDecrypt = new CryptoStream(msDecrypt, deCryptor, CryptoStreamMode.Read);
csDecrypt.Read(deCrypted, 0, deCrypted.Length);
theResult = _encoding.GetString(deCrypted);
}
catch (Exception err)
{
throw err;
}
finally
{
if (csDecrypt != null)
{
csDecrypt.Close();
}
if (msDecrypt != null)
{
msDecrypt.Close();
}
csDecrypt = null;
msDecrypt = null;
}
return theResult;
}
#endregion DES 解密
/// <summary>
/// 字符串转成byte[]数组的String
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string StringToByteArrayString(string str)
{
if (str == null || str.Length == 0)
return "";
byte[] byteArray = Encoding.Default.GetBytes(str);
return ByteArrayToString(byteArray);
}
/// <summary>
/// 字符串转成byte[]数组的String
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string StringToByteArrayString(string str, System.Text.Encoding _encoding)
{
if (str == null || str.Length == 0)
return "";
if (_encoding == null)
{
throw new Exception
(
"方法:"
+ MethodBase.GetCurrentMethod().ReflectedType.FullName
+ " "
+ MethodBase.GetCurrentMethod().ToString()
+ " 发生异常:"
+ "传入参数:System.Text.Encoding _encoding 为null。"
);
}
byte[] byteArray = _encoding.GetBytes(str);
return ByteArrayToString(byteArray);
}
/// <summary>
///
/// </summary>
/// <param name="byteArray"></param>
/// <returns></returns>
public static string ByteArrayToString(byte[] byteArray)
{
if (byteArray == null)
{
throw new Exception
(
"方法:"
+ MethodBase.GetCurrentMethod().ReflectedType.FullName
+ " "
+ MethodBase.GetCurrentMethod().ToString()
+ " 发生异常:"
+ "传入参数:byte[] byteArray 为null。"
);
}
StringBuilder theResult = new StringBuilder();
foreach (byte b in byteArray)
{
theResult.Append(b.ToString().PadLeft(3, '0'));
}
return theResult.ToString();
}
/// <summary>
/// 字符串转成byte[]数组
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static byte[] StringToByteArray(string str)
{
if (str == null || str.Length == 0)
return null;
int iLen = str.Length;
if (iLen % 3 != 0)
{
throw new Exception
(
"方法:"
+ MethodBase.GetCurrentMethod().ReflectedType.FullName
+ " "
+ MethodBase.GetCurrentMethod().ToString()
+ " 发生异常:"
+ "iLen % 3 != 0,传入的字符串不是合理的byte[]值。"
);
}
int iArrayLen = iLen / 3;
byte[] theResult = new byte[iArrayLen];
string strItem = string.Empty;
byte bItem = 1;
for (int i = 0; i < iArrayLen; ++i)
{
strItem = str.Substring(i * 3, 3);
bItem = byte.Parse(strItem);
theResult[i] = bItem;
}
return theResult;
}
/// <summary>
///
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ByteArrayStringToString(string str)
{
byte[] bArray = StringToByteArray(str);
return Encoding.Default.GetString(bArray);
}
/// <summary>
///
/// </summary>
/// <param name="str"></param>
/// <param name="_encoding"></param>
/// <returns></returns>
public static string ByteArrayStringToString(string str, System.Text.Encoding _encoding)
{
if (_encoding == null)
{
throw new Exception
(
"方法:"
+ MethodBase.GetCurrentMethod().ReflectedType.FullName
+ " "
+ MethodBase.GetCurrentMethod().ToString()
+ " 发生异常:"
+ "传入参数:System.Text.Encoding _encoding 为null。"
);
}
byte[] bArray = StringToByteArray(str);
return _encoding.GetString(bArray);
}
标签:
DES加密解密 


上一条:
下一条:
相关评论
发表评论