Мой метод шифрования это -
Код: Выделить всё
public static byte[] Encrypt(int key, string plainText, int iv)
{
byte[] encryptedText;
Aes aesAlg = Aes.Create();
string keyString = key.ToString();
Rfc2898DeriveBytes sourceDeriveBytes = new(keyString, Encoding.UTF8.GetBytes(keyString));
byte[] keyBytes = sourceDeriveBytes.GetBytes(16);
aesAlg.Key = keyBytes;
string ivString = iv.ToString();
Rfc2898DeriveBytes zendeskDeriveBytes = new(ivString, Encoding.UTF8.GetBytes(ivString));
byte[] ivBytes = zendeskDeriveBytes.GetBytes(16);
aesAlg.IV = ivBytes;
aesAlg.Padding = PaddingMode.None;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
}
encryptedText = msEncrypt.ToArray();
}
return encryptedText;
}
Код: Выделить всё
public static string Decrypt(int key, byte[] encryptedText, int iv)
{
string plainText;
Aes aesAlg = Aes.Create();
string keyString = key.ToString();
Rfc2898DeriveBytes pbkdf = new(keyString, Encoding.UTF8.GetBytes(keyString));
byte[] keyBytes = pbkdf.GetBytes(16);
aesAlg.Key = keyBytes;
string ivString = iv.ToString();
Rfc2898DeriveBytes zendeskDeriveBytes = new(ivString, Encoding.UTF8.GetBytes(ivString));
byte[] ivBytes = zendeskDeriveBytes.GetBytes(16);
aesAlg.IV = ivBytes;
aesAlg.Padding = PaddingMode.None;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(encryptedText))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
plainText = srDecrypt.ReadToEnd();
}
}
}
return plainText;
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... of-my-decr
Мобильная версия