Я заметил следующее странное поведение в следующем коде, если я установил ключ в инициализатор объекта, он генерирует случайный ключ и не устанавливает мой ключ. Это глюк?Странное поведение во время RijndaelУстановленная конструкция
var algorithm = new RijndaelManaged
{
Mode = CipherMode.CBC,
Key = keyBytes, //if i set the keyBytes here
KeySize = _keySize,
IV = Encoding.ASCII.GetBytes(_initVector),
BlockSize = 128,
Padding = PaddingMode.Zeros
}; // Set encryption mode to Cipher Block Chaining
bool wtf= algorithm.Key.AreEqual(keyBytes);
if (!wtf) // <!-- the Key is not the same here
{
algorithm.Key = keyBytes; // so i end up having to set it again here so that i can decrypt properly
}
Я думаю, по определению это не ошибка ... но я все еще чувствую, что это странная реализация. не задумываясь, вы никогда не ожидали, что это произойдет. это противоречит правилам инициализации объекта. плюс он просто чувствует себя грязным, чтобы одно свойство тайно аннулировало другое. – drowhunter
Поскольку эти свойства являются 'public virtual', вы можете создать свой собственный класс, наследовать от' RijndaelManaged' и переопределить 'Key' и' KeySize'. Но сначала я должен искать причину, по которой это реализовано. возможно, имея разные «KeySizeValue» из «KeyValue», вводит некоторые другие ошибки или даже ошибки времени выполнения и т. д. @drowhunter –
да имеет смысл, но он задает вопрос .. если если в массиве ключей и ключах нужно сопоставить, почему бы даже позволить им быть установить по-другому? кажется мне плохой логикой. – drowhunter