.Net中 DES加密 ECB模式 PKCS7的代码,已经测试过可以直接使用:
加密方法:
////// 加密字符串 /// 加密密钥必须为8位 /// /// 被加密的字符串 /// 8位长度密钥 ///加密后的数据 public static string DesEncrypt(string strText, string strEncrKey) { if(strEncrKey.Length < 8) { throw new Exception("密钥长度无效,密钥必须是8位!"); } StringBuilder ret = new StringBuilder(); using var des = new DESCryptoServiceProvider(); byte[] inputByteArray = Encoding.UTF8.GetBytes(strText); des.Mode = CipherMode.ECB; des.Padding = PaddingMode.PKCS7; des.Key = Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8)); //des.IV = Encoding.ASCII.GetBytes(strEncrKey.Substring(0, 8)); MemoryStream ms = new MemoryStream(); using var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); var res = Convert.ToBase64String(ms.ToArray()); return UrlEncodeFromJava(res); }
解密方法:
////// ECB解密 /// /// 解密字符串 /// 秘钥 ///public static string DesDecrypt(string data, string key) { using var des = new DESCryptoServiceProvider(); des.Key = Encoding.UTF8.GetBytes(key.Substring(0, 8)); des.Mode = CipherMode.ECB; des.Padding = PaddingMode.PKCS7; MemoryStream memory; CryptoStream crypto; byte[] byt; byt = Convert.FromBase64String(data); memory = new MemoryStream(); crypto = new CryptoStream(memory, des.CreateDecryptor(), CryptoStreamMode.Write); crypto.Write(byt, 0, byt.Length); crypto.FlushFinalBlock(); crypto.Close(); return Encoding.UTF8.GetString(memory.ToArray()); }



