Хранение / преобразование ключа шифрования и IV в виде строк

Я смотрел на множество различных примеров шифрования C #. В большинстве примеров ключ шифрования, а также вектор инициализации (IV) передаются в методы шифрования / дешифрования в виде массива байтов.

Я хотел бы хранить Ключ и IV как строки. Ключ в модуле аппаратной безопасности и IV как nvarchar в базе данных SQL Server.

Я продолжаю сталкиваться с проблемами о том, как правильно преобразовать Ключ и IV в строку. В некоторых примерах говорится, что используется кодировка Base64, а в других -Encoding.UTF8.

Вот пример, который генерирует IV и преобразует его в строку Base64 ...

using (var aesProvider = new AesCryptoServiceProvider())
{
    aesProvider.GenerateIV();
    var ivBase64 = Convert.ToBase64String(aesProvider.IV);
    return ivBase64;
}

Однако, когда я передаю это строковое представление IV в метод шифрования, а затем преобразую его обратно в байтовый массив, следующий код терпит неудачу, говоря, что IV не является подходящим размером.

byte[] initVectorBytes = Encoding.UTF8.GetBytes(initializationVector);`
// intermediate code excluded for brevity
ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes);

Существует ли стандартный способ преобразования ключа шифрования и IV назад и вперед между байтовым массивом и представлением строки?

Ответы на вопрос(1)

Ваш ответ на вопрос