Re: C#: Как закриптовать что-нибудь хоть как-нибудь
От: Styx_ Россия  
Дата: 20.09.05 08:41
Оценка: :)
Здравствуйте, IT, Вы писали:

IT>Как известно, принцип "мы с Томарой ходим парой" весьма распространён в различных API, нужно не просто знать какие методы вызывать, но и в какой последовательности. В MSDN много примеров как закриптовать целый файл. Но, к сожалению, нет ничего о том как закриптовать просто строку или массив байт. Следующий класс позволяет восполнить данный пробел.


IT>
IT>using System;
IT>using System.IO;
IT>using System.Text;
IT>using System.Security.Cryptography;

IT>namespace RSDN
IT>{
IT>    public class Crypt
IT>    {
IT>        public static byte[] Encrypt(byte[] data,string password)
IT>        {
IT>            SymmetricAlgorithm sa = Rijndael.Create();
IT>            ICryptoTransform ct = sa.CreateEncryptor(
IT>                (new PasswordDeriveBytes(password,null)).GetBytes(16),
IT>                new byte[16]);

IT>            MemoryStream ms = new MemoryStream();
IT>            CryptoStream cs = new CryptoStream(ms,ct,CryptoStreamMode.Write);

IT>            cs.Write(data,0,data.Length);
IT>            cs.FlushFinalBlock();

IT>            return ms.ToArray();
IT>        }

IT>        public static string Encrypt(string data,string password)
IT>        {
IT>            return Convert.ToBase64String(Encrypt(Encoding.UTF8.GetBytes(data),password));
IT>        }

IT>        static public byte[] Decrypt(byte[] data,string password)
IT>        {
IT>            BinaryReader br = new BinaryReader(InternalDecrypt(data,password));
IT>            return br.ReadBytes((int)br.BaseStream.Length);
IT>        }

IT>        static public string Decrypt(string data,string password)
IT>        {
IT>            CryptoStream cs = InternalDecrypt(Convert.FromBase64String(data),password);
IT>            StreamReader sr = new StreamReader(cs);
IT>            return sr.ReadToEnd();
IT>        }

IT>        static CryptoStream InternalDecrypt(byte[] data,string password)
IT>        {
IT>            SymmetricAlgorithm sa = Rijndael.Create();
IT>            ICryptoTransform ct = sa.CreateDecryptor(
IT>                (new PasswordDeriveBytes(password,null)).GetBytes(16),
IT>                new byte[16]);

IT>            MemoryStream ms = new MemoryStream(data);
IT>            return new CryptoStream(ms,ct,CryptoStreamMode.Read);
IT>        }
IT>    }
IT>}
IT>


Еслиб ты ещё написал как всем этим воспользоватся. Было бы круто
Styx
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.