В MSDN много примеров как закриптовать целый файл. Но, к сожалению, нет ничего о том как закриптовать просто строку или массив байт. Следующий класс позволяет восполнить данный пробел.
using System; using System.IO; using System.Text; using System.Security.Cryptography; namespace RSDN { public class Crypt { public static byte[] Encrypt(byte[] data,string password) { SymmetricAlgorithm sa = Rijndael.Create(); ICryptoTransform ct = sa.CreateEncryptor( (new PasswordDeriveBytes(password,null)).GetBytes(16), new byte[16]); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms,ct,CryptoStreamMode.Write); cs.Write(data,0,data.Length); cs.FlushFinalBlock(); return ms.ToArray(); } public static string Encrypt(string data,string password) { return Convert.ToBase64String(Encrypt(Encoding.UTF8.GetBytes(data),password)); } static public byte[] Decrypt(byte[] data,string password) { BinaryReader br = new BinaryReader(InternalDecrypt(data,password)); return br.ReadBytes((int)br.BaseStream.Length); } static public string Decrypt(string data,string password) { CryptoStream cs = InternalDecrypt(Convert.FromBase64String(data),password); StreamReader sr = new StreamReader(cs); return sr.ReadToEnd(); } static CryptoStream InternalDecrypt(byte[] data,string password) { SymmetricAlgorithm sa = Rijndael.Create(); ICryptoTransform ct = sa.CreateDecryptor( (new PasswordDeriveBytes(password,null)).GetBytes(16), new byte[16]); MemoryStream ms = new MemoryStream(data); return new CryptoStream(ms,ct,CryptoStreamMode.Read); } } }
Источник: http://www.codelab.ru/task/crypt_anything/
Вы тестировали то что написали?
При шифрование массива байт выдает ошибку «Поток не поддерживает поиск.»
строка 35
код нужно чуток подправить
строку 35 заменить на :
return br.ReadBytes(data.Length);
Спасибо! очень пригодился. Согласен. на МСДН и правда нет примера для работа со строками