AES-шифрование в C # и nodejs - PullRequest
       9

AES-шифрование в C # и nodejs

0 голосов
/ 13 декабря 2018

У меня есть шифрование 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 в узле.

...