Я не совсем уверен, как это объяснить, поэтому я добавлю свой код и попытаюсь с ним работать. Как вы видите, это вряд ли соответствует общим стандартам программирования. Я пытаюсь удалить всю «случайность» из ключа и iv поколения, поэтому я предоставил свою собственную строку и соответствующим образом добавил ее в значения AES.Шифрование и дешифрование AES
Как только это значение зашифровано, я конвертирую его в строку и сохраняю в базе данных в качестве параметра пароля. Моя проблема заключается в возможности расшифровать его обратно до исходного значения пароля, которое необходимо позже для некоторых веб-запросов. Я попытался преобразовать значение строки обратно в массив байтов, но получаю ошибку «Недопустимый размер блока», за которым следует «Bad PKCS7 padding. Недопустимая длина 250». Не знаю, что это значит.
Любые идеи?
static public void Main()
{
string original ="{password for testing purposes}";
string originalkey = "{128 key}";
string originaliv = "{16 iv}";
byte[] enckey = Encoding.UTF8.GetBytes(originalkey);
byte[] enciv = Encoding.UTF8.GetBytes(originaliv);
using (AesManaged myAes = new AesManaged())
{
myAes.Key = enckey;
myAes.IV = enciv;
byte[] encrypted = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV);
string result = Encoding.UTF8.GetString(encrypted);
string roundtrip = DecryptStringFromBytes_Aes(encrypted, myAes.Key, myAes.IV);
Console.WriteLine("Encrypted: {0}", result);
Console.WriteLine("Round Trip: {0}", roundtrip);
byte[] decrypted = Encoding.UTF8.GetBytes(result);
roundtrip = DecryptStringFromBytes_Aes(decrypted, myAes.Key, myAes.IV);
Console.WriteLine("Encrypted: {0}", roundtrip);
Console.WriteLine("Round Trip: {0}", result);
}
}
Просто кодирующий ваши байты [] массив блобы в строку может дать вам несколько вопросов, - это мог бы содержат нулевые байты, это может привести к неправильной обработке символов базой данных (в зависимости от конфигурации БД). Постарайтесь придерживаться кодировки, где текстовое кодирование не будет мешать строке (например, строки с шестнадцатеричными значениями байтов или кодировкой Base64) – elgonzo