В 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);
Спасибо! очень пригодился. Согласен. на МСДН и правда нет примера для работа со строками