0

Trying to convert C# Rijndael decryption code to Node.js but getting the error bad decrypt

C# code for Decryption:

RijndaelManaged RMCrypto = new RijndaelManaged();
byte[] data = Convert.FromBase64String(strCript.Replace(" ", "+"));
byte[] initVectorBytes;
initVectorBytes = Encoding.ASCII.GetBytes("@1***********H8");
byte[] saltValueBytes;
saltValueBytes = Encoding.ASCII.GetBytes("i**************ng");
PasswordDeriveBytes password;
password = new PasswordDeriveBytes("KEY**************KEY", saltValueBytes, "SHA1", 1); 
byte[] keyBytes;
keyBytes = password.GetBytes(256 / 8);
byte[] Key = keyBytes;
byte[] IV = initVectorBytes;
MemoryStream msDncrypt = new MemoryStream(data);
CryptoStream CryptStream = new CryptoStream(msDncrypt, RMCrypto.CreateDecryptor(Key, IV), CryptoStreamMode.Read);
byte[] fromEncrypt = new byte[data.Length];
int len = CryptStream.Read(fromEncrypt, 0, fromEncrypt.Length);
byte[] decrypted = new byte[len];
Array.Copy(fromEncrypt, decrypted, len);
return Encoding.UTF8.GetString(decrypted); //(decrypted,0,decrypted.Length);

Node.js code for Decryption:

const crypto = require("crypto");

let passkey= "KEY*********KEY";
let salt = "i****************ng"
let d = "u***************=";
d = Buffer.from(d,"base64");
salt = Buffer.from(salt);

const derivedKey = crypto.pbkdf2Sync(passkey,salt, 1000, 32, "sha1");

let iv = Buffer.from("@1B2c3D4e5F6g7H8");

const decipher = crypto.createDecipheriv("aes-256-cbc", derivedKey, iv);
let buf = Buffer.concat([decipher.update(d), decipher.final()]);
let decrypted = buf.toString("utf8");
console.log(decrypted);
  • Akash, there are many errors as one can see. I will give one, you use 1000 iteration on Node.JS but 1 in C# `PasswordDeriveBytes`. There are many good examples in this site have a look at one. here [one](https://stackoverflow.com/questions/48394508/porting-c-sharp-aes-encryption-to-javascript-for-node-js) – kelalaka Jan 17 '19 at 15:25
  • @kelalaka tried changing 1000 iteration to 1, still same error. Am I using the correct Algorithm in createDecipheriv() – Akash Pandey Jan 17 '19 at 15:32
  • @kelalaka please help – Akash Pandey Jan 17 '19 at 15:47
  • Look at how to properly set the [C# RijndaelManaged](https://stackoverflow.com/questions/20297973/how-to-decrypt-an-aes-256-cbc-encrypted-string) – kelalaka Jan 17 '19 at 15:58

0 Answers0