У меня был простой класс для создания базового локального шифрования для Windows Phone 8. Я снова хотел использовать этот класс в новом приложении Windows 10 для Windows Store. К сожалению, я больше не могу использовать класс AesManaged.UWP: шифрование и дешифрование AES
Я попытался использовать Windows.Security.Cryptography.Core
, но я полностью застрял. Это оригинальный класс, который я использовал для Windows Phone 8. Тогда я должен был найти его где-то в Интернете.
using System.Security.Cryptography;
namespace TestGame
{
public class AesEnDecryption
{
private string AES_Key = "MYLiSQ864FhDevJOeMs9EVp5RmfC7OuH";
private string AES_IV = "FoL5Tyd9sZclVn5A";
public string AES_encrypt(string Input)
{
var aes = new AesManaged();
aes.KeySize = 128;
aes.BlockSize = 128;
aes.Key = Convert.FromBase64String(AES_Key);
aes.IV = Encoding.UTF8.GetBytes(AES_IV);
var encrypt = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] xBuff = null;
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, encrypt, CryptoStreamMode.Write))
{
byte[] xXml = Encoding.UTF8.GetBytes(Input);
cs.Write(xXml, 0, xXml.Length);
}
xBuff = ms.ToArray();
}
string Output = Convert.ToBase64String(xBuff);
return Output;
}
public string AES_decrypt(string Input)
{
var aes = new AesManaged();
aes.KeySize = 128;
aes.BlockSize = 128;
aes.Key = Convert.FromBase64String(AES_Key);
aes.IV = Encoding.UTF8.GetBytes(AES_IV);
var decrypt = aes.CreateDecryptor();
byte[] xBuff = null;
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, decrypt, CryptoStreamMode.Write))
{
byte[] xXml = Convert.FromBase64String(Input);
cs.Write(xXml, 0, xXml.Length);
}
xBuff = ms.ToArray();
}
string Output = Encoding.UTF8.GetString(xBuff, 0, xBuff.Length);
return Output;
}
}
}
Кто-нибудь знает, как перевести это для приложений Windows 10WWW?
Спасибо!
Если вы используете .NET Core, попробуйте 'Aes.Create()' вместо 'new AesManaged()' – bartonjs
** Никогда ** повторно использовать IV; всегда используйте новый IV для каждого зашифрованного сообщения. И это предполагает, что ключ на самом деле не жестко закодирован, а передан как аргумент для каждого пользователя или что-то еще. Их * оба * hardcoded просто просты ... «не умные». – RobIII