C# C语言中的3DES加密和现有Java应用程序中的解密

C# C语言中的3DES加密和现有Java应用程序中的解密,c#,java,compatibility,3des,C#,Java,Compatibility,3des,我试图用C编写一个加密函数,生成一个可以在Java应用程序中解密的字符串。我从客户端收到的现有Java解密代码: public static String encryptParameters(byte plainText[], String sKey) throws RCPCipherException { Cipher cipher; DESedeKeySpec dks = new DESedeKeySpec(_getKeyBytes(s

我试图用C编写一个加密函数,生成一个可以在Java应用程序中解密的字符串。我从客户端收到的现有Java解密代码:

    public static String encryptParameters(byte plainText[], String sKey)
        throws RCPCipherException
    {
      Cipher cipher;
      DESedeKeySpec dks = new DESedeKeySpec(_getKeyBytes(sKey));
      java.security.Key secretKey = SecretKeyFactory.getInstance("DESede").generateSecret(dks);
      cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
      cipher.init(1, secretKey);
      return Base64.encodeBase64URLSafeString(cipher.doFinal(plainText));
    }
到目前为止,我只有C语言:

public string Encrypt(string toEncrypt, string encryptionKey, bool useHashing)
{
    byte[] keyArray;
    byte[] toEncryptArray = Encoding.UTF8.GetBytes(toEncrypt);

    if (useHashing)
    {
        var hashmd5 = new MD5CryptoServiceProvider();
        keyArray = hashmd5.ComputeHash(Encoding.UTF8.GetBytes(encryptionKey));
        hashmd5.Clear();
    }
    else
    {
        keyArray = Encoding.UTF8.GetBytes(encryptionKey);
    }

    var tripleDesCryptoServiceProvider = new TripleDESCryptoServiceProvider();

    //set the secret key for the tripleDES algorithm
    tripleDesCryptoServiceProvider.Key = keyArray;

    //mode of operation. there are other 4 modes.
    //We choose ECB(Electronic code Book)
    tripleDesCryptoServiceProvider.Mode = CipherMode.ECB;

    //padding mode(if any extra byte added)
    tripleDesCryptoServiceProvider.Padding = PaddingMode.PKCS7;

    var cTransform = tripleDesCryptoServiceProvider.CreateEncryptor();

    //transform the specified region of bytes array to resultArray
    var resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

    //Release resources held by TripleDes Encryptor
    tripleDesCryptoServiceProvider.Clear();

    //Return the encrypted data into unreadable string format
    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
如何使它们兼容

Java函数中的明文字节数组参数是通过String.getBytesUTF-8创建的