У меня есть шифрование C #, которое выглядит так:
public static string EncryptAes(string value, string password, string iv)
{
var result = Encrypt<AesManaged>(value, password, iv);
return result;
}
static string Encrypt<T>(string value, string password, string salt)
where T : SymmetricAlgorithm, new()
{
DeriveBytes rgb = new Rfc2898DeriveBytes(password, Encoding.Unicode.GetBytes(salt));
SymmetricAlgorithm algorithm = new T();
byte[] rgbKey = rgb.GetBytes(algorithm.KeySize >> 3);
byte[] rgbIV = rgb.GetBytes(algorithm.BlockSize >> 3);
ICryptoTransform transform = algorithm.CreateEncryptor(rgbKey, rgbIV);
using (MemoryStream buffer = new MemoryStream())
{
using (CryptoStream stream = new CryptoStream(buffer, transform, CryptoStreamMode.Write))
{
using (StreamWriter writer = new StreamWriter(stream, Encoding.Unicode))
{
writer.Write(value);
}
}
return Convert.ToBase64String(buffer.ToArray());
}
}
Вызов этой функции возвращает строку.Теперь я хочу создать ту же строку в nodejs.Я пытаюсь использовать npm crypto следующим образом:
function encrypt(text, password, iv) {
let cipher = crypto.createCipheriv('aes-256-cbc', password, iv);
var crypted = cipher.update(text,'utf8','base64')
crypted += cipher.final('base64');
return crypted;
}
Проблема в том, что я не могу создать одинаковые строки.
Единственная цель этого заключается в том, что мне нужнорасшифровать зашифрованные данные c #, как показано выше в nodejs.Я не могу изменить шифрование, но мне может потребоваться любой npm в узле.