Использование библиотеки 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;
}
Функция дешифрования, похоже, возвращает пустую строку, когда она должна возвращать введенные исходные данные.
Есть идеи, в чем здесь проблема?