Il problema è che la dimensione del tuo vettore di inizializzazione deve essere 16 byte.
La dimensione iniziale del tuo vettore è 14 byte.
Dovrai aumentare la dimensione del tuo vettore iniziale di 2 byte e il tuo codice funzionerà.
Esempio:
string initVector = "HR$2pIjHR$2pIj12";
Otterrai quindi l'output con il tuo codice corrente e la dimensione IV di esempio (vettore di inizializzazione) fornita:
hAC8hMf3N5Zb/DZhFKi6Sg==
Questo articolo fornisce una buona spiegazione su quale sia il vettore di inizializzazione.
http://en.wikipedia.org/wiki/Initialization_vector
Dovresti essere in grado di controllare quanti byte deve utilizzare l'IV:
algorithm.BlockSize / 8
BlockSize è in bit, quindi 128 bit / 8 fornisce 16 byte di ASCII e potresti anche trovare Rfc2898DeriveBytes
una classe utile per produrre chiavi.
algorithm.IV = rfc2898DeriveBytesForIV.GetBytes(algorithm.BlockSize / 8);
Spero che aiuti.
Se qualcuno sta migrando il proprio codice da .NET Framework a .NET Core e inizia a ricevere questa eccezione su RijndaelManaged.CreateEncryptor
:il tuo vecchio raffreddore funzionava a causa del fatto che ".NET Framework consente IV maggiori di 64 bit e li tronca".
Per risolvere, vedere il commento di Kevin Jones:"cambia semplicemente il tuo IV solo ai primi 8 byte"
Quindi, ad esempio:
private static byte[] IV_192 = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18 };
diventerebbe:
// Rename field if desired.
private static byte[] IV_192 = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
Vale anche la pena notare:"La classe Rijndael è il predecessore dell'algoritmo Aes. Dovresti usare l'algoritmo Aes invece di Rijndael."