You are on page 1of 9

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Docfileluufile

public partial class Form1 : Form

public Form1()

InitializeComponent();

FileStream st;

int cot = 5;

private void btfile_Click(object sender, EventArgs e)

OpenFileDialog op = new OpenFileDialog();

if (op.ShowDialog() == DialogResult.OK)

txtlink.Text = op.FileName;

private void btthuchien_Click(object sender, EventArgs e)


{

btthuchien.Enabled = false;

//Random so

// Kiem tra co du lieu hay khong

if (txtlink.Text == string.Empty)

MessageBox.Show("File khng tn ti xin mi xem li");

else

// try

// {

if (rdmahoa.Checked)

// Kiem tra file co ton tai hay khong

if (File.Exists(txtlink.Text))

int sodu = 0;

st = new FileStream(txtlink.Text, FileMode.Open,


FileAccess.Read);

int hang = (int)Math.Ceiling((Decimal)st.Length / cot);

//tim so du khi chia file cho cot

if(st.Length%cot!=0)

sodu = (int)st.Length % cot;

Random rdd = new Random();

int so = rdd.Next(1, 5);

// khoi tao mang 2 chieu cot, hang

byte[,] mang = new byte[cot, hang];

byte[] tailieufile = new byte[st.Length];

int h = 0;
// doc file

while (st.Position < st.Length)

tailieufile[h] = (byte)st.ReadByte();

h++;

// doc du lieu vao mang 2 chieu

for (int i = 0; i < hang; i++)

for (int j = 0; j < cot; j++)

if (i * cot + j < tailieufile.Length)

mang[j, i] = tailieufile[i * cot + j];

else

mang[j, i] =254;

st.Close();

// khoi tao mang co so luong cot

int[] hv = new int[cot];

for (int i = 0; i < cot; i++)

hv[i] = i;

int hsk = so;

// xao chon mang do theo hsk

int[] cesarMH = new int[cot];

for (int i = 0; i < cot; i++)

cesarMH[i] = hv[(i + hsk) % cot];


}

// khoi tao mang kq

byte[] kqq;

kqq = new byte[hang * cot];

// kiem tra mang ket q

//if (tailieufile.Length % cot==0)

//{

// kqq = new byte[tailieufile.Length];

//}

//else

//{

// kqq = new byte[tailieufile.Length +cot ];

//}

int sokt = 0;

for (int i = 0; i < cot; i++)

for (int j = 0; j < hang; j++)

kqq[sokt] = mang[cesarMH[i], j];

sokt++;

//Xep file

SaveFileDialog sv = new SaveFileDialog();

string tep = Path.GetExtension(txtlink.Text).Substring(1);

sv.Filter = tep.ToUpper() + " files (*." + tep + ")|*." +


tep;

if (sv.ShowDialog() == DialogResult.OK)

FileStream f = new FileStream(sv.FileName,


FileMode.Create);
f.Write(Encoding.UTF8.GetBytes(so.ToString()), 0, 1);

f.Write(Encoding.UTF8.GetBytes(sodu.ToString()), 0, 1);

f.Write(kqq, 0, kqq.Length);

btthuchien.Enabled = true;

f.Close();

if (rdgm.Checked)

// kiem tra ton tai file

if (File.Exists(txtlink.Text))

st = new FileStream(txtlink.Text, FileMode.Open,


FileAccess.Read);

int hang = 0;

if((st.Length-2)%cot==0)

hang = (int)st.Length / cot;

else

hang = (int)st.Length / cot +1;

// tao mang cot hang

byte[,] mang = new byte[cot, hang];

byte[] tailieufile = new byte[st.Length-2];

int h = 0;

int soo = 0;

string sogm = "";

byte[] dodai = new byte[1];

byte[] sodem=new byte[1];


while (st.Position < st.Length)

// lay so random trong file

if(h==0)

sodem[0] = (byte)st.ReadByte();

sogm = Encoding.UTF8.GetString(sodem);

h++;

// lay so du trong file

if(h==1)

dodai[0] = (byte)st.ReadByte();

h++;

// ghi du lieu ra

else if(h!=0 && h!=1)

tailieufile[soo] = (byte)st.ReadByte();

soo++;

// doc vao file

for (int i = 0; i < cot; i++)

for (int j = 0; j < hang; j++)

if ((j * cot + i) < tailieufile.Length)

mang[i, j] = tailieufile[i * hang + j];

}
}

st.Close();

int[] hv = new int[cot];

for (int i = 0; i < cot; i++)

hv[i] = i;

int hsk = int.Parse(sogm);

int[] cesarMH = new int[cot];

for (int i = 0; i < cot; i++)

if ((i - hsk) >= 0)

cesarMH[i] = hv[i - hsk];

else

cesarMH[i] = hv[(i - hsk + cot)];

byte[] kqq;

int sokt = 0;

if((int.Parse(Encoding.UTF8.GetString(dodai)))==0)

kqq = new byte[tailieufile.Length];

for (int i = 0; i < hang; i++)

for (int j = 0; j < cot; j++)

if (sokt < kqq.Length)


{

kqq[sokt] += mang[cesarMH[j], i];

sokt++;

else

kqq = new byte[tailieufile.Length -cot +


(int.Parse(Encoding.UTF8.GetString(dodai)))];

for (int i = 0; i < hang; i++)

for (int j = 0; j < cot; j++)

if (sokt<kqq.Length)

kqq[sokt] += mang[cesarMH[j], i];

sokt++;

SaveFileDialog sv = new SaveFileDialog();

string tep = Path.GetExtension(txtlink.Text).Substring(1);

sv.Filter = tep.ToUpper() + " files (*." + tep + ")|*." + tep;

if (sv.ShowDialog() == DialogResult.OK)

FileStream f = new FileStream(sv.FileName, FileMode.Create);

f.Write(kqq, 0, kqq.Length);

btthuchien.Enabled = true;
f.Close();

//catch

//{

// MessageBox.Show("Khong the doc file ");

//}

private void Form1_Load(object sender, EventArgs e)

rdmahoa.Checked = true;

You might also like