Алгоритм Хаффмена - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте...имеется у кого-нибудь исходник алгоритма сжатия Хаффмена на C#? Буду очень признателен!
upd 1. Не правильно сформулировал - не сжатие, а шифрование Хаффмена .Требуется не шифровать файл, а просто строку текста. Например в Textbox1 вводишь строку типа "блаблабла", а в Textbox2 выводится зашифрованный текст. Большое спасибо заранее!

Решение задачи: «Алгоритм Хаффмена»

textual
Листинг программы
    
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);
    }
    }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5