C++代码
CipherMode.ECB
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
DES.Key = hashMD5.ComputeHash(Encoding.UTF8.GetBytes(des3Password));
DES.Mode = CipherMode.ECB; ICryptoTransform DESDecrypt = DES.CreateDecryptor();
byte[] Buffer = Convert.FromBase64String(EncryptValue);
string result = Encoding.UTF8.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
可以正确解密,java代码public static String EncryptString(String strText, String sKey) {
// MD5加密
// String md5s = EncryptMD5.getMD5(strText);
try {
SecureRandom random = new SecureRandom();
byte[] bkey = (sKey.substring(0,8)).getBytes();
DESKeySpec deskey = new DESKeySpec(bkey);
// 创建一个密钥工厂,然后用它把DESKeyspec转换成
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey securekey = keyFactory.generateSecret(deskey);
// cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
// cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
// 用密钥初化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, random);
// 现在,获取数据并加密
// // 正式执行加密操作
// String str = md5s + strText;
byte[] t = strText.getBytes("UTF-8");
byte[] bResult = cipher.doFinal(t);
// 1、加密完byte[] 后,需要将加密了的byte[] 转换成base64保存,如:
BASE64Encoder base64encoder = new BASE64Encoder();
String encode=base64encoder.encode(bkey);
return base64encoder.encode(bResult);
} catch (Throwable e) {
e.printStackTrace();
}
return null;
}
解密报错
怎么修改啊,求大神帮忙