public static string Md5DesEncryption(string toEncrypt, string key)
{
try
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); // 用Md5 加密约定的公共密钥
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); // 用DES算法再次加密明文
return Convert.ToBase64String(resultArray, 0, resultArray.Length).Replace("+", "").Replace("&","").Replace("?","").Replace("=",""); //替换密文中的特殊字符
}
catch
{
}
return string.Empty;
}
我的写法是:
//des加密后base64
public String DESEncrypt(String inputData, String inputKey)
throws Exception {
byte[] DESkey = inputData.toString().getBytes();// 设置密钥
DESKeySpec keySpec = new DESKeySpec(DESkey);// 设置密钥参数
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");// 获得密钥工厂
Key key = keyFactory.generateSecret(keySpec);// 得到密钥对象
Cipher enCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");// 得到加密对象Cipher
enCipher.init(Cipher.ENCRYPT_MODE, key);// 设置工作模式为加密模式,给出密钥和向量
byte[] pasByte = enCipher.doFinal(inputData.getBytes("utf-8"));
System.out.println(new String(Base64.encodeBase64(pasByte)));
BASE64Encoder base64Encoder = new BASE64Encoder();
return base64Encoder.encode(pasByte);
}但结果不匹配,求赐教