<< | к задаче | главная | печатать | обсудить(0 сообщений) >>
Задача: Шифрование произвольных данных
Исходник: Шифрование строки или массива байт [C#, code #540, hits: 14979, рейтинг: 3/7,4.98(2007)] +
автор: - [добавлен: 17.12.2007] управление:
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. using System.Security.Cryptography;
  5.  
  6. namespace RSDN
  7. {
  8. public class Crypt
  9. {
  10. public static byte[] Encrypt(byte[] data,string password)
  11. {
  12. SymmetricAlgorithm sa = Rijndael.Create();
  13. ICryptoTransform ct = sa.CreateEncryptor(
  14. (new PasswordDeriveBytes(password,null)).GetBytes(16),
  15. new byte[16]);
  16.  
  17. MemoryStream ms = new MemoryStream();
  18. CryptoStream cs = new CryptoStream(ms,ct,CryptoStreamMode.Write);
  19.  
  20. cs.Write(data,0,data.Length);
  21. cs.FlushFinalBlock();
  22.  
  23. return ms.ToArray();
  24. }
  25.  
  26. public static string Encrypt(string data,string password)
  27. {
  28. return Convert.ToBase64String(Encrypt(Encoding.UTF8.GetBytes(data),password));
  29. }
  30.  
  31. static public byte[] Decrypt(byte[] data,string password)
  32. {
  33. BinaryReader br = new BinaryReader(InternalDecrypt(data,password));
  34. return br.ReadBytes((int)br.BaseStream.Length);
  35. }
  36.  
  37. static public string Decrypt(string data,string password)
  38. {
  39. CryptoStream cs = InternalDecrypt(Convert.FromBase64String(data),password);
  40. StreamReader sr = new StreamReader(cs);
  41. return sr.ReadToEnd();
  42. }
  43.  
  44. static CryptoStream InternalDecrypt(byte[] data,string password)
  45. {
  46. SymmetricAlgorithm sa = Rijndael.Create();
  47. ICryptoTransform ct = sa.CreateDecryptor(
  48. (new PasswordDeriveBytes(password,null)).GetBytes(16),
  49. new byte[16]);
  50.  
  51. MemoryStream ms = new MemoryStream(data);
  52. return new CryptoStream(ms,ct,CryptoStreamMode.Read);
  53. }
  54. }
  55. }
В MSDN много примеров как закриптовать целый файл. Но, к сожалению, нет ничего о том как закриптовать просто строку или массив байт. Следующий класс позволяет восполнить данный пробел.

Источник: http://rsdn.ru/forum/Message.aspx?mid=85033&only=1

+добавить реализацию
 
каталог | задачи | паттерны | исходники | стат | форумы | карта сайта | контакты | ссылки 
© 2000-2017 CodeLAB Group
  Все права защищены
Страница сгенерирована за 0.004511 секунд
Количество запросов к БД: 8, gzip: 3.6kb/15.5kb(77%)