c# des加密与java同步

来源:互联网 发布:淘宝管理费 编辑:程序博客网 时间:2024/06/08 03:14
 #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