Класс шифрования на C#: быстрое и простое шифрование паролем.
В современном программировании защита данных становится ключевым аспектом. Представленный ниже класс Encryptor на языке C# реализует простое шифрование и дешифрование данных, используя возможности встроенных классов .NET Framework: TripleDESCryptoServiceProvider и MD5CryptoServiceProvider.
Зачем нужен этот класс?
- 🔒 Шифрует строки и байты по паролю.
- 🔓 Расшифровывает данные с использованием того же пароля.
- 📦 Использует надежные встроенные механизмы безопасности .NET.
- ⚡ Работает просто: передаешь строку и пароль — получаешь зашифрованный результат и наоборот.
Этот класс упрощает быстрое шифрование данных паролем с помощью встроенных функций .NET Framework.
using System.Text;
using System.Security.Cryptography;
using System.IO;
class Encryptor
{
public static byte[] Encrypt(byte[] input, string password)
{
try
{
TripleDESCryptoServiceProvider service = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] key = md5.ComputeHash(Encoding.ASCII.GetBytes(password));
byte[] iv = md5.ComputeHash(Encoding.ASCII.GetBytes(password));
return Transform(input, service.CreateEncryptor(key, iv));
}
catch (Exception)
{
return new byte[0];
}
}
public static byte[] Decrypt(byte[] input, string password)
{
try
{
TripleDESCryptoServiceProvider service = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] key = md5.ComputeHash(Encoding.ASCII.GetBytes(password));
byte[] iv = md5.ComputeHash(Encoding.ASCII.GetBytes(password));
return Transform(input, service.CreateDecryptor(key, iv));
}
catch (Exception)
{
return new byte[0];
}
}
public static string Encrypt(string text, string password)
{
byte[] input = Encoding.UTF8.GetBytes(text);
byte[] output = Encrypt(input, password);
return Convert.ToBase64String(output);
}
public static string Decrypt(string text, string password)
{
byte[] input = Convert.FromBase64String(text);
byte[] output = Decrypt(input, password);
return Encoding.UTF8.GetString(output);
}
private static byte[] Transform(byte[] input, ICryptoTransform CryptoTransform)
{
MemoryStream memStream = new MemoryStream();
CryptoStream cryptStream = new CryptoStream(memStream, CryptoTransform, CryptoStreamMode.Write);
cryptStream.Write(input, 0, input.Length);
cryptStream.FlushFinalBlock();
memStream.Position = 0;
byte[] result = new byte[Convert.ToInt32(memStream.Length)];
memStream.Read(result, 0, Convert.ToInt32(result.Length));
memStream.Close();
cryptStream.Close();
return result;
}
}
Важно: обратите внимание
- MD5 считается устаревшим алгоритмом хеширования и не рекомендован для криптографических целей. Лучше использовать
SHA256илиPBKDF2для генерации ключей. - Этот пример подходит для учебных или внутренних проектов. Для продакшна — используйте современные и более безопасные методы.
Вывод
Класс Encryptor — отличный старт для понимания работы с шифрованием в C#. Он показывает, как просто реализовать защиту данных с помощью встроенных средств .NET. Однако помните: в серьезных приложениях всегда используйте проверенные и безопасные алгоритмы.
