Главная
>>
Каталог задач
>>
Шифрование
>>
Шифрование произвольных данных
Шифрование произвольных данных
реализации: C#, количество: 1
Aвтор: неизвестный
Дата: 17.12.2007
Просмотров: 173245
Рейтинг:
3/7,4.89(880)
+
реализации(исходники)
+добавить
Примеры решения простой задачи шифрования содержимого переменной: строки, массива, структуры и проч.
Реализации:
C#(1),
java(1)
+добавить реализацию
1)
Шифорвание строки или массива байт, code #540[автор:-]
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),
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),
MemoryStream ms =
new MemoryStream
(data
);
return new CryptoStream
(ms,ct,CryptoStreamMode.
Read);
}
}
}