Класс шифрования на 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. Однако помните: в серьезных приложениях всегда используйте проверенные и безопасные алгоритмы.