I believe that ASP, .NET and PHP are compatible with each other, NodeJS uses a different encrypt, it uses a more secure scrypt on the password while the others use a simple sha256 hash. Comparing the encrypted data will always be different, also with .NET encrypting the same data with the same password a second time will result in a different result.
Here the original C# code we use for the encrypt for if you want to create a compatible NodeJS version
public static JToken Encrypt(JToken value, JToken password)
{
byte[] encrypted;
using (RijndaelManaged aes = new RijndaelManaged())
{
aes.Padding = PaddingMode.Zeros;
aes.Mode = CipherMode.CBC;
using (SHA256Managed sha256 = new SHA256Managed())
{
aes.Key = sha256.ComputeHash(Encoding.UTF8.GetBytes((string)password));
}
aes.GenerateIV();
encrypted = aes.IV;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs, Encoding.UTF8))
{
sw.Write((string)value);
}
encrypted = encrypted.Concat(ms.ToArray()).ToArray();
}
}
}
return new JValue(Convert.ToBase64String(encrypted));
}