怎么用java解密 C# 写的3DES加密的串  我想用java解密 关键是Key 又被MD5加密 哈稀了~  求java示例ing ..................以下是C#带代码  public static string Encrypt3DES(string strString, string strKey)
{
    TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
    provider.Key = new MD5CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes(strKey));
    provider.Mode = CipherMode.ECB;
    ICryptoTransform transform = provider.CreateEncryptor();
    byte[] bytes = Encoding.ASCII.GetBytes(strString);
    return Convert.ToBase64String(transform.TransformFinalBlock(bytes, 0, bytes.Length));
}  
public static string Decrypt3DES(string strString, string strKey)
{
    TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
    provider.Key = new MD5CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes(strKey));
    provider.Mode = CipherMode.ECB;
    ICryptoTransform transform = provider.CreateDecryptor();
    string str = "";
    try
    {
        byte[] inputBuffer = Convert.FromBase64String(strString);
        str = Encoding.ASCII.GetString(transform.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length));
    }
    catch (Exception exception)
    {
        throw new Exception("无效的密钥或源字符串不是有效的BASE64格式。", exception);
    }
    return str;
}  

解决方案 »

  1.   

    javax.crypto 看看这个包里能不能给你帮助
      

  2.   

    首先你要了解,3dex的原理,虽然java和c#都封装了该加密算法的基础算法,但是由于基本类型的不同,2者的加密是有差别的,所以导致直接调用java的3des解密是不行的
    我以前研究aes就是解决java与c#的互通,最大的差别就在byte的定义上,一个是有符号,一个是无符号,总之楼主要么找现成的,要么就去理解3des,反正不难
      

  3.   

    我也最近在搞这个东西 人家给了个KEY很长 而且是用java的 现在想用C#解密出来 头好大。。
      

  4.   

    MD5 属于散列函数,通过散列值是无法得回原文的,没有密钥也就甭想解开 3DES 密文!
      

  5.   

    我觉得 加密 解密 后的byte应该是一样的,无论C#还是JAVA,符号的问题应该是出现在吧byte转换成其他格式的时候出现的问题。这样可能需要通过一些位运算来处理一下可能会比较好一点。