解密以C#加密的Node.js中的文本

时间:2019-04-16 04:41:31

标签: c# node.js cryptojs node-crypto

我在C#/。NET中加密了一些文本,希望在Node.js中解密。我拥有在C#中可以正常工作的解密代码,但是我找不到在Node.js中解密相同加密文本的代码。下面提到的是.NET中用于解密的代码

public static string Decrypt(string encodedText, string key)
{
    TripleDESCryptoServiceProvider desCryptoProvider = new TripleDESCryptoServiceProvider();
    byte[] byteBuff;
    try
    {
        byteBuff = Convert.FromBase64String(encodedText);
        desCryptoProvider.Key = UTF8Encoding.UTF8.GetBytes(key);
        desCryptoProvider.Mode = CipherMode.ECB;
        desCryptoProvider.Padding = PaddingMode.PKCS7;
        string plaintext = Encoding.UTF8.GetString(desCryptoProvider.CreateDecryptor().TransformFinalBlock(byteBuff, 0, byteBuff.Length));
        return plaintext;
    }
    catch (Exception except)
    {
        Console.WriteLine(except + "\n\n" + except.StackTrace);
        return null;
    }
}

Node.js内置库加密对我没有太大帮助,因为它错误地加密了文本。当我从npm使用'Crypto-JS'软件包时,它没有出错,但是也没有给出任何输出。下面是等效的Node.js

function decrypt(input, key) {
   var key = CryptoJS.enc.Utf8.parse(key);
   var iv = CryptoJS.enc.Base64.parse('QUJDREVGR0g=');
   var options = {
       mode: CryptoJS.mode.ECB,
       padding: CryptoJS.pad.Pkcs7
   };
   var bytes = CryptoJS.TripleDES.decrypt(input, key, options);
   console.log('key:' + key);
   var decryptedText = bytes.toString(CryptoJS.enc.Utf8);
   console.log('DecryptedText:' + decryptedText);
   return decryptedText;
}

如何找出与上述代码等效的Node.js?

0 个答案:

没有答案