#region 加密解密
/// <summary>
/// DES加密算法
/// sKey为8位或16位
/// </summary>
/// <param name="pToEncrypt">需要加密的字符串</param>
/// <param name="sKey">密钥</param>
/// <returns></returns>
public static string DesEncrypt(string encryptStr, string encryptKey)
{
byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(encryptStr);
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;// 注意这里:如果没有这句,则始终加密过后字符串与java不一致
des.Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
//des.IV = _IV;
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
// return Encoding.UTF8.GetString(ms.ToArray());
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// DES解密算法
/// sKey为8位或16位
/// </summary>
/// <param name="pToDecrypt">需要解密的字符串</param>
/// <param name="sKey">密钥</param>
/// <returns></returns>
public static string DesDecrypt(string pToDecrypt, string sKey)
{
// byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToDecrypt);
byte[] inputByteArray= Convert.FromBase64String(pToDecrypt);
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;// 注意这里:如果没有这句,则始终加密过后字符串与java不一致
des.Key = Encoding.UTF8.GetBytes(sKey.Substring(0, 8));
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write );
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
ms.Close();
return Encoding.UTF8.GetString(ms.ToArray());
}
catch
{
throw;
}
}
}
#endregion
c# des加密与java同步
最新推荐文章于 2021-11-19 09:56:27 发布