AES-256-CTR Шифрование через C # и дешифрование в JS - PullRequest
0 голосов
/ 01 марта 2019

Использование библиотеки Org.BouncyCastle.Crypto для проекта C # и crypto-js для проекта JS.

Попытка зашифровать данные через C #, который выводит строку, используянижеприведенная функция:

public string EncryptData(string data)
{
    byte[] inputBytes = Encoding.UTF8.GetBytes(data);
    byte[] keyBytes = Encoding.UTF8.GetBytes(ENCRYPTION_KEY);
    IBufferedCipher cipher = CipherUtilities.GetCipher("AES/CTR/NoPadding");
        cipher.Init(true, new ParametersWithIV(ParameterUtilities.CreateKeyParameter("AES", keyBytes), new byte[16]));

    byte[] encryptedBytes = cipher.DoFinal(inputBytes);
    string base64EncryptedOutputString = Convert.ToBase64String(encryptedBytes);

    return base64EncryptedOutputString;
}

Затем с помощью функции ниже, в JS, для расшифровки:

function decrypt(text) {
    var decipher = crypto.createDecipher(algorithm, password);
    var dec = decipher.update(text, "hex", "utf8");
    dec += decipher.final("utf8");
    return dec;
}

Функция шифрования через JS находится ниже, на случай, если это поможет попытаться сделатьКод C # аналогичен коду JS (не наоборот):

function encrypt(text) {
    var cipher = crypto.createCipher(algorithm, password);
    var crypted = cipher.update(text, "utf8", "hex");
    crypted += cipher.final("hex");
    return crypted;
}

Функция дешифрования, похоже, возвращает пустую строку, когда она должна возвращать введенные исходные данные.

Есть идеи, в чем здесь проблема?

...