kaiwen0930 2016-11-02 10:22 采纳率: 0%
浏览 913

请教如何将C#的加密转成java,急需答案,谢谢

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);
}但结果不匹配,求赐教
  • 写回答

1条回答

  • dabocaiqq 2016-11-04 03:00
    关注
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!