Ну, во-первых, вы не используете сеттер. То, что вы делаете, - это использование метода получения (который захватывает копию ключа) и установку отдельных байтов в копии массива ключей, возвращенного из метода получения (что не повлияет на внутреннее состояние AesCryptoServiceProvider
).
Если вы хотите, чтобы установщик работал правильно, создайте новый массив byte
и установите свойство:
byte[] newKey = new byte[aes.KeySize / 8];
// generate your key...
aes.Key = newKey;
Ответ на комментарий:
Ваш пример полностью в управляемом коде, и вы возвращаете прямую ссылку на байтовый массив DummyArray
, поэтому, естественно, вы можете установить любой индекс, который вы выберете, потому что вы решили вернуть ссылку. Однако не существует требования, согласно которому вы должны возвращать ссылку на байтовый массив (это подробности реализации).
Управляемые CSP просто упаковывают вызовы в неуправляемый CAPI , поэтому, когда данные распределяются, все, что вы получаете, - это копия фактических данных.