簡體   English   中英

3DES-用C#解密加密的文本(通過JAVA)

[英]3DES - Decrypt encrypted text (by JAVA) in C#

情況如下:

  1. 加密的文本在JAVA中完成(我們完全沒有JAVA背景)
  2. 方法是3DES
  3. 填充為PKCS#5
  4. 基數64

解密將使用C#,下面是代碼:

    public static string DecryptString(string Message, string Passphrase)
    {
        byte[] Results;
        UTF8Encoding UTF8 = new UTF8Encoding();

        MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
        byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase));

        TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();

        TDESAlgorithm.Key = TDESKey;
        TDESAlgorithm.Mode = CipherMode.ECB;
        TDESAlgorithm.Padding = PaddingMode.PKCS7;

        byte[] DataToDecrypt = Convert.FromBase64String(Message);

        try
        {
            ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();
            Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);
        }
        finally
        {
            TDESAlgorithm.Clear();
            HashProvider.Clear();
        }

        return UTF8.GetString(Results);
    }

但是,當嘗試解密時,收到錯誤消息:錯誤數據

我在哪里想念這里?

提前致謝。

已添加,以下是加密的工作方式:

<cffunction name="getToken" returntype="String" output="false">
    <cfscript>
        plainText = getPlainText();
        rawSecretKey = CreateObject("java","sun.misc.BASE64Decoder").decodeBuffer(variables.encryptionKey);

        secretKeySpec = CreateObject("java","javax.crypto.spec.SecretKeySpec").init(rawSecretKey,"DESEDE");

        cipher = CreateObject("java","javax.crypto.Cipher").getInstance("DESEDE");
        cipher.init(Cipher.ENCRYPT_MODE, secretkeySpec);

        encrypted = cipher.doFinal(plainText.getBytes()); // a byte array (a binary in CF)

        return URLEncodedFormat(ToString(ToBase64(encrypted)));
    </cfscript>
</cffunction>

更新:此問題已解決。 問題是密鑰需要從Base64轉換。

答案:

代替:

byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase));

做這個:

byte[] TDESKey = Convert.FromBase64String(Passphrase);

這樣就解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM