Вот конвейер:
- внутриигровые данные преобразуются в файл json (строка)
- файл json преобразует байты UTF8
- Байты UTF8 проходят через этот метод шифрования (с использованием AES)
После того, как я получил несколько файлов сохранения от вовлеченных пользователей, я увидел, что все эти файлы имеют допустимую ненулевую длину, но содержат только нулевые байты.
Вот код:
Код: Выделить всё
public static byte[] Encrypt(byte[] clearBytes, string encyptionKey)
{
using (var algorythm = Aes.Create())
{
algorythm.Mode = CipherMode.CBC;
algorythm.Padding = PaddingMode.PKCS7;
var encryptionBytes = _encoding.GetBytes(encyptionKey);
using (var pdb = new Rfc2898DeriveBytes(encryptionBytes, _salt, _iterations, _hashAlgorithm))
{
algorythm.Key = pdb.GetBytes(32);
algorythm.IV = pdb.GetBytes(16);
using (var encryptor = algorythm.CreateEncryptor())
{
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
cs.Write(clearBytes, 0, clearBytes.Length);
}
return ms.ToArray();
}
}
}
}
}
Проблема в том, что я не могу воспроизвести эту ошибку на своем компьютере.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ing-aes-en
Мобильная версия