Я использую метод шифрования это в своем проекте Unity. Я подписался на видео это, чтобы изменить свой код. Он отлично работает в моем редакторе, я передаю свои XML-данные, и они зашифровываются и сохраняются внутри файла в текстовом формате, затем я читаю текстовый файл и также расшифровываю данные. Но когда я экспортирую свой проект для Android, он не работает. У меня есть xml и зашифрованные данные внутри папки ресурсов, когда я открываю приложение на anroid, он шифрует xml, но не дешифрует из-за этого байта, я думаю. Есть идеи, как заставить его работать на устройствах Android?
Вот код шифрования C#, взятый из здесь:
public byte[] Encrypt(string original , string key) //key must be 32 chars
{
byte[] encrypted = null;
try
{
byte[] iv = Encoding.ASCII.GetBytes("0123456789012345");
byte[] keyBytes = Encoding.ASCII.GetBytes(key);
// Create a new instance of the RijndaelManaged
// class. This generates a new key and initialization
// vector (IV).
using (RijndaelManaged myRijndael = new RijndaelManaged())
{
myRijndael.Key = keyBytes;
myRijndael.IV = iv;
// Encrypt the string to an array of bytes.
encrypted = EncryptStringToBytes(original, myRijndael.Key, myRijndael.IV);
}
}
catch (Exception e)
{
Debug.LogFormat("Error: {0}", e.Message);
}
return encrypted;
}
Вот я звоню через свой скрипт:
TextAsset txtXmlAsset = Resources.Load<TextAsset>("Readerxml");
string file_path = Application.dataPath + "/Resources/readid.txt";
Rijndael crypto = new Rijndael();
byte[] encryptValue = crypto.Encrypt(txtXmlAsset.text, Secretkeyvalue);
if (File.Exists(file_path))
{
File.Delete(file_path);
}
File.WriteAllBytes(file_path, encryptValue);
byte[] decryptValue = File.ReadAllBytes(file_path);
string decryptString = decrypt.Decrypt(decryptValue, Secretkeyvalue);
Debug.Log("Here is the decrypt string:\n" + decryptString);
Шифрование работает нормально. Но часть дешифрования не работает, а не чтение из файла .txt для дешифрования.
Пожалуйста, добавьте свой код