Đồ án Tìm hiểu hệ mã chuẩn cài đặt DES và thám mã 3 vòng

Dim strbanro As String strbanro += "748502CD38451097" + Chr(13) + Chr(10) strbanro += "3874756438451097" + Chr(13) + Chr(10) strbanro += "486911026ACDFF31" + Chr(13) + Chr(10) strbanro += "375BD31F6ACDFF31" + Chr(13) + Chr(10) strbanro += "357418DA013FEC86" + Chr(13) + Chr(10) strbanro += "12549847013FEC86" txtbanro.Text = strbanro Dim strbanma As String strbanma += "03C70306D8A09F10" + Chr(13) + Chr(10) strbanma += "78560A0960E6D4CB" + Chr(13) + Chr(10) strbanma += "45FA285BE5ADC730" + Chr(13) + Chr(10) strbanma += "134F7915AC253457" + Chr(13) + Chr(10) strbanma += "D8A31B2F28BBC5CF" + Chr(13) + Chr(10) strbanma += "0F317AC2B23CB944" txtbanma.Text = strbanma khoitao() End Sub 'des

doc122 trang | Chia sẻ: aloso | Lượt xem: 1459 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đồ án Tìm hiểu hệ mã chuẩn cài đặt DES và thám mã 3 vòng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
(6).Rows.Add(row) Next s(6).Rows(0).Item(0) = 4 s(6).Rows(0).Item(1) = 11 s(6).Rows(0).Item(2) = 2 s(6).Rows(0).Item(3) = 14 s(6).Rows(0).Item(4) = 15 s(6).Rows(0).Item(5) = 0 s(6).Rows(0).Item(6) = 8 s(6).Rows(0).Item(7) = 13 s(6).Rows(0).Item(8) = 3 s(6).Rows(0).Item(9) = 12 s(6).Rows(0).Item(10) = 9 s(6).Rows(0).Item(11) = 7 s(6).Rows(0).Item(12) = 5 s(6).Rows(0).Item(13) = 10 s(6).Rows(0).Item(14) = 6 s(6).Rows(0).Item(15) = 1 s(6).Rows(1).Item(0) = 13 s(6).Rows(1).Item(1) = 0 s(6).Rows(1).Item(2) = 11 s(6).Rows(1).Item(3) = 7 s(6).Rows(1).Item(4) = 4 s(6).Rows(1).Item(5) = 9 s(6).Rows(1).Item(6) = 1 s(6).Rows(1).Item(7) = 10 s(6).Rows(1).Item(8) = 14 s(6).Rows(1).Item(9) = 3 s(6).Rows(1).Item(10) = 5 s(6).Rows(1).Item(11) = 12 s(6).Rows(1).Item(12) = 2 s(6).Rows(1).Item(13) = 15 s(6).Rows(1).Item(14) = 8 s(6).Rows(1).Item(15) = 6 s(6).Rows(2).Item(0) = 1 s(6).Rows(2).Item(1) = 4 s(6).Rows(2).Item(2) = 11 s(6).Rows(2).Item(3) = 13 s(6).Rows(2).Item(4) = 12 s(6).Rows(2).Item(5) = 3 s(6).Rows(2).Item(6) = 7 s(6).Rows(2).Item(7) = 14 s(6).Rows(2).Item(8) = 10 s(6).Rows(2).Item(9) = 15 s(6).Rows(2).Item(10) = 6 s(6).Rows(2).Item(11) = 8 s(6).Rows(2).Item(12) = 0 s(6).Rows(2).Item(13) = 5 s(6).Rows(2).Item(14) = 9 s(6).Rows(2).Item(15) = 2 s(6).Rows(3).Item(0) = 6 s(6).Rows(3).Item(1) = 11 s(6).Rows(3).Item(2) = 13 s(6).Rows(3).Item(3) = 8 s(6).Rows(3).Item(4) = 1 s(6).Rows(3).Item(5) = 4 s(6).Rows(3).Item(6) = 10 s(6).Rows(3).Item(7) = 7 s(6).Rows(3).Item(8) = 9 s(6).Rows(3).Item(9) = 5 s(6).Rows(3).Item(10) = 0 s(6).Rows(3).Item(11) = 15 s(6).Rows(3).Item(12) = 14 s(6).Rows(3).Item(13) = 2 s(6).Rows(3).Item(14) = 3 s(6).Rows(3).Item(15) = 12 dgs6.DataSource = s(6) End Sub Hàm khởi tạo S7 Sub khoitao_s7() Dim i As Integer s(7) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumn s(7).Columns.Add(col) Next For i = 0 To 3 Dim row As DataRow = s(7).NewRow s(7).Rows.Add(row) Next s(7).Rows(0).Item(0) = 13 s(7).Rows(0).Item(1) = 2 s(7).Rows(0).Item(2) = 8 s(7).Rows(0).Item(3) = 4 s(7).Rows(0).Item(4) = 6 s(7).Rows(0).Item(5) = 15 s(7).Rows(0).Item(6) = 11 s(7).Rows(0).Item(7) = 1 s(7).Rows(0).Item(8) = 10 s(7).Rows(0).Item(9) = 9 s(7).Rows(0).Item(10) = 3 s(7).Rows(0).Item(11) = 14 s(7).Rows(0).Item(12) = 5 s(7).Rows(0).Item(13) = 0 s(7).Rows(0).Item(14) = 12 s(7).Rows(0).Item(15) = 7 s(7).Rows(1).Item(0) = 1 s(7).Rows(1).Item(1) = 15 s(7).Rows(1).Item(2) = 13 s(7).Rows(1).Item(3) = 8 s(7).Rows(1).Item(4) = 10 s(7).Rows(1).Item(5) = 3 s(7).Rows(1).Item(6) = 7 s(7).Rows(1).Item(7) = 4 s(7).Rows(1).Item(8) = 12 s(7).Rows(1).Item(9) = 5 s(7).Rows(1).Item(10) = 6 s(7).Rows(1).Item(11) = 11 s(7).Rows(1).Item(12) = 0 s(7).Rows(1).Item(13) = 14 s(7).Rows(1).Item(14) = 9 s(7).Rows(1).Item(15) = 2 s(7).Rows(2).Item(0) = 7 s(7).Rows(2).Item(1) = 11 s(7).Rows(2).Item(2) = 4 s(7).Rows(2).Item(3) = 1 s(7).Rows(2).Item(4) = 9 s(7).Rows(2).Item(5) = 12 s(7).Rows(2).Item(6) = 14 s(7).Rows(2).Item(7) = 2 s(7).Rows(2).Item(8) = 0 s(7).Rows(2).Item(9) = 6 s(7).Rows(2).Item(10) = 10 s(7).Rows(2).Item(11) = 13 s(7).Rows(2).Item(12) = 15 s(7).Rows(2).Item(13) = 3 s(7).Rows(2).Item(14) = 5 s(7).Rows(2).Item(15) = 8 s(7).Rows(3).Item(0) = 2 s(7).Rows(3).Item(1) = 1 s(7).Rows(3).Item(2) = 14 s(7).Rows(3).Item(3) = 7 s(7).Rows(3).Item(4) = 4 s(7).Rows(3).Item(5) = 10 s(7).Rows(3).Item(6) = 8 s(7).Rows(3).Item(7) = 13 s(7).Rows(3).Item(8) = 15 s(7).Rows(3).Item(9) = 12 s(7).Rows(3).Item(10) = 9 s(7).Rows(3).Item(11) = 0 s(7).Rows(3).Item(12) = 3 s(7).Rows(3).Item(13) = 5 s(7).Rows(3).Item(14) = 6 s(7).Rows(3).Item(15) = 11 dgs7.DataSource = s(7) End Sub Khởi tạo giá trị biến Sub khoitao() ip = txtip.Text.Split(" ", ";", ":", ".") 'iptru = txtiptru.Text.Split(" ", " ", ";", ":", ".") e = txte.Text.Split(" ", ";", ":", ".") p = txtp.Text.Split(" ", ";", ":", ".") pc1 = txtpc1.Text.Split(" ", ";", ":", ".") pc2 = txtpc2.Text.Split(" ", ";", ":", ".") khoitao_s0() khoitao_s1() khoitao_s2() khoitao_s3() khoitao_s4() khoitao_s5() khoitao_s6() khoitao_s7() End Sub Cắt bit cuối Function catbitcuoi(ByVal k As String) As String 'dua vao 64 bit tra ra 56 bit Dim i As Integer = 0 Dim j As Integer Dim tam As String While i < 63 For j = i To i + 6 tam += k.Substring(j, 1) Next i = i + 8 End While Return tam End Function Function hvpc1(ByVal k As String) As String Dim tam(63) As Char Dim i As Integer For i = 0 To 63 tam(i) = k.Substring(i, 1) Next tam = catbitcuoi(tam) For i = 0 To 55 tam(i) = k.Substring(Integer.Parse(pc1(i) - 1), 1) Next Return tam End Function Hoá vị pc2 Function hvpc2(ByVal str As String) As String Dim tam(47) As Char Dim i As Integer For i = 0 To 47 tam(i) = str.Substring(Integer.Parse(pc2(i) - 1), 1) Next Return tam End Function Function ls(ByVal s As String, ByVal n As Integer) As String Return s.Substring(n, s.Length - n) + s.Substring(0, n) End Function Hàm tạo dãy khoá Sub taodaykhoa() Dim khoa as String = "0001001100110100010101110111100110011011101111001101111111110001" Dim khoa As String = txtkhoak.Text Dim j As Integer If khoa.Length > 8 Then khoa = txtkhoak.Text.Remove(8, khoa.Length - 8) txtkhoak.Text = khoa End If Dim tam As String For j = 0 To khoa.Length - 1 tam += bi_acsii(Asc(khoa.Substring(j, 1))) Next khoa = tam Dim khoa1 As String = hvpc1(khoa) Dim d(16) As String Dim c(16) As String c(0) = khoa1.Substring(0, 28) c(0) = ls(c(0), 1) d(0) = khoa1.Substring(28, 28) d(0) = ls(d(0), 1) daykhoa(0) = hvpc2(c(0) + d(0)) txtdaykhoa.Text += daykhoa(0) + Chr(9) Dim i As Integer For i = 1 To 15 If i = 2 - 1 Or i = 9 - 1 Or i = 16 - 1 Then c(i) = ls(c(i - 1), 1) d(i) = ls(d(i - 1), 1) Else c(i) = ls(c(i - 1), 2) d(i) = ls(d(i - 1), 2) End If daykhoa(i) = hvpc2(c(i) + d(i)) txtdaykhoa.Text += daykhoa(i) + Chr(9) Next i End Sub Một số hàm xử lý chuỗi nhập Nhập nhị phân Sub binarynhap() x = txtchuoinhap.Text Dim y As String Dim i As Integer Dim j As Integer Dim sokitudu As Integer = x.Length Mod 8 If sokitudu > 0 Then Dim sokituthem As Integer = 8 - sokitudu For i = 1 To sokituthem x += " " Next End If Dim sodaynhap As Integer = x.Length \ 8 ReDim daynhap(sodaynhap - 1) For i = 0 To sodaynhap - 1 daynhap(i) = x.Substring(i * 8, 8) y = "" For j = 0 To daynhap(i).Length - 1 y += bi_acsii(Asc(daynhap(i).Substring(j, 1))) Next daynhap(i) = y Next End Sub Function bi_acsii(ByVal int As Integer) As String Dim tam(7) As Char Dim i As Integer For i = 0 To 7 tam(i) = (int Mod 2).ToString int \= 2 Next Array.Reverse(tam) Return tam End Function Một số hàm mã hoá Hàm hoán vị ip Function hvip(ByVal x As String) As String Dim tam(63) As Char Dim i As Integer For i = 0 To 63 tam(i) = x.Substring(ip(i) - 1, 1) Next Return tam End Function Hàm hoán vị e Function hve(ByVal r As String) As String Dim tam(47) As Char Dim i As Integer For i = 0 To 47 tam(i) = r.Substring(e(i) - 1, 1) Next Return tam End Function Function hvp(ByVal c As String) As String Dim tam(31) As Char Dim i As Integer For i = 0 To 31 tam(i) = c.Substring(p(i) - 1, 1) Next Return tam End Function Hàm hoán vị ip trừ Function hviptru(ByVal c As String) As String Dim tam(63) As Char Dim i As Integer For i = 0 To 63 tam(ip(i) - 1) = c.Substring(i, 1) Next Return tam End Function Mã hoá Function mahoa() As String binarynhap() Dim k As Integer Dim y As String For k = 0 To daynhap.Length - 1 'x += "0000000100100011010001010110011110001001101010101100110111101111" x = daynhap(k) Dim x0 As String = hvip(x) Dim l(15) As String Dim r(15) As String Dim i, j As Integer Dim l0 As String = x0.Substring(0, 32) Dim r0 As String = x0.Substring(32, 32) l(0) = r0 For i = 0 To 31 r(0) += (l0.Substring(i, 1) Xor f(r0, daykhoa(0)).Substring(i, 1)).ToString Next For i = 1 To 15 l(i) = r(i - 1) Dim a As String = f(r(i - 1), daykhoa(i)) For j = 0 To 31 r(i) += (l(i - 1).Substring(j, 1) Xor a.Substring(j, 1)).ToString Next j Next i Dim v As String = hviptru(r(15) + l(15)) y += v Next k Return y End Function Hàm f Function f(ByVal r As String, ByVal k As String) As String Dim i As Integer Dim e As String Dim hv As String = hve(r) For i = 0 To 47 e += (hv.Substring(i, 1) Xor k.Substring(i, 1)).ToString Next Dim b(7) As String Dim c As String For i = 0 To 7 b(i) = e.Substring(i * 6, 6) Dim haibitcuoi As String = b(i).Substring(0, 1) + b(i).Substring(5, 1) Dim bonbitgiua As String = b(i).Substring(1, 4) Dim srow = thapphan(haibitcuoi) Dim scol = thapphan(bonbitgiua) Dim sij As Integer = s(i).Rows(srow).Item(scol) c += binary(sij) Next c = hvp(c) Return c End Function Hàm thập phân Function thapphan(ByVal b As String) As Integer Dim i As Integer Dim tam As Integer = 0 For i = 0 To b.Length - 1 If b.Substring(i, 1) = 1 Then tam += 2 ^ (b.Length - 1 - i) End If Next Return tam End Function Hàm nhị phân Function binary(ByVal a As Integer) As String Dim i As Integer Dim tam(3) As Char For i = 0 To 3 tam(i) = (a Mod 2).ToString a = a \ 2 Next Array.Reverse(tam) Return tam End Function Hàm đổi ra chữ Function doirachu(ByVal y As String) As String Dim tam As String = y Dim tam1 As String = "" Dim so As Integer Dim i As Integer Dim j As Integer While i < tam.Length - 1 so = 0 For j = i To i + 7 If tam.Substring(j, 1) = 1 Then so += 2 ^ (7 - (j - i)) End If Next tam1 += Chr(so) i = i + 8 End While Return tam1 End Function #End Region một số hàm dùng để giải mã tạo bản mã nhị phân Sub binaybanma() Dim sodaybanma = txtbanma.Text.Length \ 8 Dim i, j As Integer Dim tam As String ReDim daybanma(sodaybanma - 1) For i = 0 To sodaybanma - 1 daybanma(i) = txtbanma.Text.Substring(i * 8, 8) tam = "" For j = 0 To daybanma(i).Length - 1 tam += bi_acsii(Asc(daybanma(i).Substring(j, 1))) Next daybanma(i) = tam Next i End Sub Hàm giải mã Function giaima() As String binaybanma() Dim k As Integer x = "" For k = 0 To daybanma.Length - 1 Dim y0 As String = hvip(daybanma(k)) Dim rr As String = y0.Substring(0, 32) Dim ll As String = y0.Substring(32, 32) Dim i, j As Integer Dim l(15) As String Dim r(15) As String r(15) = ll For i = 0 To 31 l(15) += (rr.Substring(i, 1) Xor f(ll, daykhoa(15)).Substring(i, 1)).ToString Next For i = 14 To 0 Step -1 r(i) = l(i + 1) Dim a As String = f(l(i + 1), daykhoa(i)) For j = 0 To 31 l(i) += (r(i + 1).Substring(j, 1) Xor a.Substring(j, 1)).ToString Next j Next i x += hviptru(l(0) + r(0)) Next k Return x End Function Một số sự kiện giúp cho việc thực thi Private Sub des_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load khoitao() End Sub Private Sub btlapma_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btlapma.Click khoitao() If txtchuoinhap.Text = "" Then MessageBox.Show("Bạn hãy nhập vào chuỗi cần mã hố") txtchuoinhap.Focus() Return End If If txtkhoak.Text = "" Or txtkhoak.Text.Length < 8 Then MessageBox.Show("Bạn hãy nhập vào khĩa :8 kí tự") txtkhoak.Focus() Return End If txtdaykhoa.Text = "" taodaykhoa() txtbanmabit.Text = mahoa() txtbanma.Text = doirachu(mahoa()) End Sub Private Sub btthoat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btthoat.Click Me.Close() End Sub Private Sub btgiaima_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btgiaima.Click If txtkhoak.Text = "" Or txtkhoak.Text.Length < 8 Then MessageBox.Show("Bạn hãy nhập khĩa : 8 kí tự") txtkhoak.Focus() Return End If If txtbanma.Text = "" Then MessageBox.Show("Bạn hãy nhập vào chuỗi cần giải mã") txtbanma.Focus() Return End If txtdaykhoa.Text = "" taodaykhoa() txtbanrobit.Text = giaima() txtbanro.Text = doirachu(giaima()) End Sub End Class Form thám mã Des (thamma.vb) Imports System.Windows.Forms Public Class thammades Inherits System.Windows.Forms.Form Khai báo một số biến và hàm Dim banro() As String Dim banma() As String Dim hve(47) As Integer Dim hvp(31) As Integer Dim hvpc2(47) As Integer Dim hvpc1(55) As Integer Dim hvip(63) As Integer Dim e() As String Dim esao() As String Dim ephay() As String Dim cphay() As String Dim jhop(7, 63) As Integer Dim s(7) As DataTable Dim chuoikhoa(255) As String Dim daykhoa(2) As String Dim n As Integer '6 ban ro va 6 ban ma Const m = 16 '8 ki tu Const hebit = 4 'he 256 Dim flag As Boolean Khởi tạo Sub khoitao_s0() Dim i As Integer s(0) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumn s(0).Columns.Add(col) Next For i = 0 To 3 Dim row As DataRow = s(0).NewRow s(0).Rows.Add(row) Next s(0).Rows(0).Item(0) = 14 s(0).Rows(0).Item(1) = 4 s(0).Rows(0).Item(2) = 13 s(0).Rows(0).Item(3) = 1 s(0).Rows(0).Item(4) = 2 s(0).Rows(0).Item(5) = 15 s(0).Rows(0).Item(6) = 11 s(0).Rows(0).Item(7) = 8 s(0).Rows(0).Item(8) = 3 s(0).Rows(0).Item(9) = 10 s(0).Rows(0).Item(10) = 6 s(0).Rows(0).Item(11) = 12 s(0).Rows(0).Item(12) = 5 s(0).Rows(0).Item(13) = 9 s(0).Rows(0).Item(14) = 0 s(0).Rows(0).Item(15) = 7 s(0).Rows(1).Item(0) = 0 s(0).Rows(1).Item(1) = 15 s(0).Rows(1).Item(2) = 7 s(0).Rows(1).Item(3) = 4 s(0).Rows(1).Item(4) = 14 s(0).Rows(1).Item(5) = 2 s(0).Rows(1).Item(6) = 13 s(0).Rows(1).Item(7) = 1 s(0).Rows(1).Item(8) = 10 s(0).Rows(1).Item(9) = 6 s(0).Rows(1).Item(10) = 12 s(0).Rows(1).Item(11) = 11 s(0).Rows(1).Item(12) = 9 s(0).Rows(1).Item(13) = 5 s(0).Rows(1).Item(14) = 3 s(0).Rows(1).Item(15) = 8 s(0).Rows(2).Item(0) = 4 s(0).Rows(2).Item(1) = 1 s(0).Rows(2).Item(2) = 14 s(0).Rows(2).Item(3) = 8 s(0).Rows(2).Item(4) = 13 s(0).Rows(2).Item(5) = 6 s(0).Rows(2).Item(6) = 2 s(0).Rows(2).Item(7) = 11 s(0).Rows(2).Item(8) = 15 s(0).Rows(2).Item(9) = 12 s(0).Rows(2).Item(10) = 9 s(0).Rows(2).Item(11) = 7 s(0).Rows(2).Item(12) = 3 s(0).Rows(2).Item(13) = 10 s(0).Rows(2).Item(14) = 5 s(0).Rows(2).Item(15) = 0 s(0).Rows(3).Item(0) = 15 s(0).Rows(3).Item(1) = 12 s(0).Rows(3).Item(2) = 8 s(0).Rows(3).Item(3) = 2 s(0).Rows(3).Item(4) = 4 s(0).Rows(3).Item(5) = 9 s(0).Rows(3).Item(6) = 1 s(0).Rows(3).Item(7) = 7 s(0).Rows(3).Item(8) = 5 s(0).Rows(3).Item(9) = 11 s(0).Rows(3).Item(10) = 3 s(0).Rows(3).Item(11) = 14 s(0).Rows(3).Item(12) = 10 s(0).Rows(3).Item(13) = 0 s(0).Rows(3).Item(14) = 6 s(0).Rows(3).Item(15) = 13 End Sub Khởi tạo hàm s1 Sub khoitao_s1() Dim i As Integer s(1) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumn s(1).Columns.Add(col) Next For i = 0 To 3 Dim row As DataRow = s(1).NewRow s(1).Rows.Add(row) Next s(1).Rows(0).Item(0) = 15 s(1).Rows(0).Item(1) = 1 s(1).Rows(0).Item(2) = 8 s(1).Rows(0).Item(3) = 14 s(1).Rows(0).Item(4) = 6 s(1).Rows(0).Item(5) = 11 s(1).Rows(0).Item(6) = 3 s(1).Rows(0).Item(7) = 4 s(1).Rows(0).Item(8) = 9 s(1).Rows(0).Item(9) = 7 s(1).Rows(0).Item(10) = 2 s(1).Rows(0).Item(11) = 13 s(1).Rows(0).Item(12) = 12 s(1).Rows(0).Item(13) = 0 s(1).Rows(0).Item(14) = 5 s(1).Rows(0).Item(15) = 10 s(1).Rows(1).Item(0) = 3 s(1).Rows(1).Item(1) = 13 s(1).Rows(1).Item(2) = 4 s(1).Rows(1).Item(3) = 7 s(1).Rows(1).Item(4) = 15 s(1).Rows(1).Item(5) = 2 s(1).Rows(1).Item(6) = 8 s(1).Rows(1).Item(7) = 14 s(1).Rows(1).Item(8) = 12 s(1).Rows(1).Item(9) = 0 s(1).Rows(1).Item(10) = 1 s(1).Rows(1).Item(11) = 10 s(1).Rows(1).Item(12) = 6 s(1).Rows(1).Item(13) = 9 s(1).Rows(1).Item(14) = 11 s(1).Rows(1).Item(15) = 5 s(1).Rows(2).Item(0) = 0 s(1).Rows(2).Item(1) = 14 s(1).Rows(2).Item(2) = 7 s(1).Rows(2).Item(3) = 11 s(1).Rows(2).Item(4) = 10 s(1).Rows(2).Item(5) = 4 s(1).Rows(2).Item(6) = 13 s(1).Rows(2).Item(7) = 1 s(1).Rows(2).Item(8) = 5 s(1).Rows(2).Item(9) = 8 s(1).Rows(2).Item(10) = 12 s(1).Rows(2).Item(11) = 6 s(1).Rows(2).Item(12) = 9 s(1).Rows(2).Item(13) = 3 s(1).Rows(2).Item(14) = 2 s(1).Rows(2).Item(15) = 15 s(1).Rows(3).Item(0) = 13 s(1).Rows(3).Item(1) = 8 s(1).Rows(3).Item(2) = 10 s(1).Rows(3).Item(3) = 1 s(1).Rows(3).Item(4) = 3 s(1).Rows(3).Item(5) = 15 s(1).Rows(3).Item(6) = 4 s(1).Rows(3).Item(7) = 2 s(1).Rows(3).Item(8) = 11 s(1).Rows(3).Item(9) = 6 s(1).Rows(3).Item(10) = 7 s(1).Rows(3).Item(11) = 12 s(1).Rows(3).Item(12) = 0 s(1).Rows(3).Item(13) = 5 s(1).Rows(3).Item(14) = 14 s(1).Rows(3).Item(15) = 9 End Sub Khởi tạo hàm s2 Sub khoitao_s2() Dim i As Integer s(2) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumn s(2).Columns.Add(col) Next For i = 0 To 3 Dim row As DataRow = s(2).NewRow s(2).Rows.Add(row) Next s(2).Rows(0).Item(0) = 10 s(2).Rows(0).Item(1) = 0 s(2).Rows(0).Item(2) = 9 s(2).Rows(0).Item(3) = 14 s(2).Rows(0).Item(4) = 6 s(2).Rows(0).Item(5) = 3 s(2).Rows(0).Item(6) = 15 s(2).Rows(0).Item(7) = 5 s(2).Rows(0).Item(8) = 1 s(2).Rows(0).Item(9) = 13 s(2).Rows(0).Item(10) = 12 s(2).Rows(0).Item(11) = 7 s(2).Rows(0).Item(12) = 11 s(2).Rows(0).Item(13) = 4 s(2).Rows(0).Item(14) = 2 s(2).Rows(0).Item(15) = 8 s(2).Rows(1).Item(0) = 13 s(2).Rows(1).Item(1) = 7 s(2).Rows(1).Item(2) = 0 s(2).Rows(1).Item(3) = 9 s(2).Rows(1).Item(4) = 3 s(2).Rows(1).Item(5) = 4 s(2).Rows(1).Item(6) = 6 s(2).Rows(1).Item(7) = 10 s(2).Rows(1).Item(8) = 2 s(2).Rows(1).Item(9) = 8 s(2).Rows(1).Item(10) = 5 s(2).Rows(1).Item(11) = 14 s(2).Rows(1).Item(12) = 12 s(2).Rows(1).Item(13) = 11 s(2).Rows(1).Item(14) = 15 s(2).Rows(1).Item(15) = 1 s(2).Rows(2).Item(0) = 13 s(2).Rows(2).Item(1) = 6 s(2).Rows(2).Item(2) = 4 s(2).Rows(2).Item(3) = 9 s(2).Rows(2).Item(4) = 8 s(2).Rows(2).Item(5) = 15 s(2).Rows(2).Item(6) = 3 s(2).Rows(2).Item(7) = 0 s(2).Rows(2).Item(8) = 11 s(2).Rows(2).Item(9) = 1 s(2).Rows(2).Item(10) = 2 s(2).Rows(2).Item(11) = 12 s(2).Rows(2).Item(12) = 5 s(2).Rows(2).Item(13) = 10 s(2).Rows(2).Item(14) = 14 s(2).Rows(2).Item(15) = 7 s(2).Rows(3).Item(0) = 1 s(2).Rows(3).Item(1) = 10 s(2).Rows(3).Item(2) = 13 s(2).Rows(3).Item(3) = 0 s(2).Rows(3).Item(4) = 6 s(2).Rows(3).Item(5) = 9 s(2).Rows(3).Item(6) = 8 s(2).Rows(3).Item(7) = 7 s(2).Rows(3).Item(8) = 4 s(2).Rows(3).Item(9) = 15 s(2).Rows(3).Item(10) = 14 s(2).Rows(3).Item(11) = 3 s(2).Rows(3).Item(12) = 11 s(2).Rows(3).Item(13) = 5 s(2).Rows(3).Item(14) = 3 s(2).Rows(3).Item(15) = 12 End Sub Khởi tạo hàm s3 Sub khoitao_s3() Dim i As Integer s(3) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumn s(3).Columns.Add(col) Next For i = 0 To 3 Dim row As DataRow = s(3).NewRow s(3).Rows.Add(row) Next s(3).Rows(0).Item(0) = 7 s(3).Rows(0).Item(1) = 13 s(3).Rows(0).Item(2) = 14 s(3).Rows(0).Item(3) = 3 s(3).Rows(0).Item(4) = 0 s(3).Rows(0).Item(5) = 6 s(3).Rows(0).Item(6) = 9 s(3).Rows(0).Item(7) = 10 s(3).Rows(0).Item(8) = 1 s(3).Rows(0).Item(9) = 2 s(3).Rows(0).Item(10) = 8 s(3).Rows(0).Item(11) = 5 s(3).Rows(0).Item(12) = 11 s(3).Rows(0).Item(13) = 12 s(3).Rows(0).Item(14) = 4 s(3).Rows(0).Item(15) = 15 s(3).Rows(1).Item(0) = 13 s(3).Rows(1).Item(1) = 8 s(3).Rows(1).Item(2) = 11 s(3).Rows(1).Item(3) = 5 s(3).Rows(1).Item(4) = 6 s(3).Rows(1).Item(5) = 15 s(3).Rows(1).Item(6) = 0 s(3).Rows(1).Item(7) = 3 s(3).Rows(1).Item(8) = 4 s(3).Rows(1).Item(9) = 7 s(3).Rows(1).Item(10) = 2 s(3).Rows(1).Item(11) = 12 s(3).Rows(1).Item(12) = 1 s(3).Rows(1).Item(13) = 10 s(3).Rows(1).Item(14) = 14 s(3).Rows(1).Item(15) = 9 s(3).Rows(2).Item(0) = 10 s(3).Rows(2).Item(1) = 6 s(3).Rows(2).Item(2) = 9 s(3).Rows(2).Item(3) = 0 s(3).Rows(2).Item(4) = 12 s(3).Rows(2).Item(5) = 11 s(3).Rows(2).Item(6) = 7 s(3).Rows(2).Item(7) = 13 s(3).Rows(2).Item(8) = 15 s(3).Rows(2).Item(9) = 1 s(3).Rows(2).Item(10) = 3 s(3).Rows(2).Item(11) = 14 s(3).Rows(2).Item(12) = 5 s(3).Rows(2).Item(13) = 2 s(3).Rows(2).Item(14) = 8 s(3).Rows(2).Item(15) = 4 s(3).Rows(3).Item(0) = 3 s(3).Rows(3).Item(1) = 15 s(3).Rows(3).Item(2) = 0 s(3).Rows(3).Item(3) = 6 s(3).Rows(3).Item(4) = 10 s(3).Rows(3).Item(5) = 1 s(3).Rows(3).Item(6) = 13 s(3).Rows(3).Item(7) = 8 s(3).Rows(3).Item(8) = 9 s(3).Rows(3).Item(9) = 4 s(3).Rows(3).Item(10) = 5 s(3).Rows(3).Item(11) = 11 s(3).Rows(3).Item(12) = 12 s(3).Rows(3).Item(13) = 7 s(3).Rows(3).Item(14) = 2 s(3).Rows(3).Item(15) = 14 End Sub Khởi tạo hàm s4 Sub khoitao_s4() Dim i As Integer s(4) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumn s(4).Columns.Add(col) Next For i = 0 To 3 Dim row As DataRow = s(4).NewRow s(4).Rows.Add(row) Next s(4).Rows(0).Item(0) = 2 s(4).Rows(0).Item(1) = 12 s(4).Rows(0).Item(2) = 4 s(4).Rows(0).Item(3) = 1 s(4).Rows(0).Item(4) = 7 s(4).Rows(0).Item(5) = 10 s(4).Rows(0).Item(6) = 11 s(4).Rows(0).Item(7) = 6 s(4).Rows(0).Item(8) = 8 s(4).Rows(0).Item(9) = 5 s(4).Rows(0).Item(10) = 3 s(4).Rows(0).Item(11) = 15 s(4).Rows(0).Item(12) = 13 s(4).Rows(0).Item(13) = 0 s(4).Rows(0).Item(14) = 14 s(4).Rows(0).Item(15) = 9 s(4).Rows(1).Item(0) = 14 s(4).Rows(1).Item(1) = 11 s(4).Rows(1).Item(2) = 2 s(4).Rows(1).Item(3) = 12 s(4).Rows(1).Item(4) = 4 s(4).Rows(1).Item(5) = 7 s(4).Rows(1).Item(6) = 13 s(4).Rows(1).Item(7) = 1 s(4).Rows(1).Item(8) = 5 s(4).Rows(1).Item(9) = 0 s(4).Rows(1).Item(10) = 15 s(4).Rows(1).Item(11) = 10 s(4).Rows(1).Item(12) = 3 s(4).Rows(1).Item(13) = 9 s(4).Rows(1).Item(14) = 8 s(4).Rows(1).Item(15) = 6 s(4).Rows(2).Item(0) = 4 s(4).Rows(2).Item(1) = 2 s(4).Rows(2).Item(2) = 1 s(4).Rows(2).Item(3) = 11 s(4).Rows(2).Item(4) = 10 s(4).Rows(2).Item(5) = 13 s(4).Rows(2).Item(6) = 7 s(4).Rows(2).Item(7) = 8 s(4).Rows(2).Item(8) = 15 s(4).Rows(2).Item(9) = 9 s(4).Rows(2).Item(10) = 12 s(4).Rows(2).Item(11) = 5 s(4).Rows(2).Item(12) = 6 s(4).Rows(2).Item(13) = 3 s(4).Rows(2).Item(14) = 0 s(4).Rows(2).Item(15) = 14 s(4).Rows(3).Item(0) = 11 s(4).Rows(3).Item(1) = 8 s(4).Rows(3).Item(2) = 12 s(4).Rows(3).Item(3) = 7 s(4).Rows(3).Item(4) = 0 s(4).Rows(3).Item(5) = 14 s(4).Rows(3).Item(6) = 2 s(4).Rows(3).Item(7) = 13 s(4).Rows(3).Item(8) = 6 s(4).Rows(3).Item(9) = 15 s(4).Rows(3).Item(10) = 0 s(4).Rows(3).Item(11) = 9 s(4).Rows(3).Item(12) = 10 s(4).Rows(3).Item(13) = 4 s(4).Rows(3).Item(14) = 5 s(4).Rows(3).Item(15) = 3 End Sub Khởi tạo hàm s5 Sub khoitao_s5() Dim i As Integer s(5) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumn s(5).Columns.Add(col) Next For i = 0 To 3 Dim row As DataRow = s(5).NewRow s(5).Rows.Add(row) Next s(5).Rows(0).Item(0) = 12 s(5).Rows(0).Item(1) = 1 s(5).Rows(0).Item(2) = 10 s(5).Rows(0).Item(3) = 15 s(5).Rows(0).Item(4) = 9 s(5).Rows(0).Item(5) = 2 s(5).Rows(0).Item(6) = 6 s(5).Rows(0).Item(7) = 8 s(5).Rows(0).Item(8) = 0 s(5).Rows(0).Item(9) = 13 s(5).Rows(0).Item(10) = 3 s(5).Rows(0).Item(11) = 4 s(5).Rows(0).Item(12) = 14 s(5).Rows(0).Item(13) = 7 s(5).Rows(0).Item(14) = 5 s(5).Rows(0).Item(15) = 11 s(5).Rows(1).Item(0) = 10 s(5).Rows(1).Item(1) = 15 s(5).Rows(1).Item(2) = 4 s(5).Rows(1).Item(3) = 2 s(5).Rows(1).Item(4) = 7 s(5).Rows(1).Item(5) = 12 s(5).Rows(1).Item(6) = 9 s(5).Rows(1).Item(7) = 5 s(5).Rows(1).Item(8) = 6 s(5).Rows(1).Item(9) = 1 s(5).Rows(1).Item(10) = 13 s(5).Rows(1).Item(11) = 14 s(5).Rows(1).Item(12) = 0 s(5).Rows(1).Item(13) = 11 s(5).Rows(1).Item(14) = 3 s(5).Rows(1).Item(15) = 8 s(5).Rows(2).Item(0) = 9 s(5).Rows(2).Item(1) = 14 s(5).Rows(2).Item(2) = 15 s(5).Rows(2).Item(3) = 5 s(5).Rows(2).Item(4) = 2 s(5).Rows(2).Item(5) = 8 s(5).Rows(2).Item(6) = 12 s(5).Rows(2).Item(7) = 3 s(5).Rows(2).Item(8) = 7 s(5).Rows(2).Item(9) = 0 s(5).Rows(2).Item(10) = 4 s(5).Rows(2).Item(11) = 10 s(5).Rows(2).Item(12) = 1 s(5).Rows(2).Item(13) = 13 s(5).Rows(2).Item(14) = 11 s(5).Rows(2).Item(15) = 6 s(5).Rows(3).Item(0) = 4 s(5).Rows(3).Item(1) = 3 s(5).Rows(3).Item(2) = 2 s(5).Rows(3).Item(3) = 12 s(5).Rows(3).Item(4) = 9 s(5).Rows(3).Item(5) = 5 s(5).Rows(3).Item(6) = 15 s(5).Rows(3).Item(7) = 10 s(5).Rows(3).Item(8) = 11 s(5).Rows(3).Item(9) = 14 s(5).Rows(3).Item(10) = 1 s(5).Rows(3).Item(11) = 7 s(5).Rows(3).Item(12) = 6 s(5).Rows(3).Item(13) = 0 s(5).Rows(3).Item(14) = 8 s(5).Rows(3).Item(15) = 13 End Sub Khởi tạo hàm s6 Sub khoitao_s6() Dim i As Integer s(6) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumn s(6).Columns.Add(col) Next For i = 0 To 3 Dim row As DataRow = s(6).NewRow s(6).Rows.Add(row) Next s(6).Rows(0).Item(0) = 4 s(6).Rows(0).Item(1) = 11 s(6).Rows(0).Item(2) = 2 s(6).Rows(0).Item(3) = 14 s(6).Rows(0).Item(4) = 15 s(6).Rows(0).Item(5) = 0 s(6).Rows(0).Item(6) = 8 s(6).Rows(0).Item(7) = 13 s(6).Rows(0).Item(8) = 3 s(6).Rows(0).Item(9) = 12 s(6).Rows(0).Item(10) = 9 s(6).Rows(0).Item(11) = 7 s(6).Rows(0).Item(12) = 5 s(6).Rows(0).Item(13) = 10 s(6).Rows(0).Item(14) = 6 s(6).Rows(0).Item(15) = 1 s(6).Rows(1).Item(0) = 13 s(6).Rows(1).Item(1) = 0 s(6).Rows(1).Item(2) = 11 s(6).Rows(1).Item(3) = 7 s(6).Rows(1).Item(4) = 4 s(6).Rows(1).Item(5) = 9 s(6).Rows(1).Item(6) = 1 s(6).Rows(1).Item(7) = 10 s(6).Rows(1).Item(8) = 14 s(6).Rows(1).Item(9) = 3 s(6).Rows(1).Item(10) = 5 s(6).Rows(1).Item(11) = 12 s(6).Rows(1).Item(12) = 2 s(6).Rows(1).Item(13) = 15 s(6).Rows(1).Item(14) = 8 s(6).Rows(1).Item(15) = 6 s(6).Rows(2).Item(0) = 1 s(6).Rows(2).Item(1) = 4 s(6).Rows(2).Item(2) = 11 s(6).Rows(2).Item(3) = 13 s(6).Rows(2).Item(4) = 12 s(6).Rows(2).Item(5) = 3 s(6).Rows(2).Item(6) = 7 s(6).Rows(2).Item(7) = 14 s(6).Rows(2).Item(8) = 10 s(6).Rows(2).Item(9) = 15 s(6).Rows(2).Item(10) = 6 s(6).Rows(2).Item(11) = 8 s(6).Rows(2).Item(12) = 0 s(6).Rows(2).Item(13) = 5 s(6).Rows(2).Item(14) = 9 s(6).Rows(2).Item(15) = 2 s(6).Rows(3).Item(0) = 6 s(6).Rows(3).Item(1) = 11 s(6).Rows(3).Item(2) = 13 s(6).Rows(3).Item(3) = 8 s(6).Rows(3).Item(4) = 1 s(6).Rows(3).Item(5) = 4 s(6).Rows(3).Item(6) = 10 s(6).Rows(3).Item(7) = 7 s(6).Rows(3).Item(8) = 9 s(6).Rows(3).Item(9) = 5 s(6).Rows(3).Item(10) = 0 s(6).Rows(3).Item(11) = 15 s(6).Rows(3).Item(12) = 14 s(6).Rows(3).Item(13) = 2 s(6).Rows(3).Item(14) = 3 s(6).Rows(3).Item(15) = 12 End Sub Khởi tạo hàm s7 Sub khoitao_s7() Dim i As Integer s(7) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumn s(7).Columns.Add(col) Next For i = 0 To 3 Dim row As DataRow = s(7).NewRow s(7).Rows.Add(row) Next s(7).Rows(0).Item(0) = 13 s(7).Rows(0).Item(1) = 2 s(7).Rows(0).Item(2) = 8 s(7).Rows(0).Item(3) = 4 s(7).Rows(0).Item(4) = 6 s(7).Rows(0).Item(5) = 15 s(7).Rows(0).Item(6) = 11 s(7).Rows(0).Item(7) = 1 s(7).Rows(0).Item(8) = 10 s(7).Rows(0).Item(9) = 9 s(7).Rows(0).Item(10) = 3 s(7).Rows(0).Item(11) = 14 s(7).Rows(0).Item(12) = 5 s(7).Rows(0).Item(13) = 0 s(7).Rows(0).Item(14) = 12 s(7).Rows(0).Item(15) = 7 s(7).Rows(1).Item(0) = 1 s(7).Rows(1).Item(1) = 15 s(7).Rows(1).Item(2) = 13 s(7).Rows(1).Item(3) = 8 s(7).Rows(1).Item(4) = 10 s(7).Rows(1).Item(5) = 3 s(7).Rows(1).Item(6) = 7 s(7).Rows(1).Item(7) = 4 s(7).Rows(1).Item(8) = 12 s(7).Rows(1).Item(9) = 5 s(7).Rows(1).Item(10) = 6 s(7).Rows(1).Item(11) = 11 s(7).Rows(1).Item(12) = 0 s(7).Rows(1).Item(13) = 14 s(7).Rows(1).Item(14) = 9 s(7).Rows(1).Item(15) = 2 s(7).Rows(2).Item(0) = 7 s(7).Rows(2).Item(1) = 11 s(7).Rows(2).Item(2) = 4 s(7).Rows(2).Item(3) = 1 s(7).Rows(2).Item(4) = 9 s(7).Rows(2).Item(5) = 12 s(7).Rows(2).Item(6) = 14 s(7).Rows(2).Item(7) = 2 s(7).Rows(2).Item(8) = 0 s(7).Rows(2).Item(9) = 6 s(7).Rows(2).Item(10) = 10 s(7).Rows(2).Item(11) = 13 s(7).Rows(2).Item(12) = 15 s(7).Rows(2).Item(13) = 3 s(7).Rows(2).Item(14) = 5 s(7).Rows(2).Item(15) = 8 s(7).Rows(3).Item(0) = 2 s(7).Rows(3).Item(1) = 1 s(7).Rows(3).Item(2) = 14 s(7).Rows(3).Item(3) = 7 s(7).Rows(3).Item(4) = 4 s(7).Rows(3).Item(5) = 10 s(7).Rows(3).Item(6) = 8 s(7).Rows(3).Item(7) = 13 s(7).Rows(3).Item(8) = 15 s(7).Rows(3).Item(9) = 12 s(7).Rows(3).Item(10) = 9 s(7).Rows(3).Item(11) = 0 s(7).Rows(3).Item(12) = 3 s(7).Rows(3).Item(13) = 5 s(7).Rows(3).Item(14) = 6 s(7).Rows(3).Item(15) = 11 End Sub Khởi tạo hoán vị e Sub khoitao_hve() hve(0) = 32 hve(1) = 1 hve(2) = 2 hve(3) = 3 hve(4) = 4 hve(5) = 5 hve(6) = 4 hve(7) = 5 hve(8) = 6 hve(9) = 7 hve(10) = 8 hve(11) = 9 hve(12) = 8 hve(13) = 9 hve(14) = 10 hve(15) = 11 hve(16) = 12 hve(17) = 13 hve(18) = 12 hve(19) = 13 hve(20) = 14 hve(21) = 15 hve(22) = 16 hve(23) = 17 hve(24) = 16 hve(25) = 17 hve(26) = 18 hve(27) = 19 hve(28) = 20 hve(29) = 21 hve(30) = 20 hve(31) = 21 hve(32) = 22 hve(33) = 23 hve(34) = 24 hve(35) = 25 hve(36) = 24 hve(37) = 25 hve(38) = 26 hve(39) = 27 hve(40) = 28 hve(41) = 29 hve(42) = 28 hve(43) = 29 hve(44) = 30 hve(45) = 31 hve(46) = 32 hve(47) = 1 End Sub Khởi tạo hoán vị p Sub khoitao_hvp() hvp(0) = 16 hvp(1) = 7 hvp(2) = 20 hvp(3) = 21 hvp(4) = 29 hvp(5) = 12 hvp(6) = 28 hvp(7) = 17 hvp(8) = 1 hvp(9) = 15 hvp(10) = 23 hvp(11) = 26 hvp(12) = 5 hvp(13) = 18 hvp(14) = 31 hvp(15) = 10 hvp(16) = 2 hvp(17) = 8 hvp(18) = 24 hvp(19) = 14 hvp(20) = 32 hvp(21) = 27 hvp(22) = 3 hvp(23) = 9 hvp(24) = 19 hvp(25) = 13 hvp(26) = 30 hvp(27) = 6 hvp(28) = 22 hvp(29) = 11 hvp(30) = 4 hvp(31) = 25 End Sub Khởi tạo hoán vị pc2 Sub khoitao_hvpc2() hvpc2(0) = 14 hvpc2(1) = 17 hvpc2(2) = 11 hvpc2(3) = 24 hvpc2(4) = 1 hvpc2(5) = 5 hvpc2(6) = 3 hvpc2(7) = 28 hvpc2(8) = 15 hvpc2(9) = 6 hvpc2(10) = 21 hvpc2(11) = 10 hvpc2(12) = 23 hvpc2(13) = 19 hvpc2(14) = 12 hvpc2(15) = 4 hvpc2(16) = 26 hvpc2(17) = 8 hvpc2(18) = 16 hvpc2(19) = 7 hvpc2(20) = 27 hvpc2(21) = 20 hvpc2(22) = 13 hvpc2(23) = 2 hvpc2(24) = 41 hvpc2(25) = 52 hvpc2(26) = 31 hvpc2(27) = 37 hvpc2(28) = 47 hvpc2(29) = 55 hvpc2(30) = 30 hvpc2(31) = 40 hvpc2(32) = 51 hvpc2(33) = 45 hvpc2(34) = 33 hvpc2(35) = 48 hvpc2(36) = 44 hvpc2(37) = 49 hvpc2(38) = 39 hvpc2(39) = 56 hvpc2(40) = 34 hvpc2(41) = 53 hvpc2(42) = 46 hvpc2(43) = 42 hvpc2(44) = 50 hvpc2(45) = 36 hvpc2(46) = 29 hvpc2(47) = 32 End Sub Khởi tạo hoá vị pc1 Sub khoitao_hvpc1() hvpc1(0) = 57 hvpc1(1) = 49 hvpc1(2) = 41 hvpc1(3) = 33 hvpc1(4) = 25 hvpc1(5) = 17 hvpc1(6) = 9 hvpc1(7) = 1 hvpc1(8) = 58 hvpc1(9) = 50 hvpc1(10) = 42 hvpc1(11) = 34 hvpc1(12) = 26 hvpc1(13) = 18 hvpc1(14) = 10 hvpc1(15) = 2 hvpc1(16) = 59 hvpc1(17) = 51 hvpc1(18) = 43 hvpc1(19) = 35 hvpc1(20) = 27 hvpc1(21) = 19 hvpc1(22) = 11 hvpc1(23) = 3 hvpc1(24) = 60 hvpc1(25) = 52 hvpc1(26) = 44 hvpc1(27) = 36 hvpc1(28) = 63 hvpc1(29) = 55 hvpc1(30) = 47 hvpc1(31) = 39 hvpc1(32) = 31 hvpc1(33) = 23 hvpc1(34) = 15 hvpc1(35) = 7 hvpc1(36) = 62 hvpc1(37) = 54 hvpc1(38) = 46 hvpc1(39) = 38 hvpc1(40) = 30 hvpc1(41) = 22 hvpc1(42) = 14 hvpc1(43) = 6 hvpc1(44) = 61 hvpc1(45) = 53 hvpc1(46) = 45 hvpc1(47) = 37 hvpc1(48) = 29 hvpc1(49) = 21 hvpc1(50) = 13 hvpc1(51) = 5 hvpc1(52) = 28 hvpc1(53) = 20 hvpc1(54) = 12 hvpc1(55) = 4 End Sub Khởi tạo hoá vị ip Sub khoitao_hvip() hvip(0) = 58 hvip(1) = 50 hvip(2) = 42 hvip(3) = 34 hvip(4) = 26 hvip(5) = 18 hvip(6) = 10 hvip(7) = 2 hvip(8) = 60 hvip(9) = 52 hvip(10) = 44 hvip(11) = 36 hvip(12) = 28 hvip(13) = 20 hvip(14) = 12 hvip(15) = 4 hvip(16) = 62 hvip(17) = 54 hvip(18) = 46 hvip(19) = 38 hvip(20) = 30 hvip(21) = 22 hvip(22) = 14 hvip(23) = 6 hvip(24) = 64 hvip(25) = 56 hvip(26) = 48 hvip(27) = 40 hvip(28) = 32 hvip(29) = 24 hvip(30) = 16 hvip(31) = 8 hvip(32) = 57 hvip(33) = 49 hvip(34) = 41 hvip(35) = 33 hvip(36) = 25 hvip(37) = 17 hvip(38) = 9 hvip(39) = 1 hvip(40) = 59 hvip(41) = 51 hvip(42) = 43 hvip(43) = 35 hvip(44) = 27 hvip(45) = 19 hvip(46) = 11 hvip(47) = 3 hvip(48) = 61 hvip(49) = 53 hvip(50) = 45 hvip(51) = 37 hvip(52) = 29 hvip(53) = 21 hvip(54) = 13 hvip(55) = 5 hvip(56) = 63 hvip(57) = 55 hvip(58) = 47 hvip(59) = 39 hvip(60) = 31 hvip(61) = 23 hvip(62) = 15 hvip(63) = 7 End Sub Khởi tạo các hàm Sub khoitao() khoitao_s0() khoitao_s1() khoitao_s2() khoitao_s3() khoitao_s4() khoitao_s5() khoitao_s6() khoitao_s7() khoitao_hve() khoitao_hvp() khoitao_hvpc2() khoitao_hvpc1() khoitao_hvip() End Sub các hàm hoán vị Hàm hoán vị ip Function hoanvi_ip(ByVal x As String) As String Dim tam(63) As Char Dim i As Integer For i = 0 To 63 tam(i) = x.Substring(hvip(i) - 1, 1) Next Return tam End Function Hàm hoán vị iptru Function hoanvi_iptru(ByVal c As String) As String Dim tam(63) As Char Dim i As Integer For i = 0 To 63 tam(hvip(i) - 1) = c.Substring(i, 1) Next Return tam End Function Hàm hoán vị e Function hoanvi_e(ByVal r As String) As String Dim tam(47) As Char Dim i As Integer For i = 0 To 47 tam(i) = r.Substring(hve(i) - 1, 1) Next Return tam End Function Hàm hoán vị p Function hoanvi_p(ByVal c As String) As String Dim tam(31) As Char Dim i As Integer For i = 0 To 31 tam(i) = c.Substring(hvp(i) - 1, 1) Next Return tam End Function Hàm hoán vị ptru Function hoanvi_ptru(ByVal c As String) As String Dim tam(31) As Char Dim i As Integer For i = 0 To 31 tam(hvp(i) - 1) = c.Substring(i, 1) Next Return tam End Function Hàm hoán vị pc1 Function hoanvi_pc1(ByVal k As String) As String Dim tam(63) As Char Dim i As Integer For i = 0 To 63 tam(i) = k.Substring(i, 1) Next tam = catbitcuoi(tam) For i = 0 To 55 tam(i) = k.Substring(Integer.Parse(hvpc1(i) - 1), 1) Next Return tam End Function Hàm hoán vị pc1tru Function hoanvi_pc1tru(ByVal c As String) As String Dim tam(63) As Char Dim i As Integer For i = 0 To 63 tam(i) = "#" Next For i = 0 To 55 tam(hvpc1(i) - 1) = c.Substring(i, 1) Next Dim tam1 As String Return tam End Function Hàm hoán vị pc2 Function hoanvi_pc2(ByVal str As String) As String Dim tam(47) As Char Dim i As Integer For i = 0 To 47 tam(i) = str.Substring(Integer.Parse(hvpc2(i) - 1), 1) Next Return tam End Function Hàm hoán vị pc2tru Function hoanvi_pc2tru(ByVal c As String) As String Dim tam(55) As Char Dim i As Integer For i = 0 To 55 tam(i) = "?" Next For i = 0 To 47 tam(hvpc2(i) - 1) = c.Substring(i, 1) Next Return tam End Function gan va kiem tra du lieu nhap hàm gán dữ liệu Function gandulieu() As Boolean Try Dim i As Integer = 0 Dim j As Integer Dim strbanro As String = txtbanro.Text.Replace(Chr(10), "") Dim strbanma As String = txtbanma.Text.Replace(Chr(10), "") banro = strbanro.Split(Chr(13)) banma = strbanma.Split(Chr(13)) n = banro.Length - 1 ReDim e((n - 1) / 2) ReDim esao((n - 1) / 2) ReDim ephay((n - 1) / 2) ReDim cphay((n - 1) / 2) If (banro.Length - 1 < n Or banma.Length - 1 < n) Then MessageBox.Show("thiếu bản rõ hay bản mã") Return False Else Return True End If Catch ex As Exception MessageBox.Show("Dữ liệu nhập khơng hợp lệ") Return False End Try End Function Hàm kiểm tra Function kiemtra() As Boolean Dim i As Integer For i = 0 To n If banro(i) = "" Then MessageBox.Show("bạn nhập chưa đủ " & (i + 1)) Return False End If If banro(i).Length m Then MessageBox.Show( (i + 1) & m ) Return False End If Next For i = 0 To n If banma(i) = "" Then MessageBox.Show("Bạn hãy nhập vào bản mã thứ " & (i + 1)) Return False End If If banma(i).Length m Then MessageBox.Show("Bản mã " & (i + 1) & " phải cĩ " & m & " kí tự") Return False End If Next i = 0 While i <= n If banro(i).Substring(m / 2, m / 2) banro(i + 1).Substring(m / 2, m / 2) Then MessageBox.Show("Dữ liệu bản rõ " & (i + 1) & " , " & (i + 2) & " nhập khơng hợp lệ") Return False End If i = i + 2 End While Return True End Function xu li e_esao_ephay_cphay xử lý e, e sao, e phẩy Sub xuli_e_esao_ephay() Dim i As Integer 'e(0)= "000000000111111000001110100000000110100000001100" 'e(1)= "101000001011111111110100000101010000001011110110" 'e(2)= "111011110001010100000110100011110110100101011111" 'esao(0)="101111110000001010101100000001010100000001010010" 'esao(1)="100010100110101001011110101111110010100010101010" 'esao(2) = "000001011110100110100010101111110101011000000100" For i = 0 To (n - 1) / 2 Dim l3 = banma(i * 2).Substring(0, 32) Dim l3sao = banma(i * 2 + 1).Substring(0, 32) e(i) = hoanvi_e(l3) esao(i) = hoanvi_e(l3sao) ephay(i) = phay(e(i), esao(i)) Next End Sub Function phay(ByVal a As String, ByVal b As String) As String Dim i As Integer Dim c As String For i = 0 To a.Length - 1 c += (a.Substring(i, 1) Xor b.Substring(i, 1)).ToString Next Return c End Function Xử lý c phẩy Sub xuli_cphay() Dim i, j As Integer For i = 0 To (n - 1) / 2 Dim r3 As String = banma(i * 2).Substring(32, 32) Dim r3sao As String = banma(i * 2 + 1).Substring(32, 32) Dim l0 As String = banro(i * 2).Substring(0, 32) Dim l0sao As String = banro(i * 2 + 1).Substring(0, 32) Dim r3phay As String = "" Dim l0phay As String = "" For j = 0 To 31 r3phay += (r3.Substring(j, 1) Xor r3sao.Substring(j, 1)).ToString l0phay += (l0.Substring(j, 1) Xor l0sao.Substring(j, 1)).ToString cphay(i) += (r3phay.Substring(j, 1) Xor l0phay.Substring(j, 1)).ToString Next cphay(i) = hoanvi_ptru(cphay(i)) Next 'cphay(0) = "10010110010111010101101101100111" 'cphay(1) = "10011100100111000001111101010110" 'cphay(2) = "11010101011101011101101100101011" End Sub cac ham chuyen doi Function bi_str(ByVal a As String) As String Dim i As Integer Dim b As String For i = 0 To a.Length - 1 b += binary(asc(a.Substring(i, 1)), hebit) Next Return b End Function Sub bi_banro_banma() Dim i As Integer For i = 0 To n banro(i) = bi_str(banro(i)) banma(i) = bi_str(banma(i)) Next End Sub Function bi_so(ByVal a As Integer) As String Dim i As Integer Dim tam(5) As Char For i = 0 To 5 tam(i) = (a Mod 2).ToString a \= 2 Next Array.Reverse(tam) Return tam End Function Function thapphan(ByVal b As String) As Integer Dim i As Integer Dim tam As Integer = 0 For i = 0 To b.Length - 1 If b.Substring(i, 1) = 1 Then tam += 2 ^ (b.Length - 1 - i) End If Next Return tam End Function Function binary(ByVal a As Integer, ByVal n As Integer) As String Dim i As Integer Dim tam(n - 1) As Char For i = 0 To n - 1 tam(i) = (a Mod 2).ToString a = a \ 2 Next Array.Reverse(tam) Return tam End Function Hàm tạo tập test Function tap_test() As String() Dim i, j, k As Integer Dim ee(7) As String Dim eephay(7) As String Dim ccphay(7) As String Dim test(63) As String For i = 0 To (n - 1) / 2 For j = 0 To 7 ee(j) = e(i).Substring(j * 6, 6) eephay(j) = ephay(i).Substring(j * 6, 6) ccphay(j) = cphay(i).Substring(j * 4, 4) test = tap_in(ee(j), eephay(j), ccphay(j), s(j)) For k = 0 To 63 If test(k) = 1 Then jhop(j, k) += 1 End If Next Next Next End Function Hàm tạo khoá vòng 3 Function khoavong3() As String Dim khoav3 As String Dim i, j As Integer Dim count As Integer = 0 Dim vitrimax As Integer For i = 0 To 7 count = 0 Dim max As Integer = (n + 1) / 2 For j = 0 To 63 If jhop(i, j) = max Then count += 1 vitrimax = j End If Next If count > 1 Then lbthongbao.Text = "Nhập thêm bản mã và bản rõ, vì chưa xác định được phần tử max trong jhộp" btthamma.Enabled = False txtbanro.Focus() n += 2 ReDim banro(n) ReDim banma(n) ReDim e((n - 2) / 2) ReDim esao((n - 2) / 2) ReDim ephay((n - 2) / 2) ReDim cphay((n - 2) / 2) flag = False Exit Function End If khoav3 += binary(vitrimax, 6) Next txtkhoav3.Text = khoav3 Return khoav3 End Function Hàm Xử lý khoá Function xulikhoa() As String Dim khoa As String = khoavong3() If flag = False Then Exit Function End If khoa = hoanvi_pc2tru(khoa) Dim haitambitdau As String = khoa.Substring(0, 28) Dim haitambitcuoi As String = khoa.Substring(28, 28) haitambitdau = dichphai(haitambitdau, 4) haitambitcuoi = dichphai(haitambitcuoi, 4) khoa = haitambitdau + haitambitcuoi Dim i As Integer khoa = hoanvi_pc1tru(khoa) txtkhoa.Text = khoa Return khoa 'khoa 56 bit End Function Hàm tạo chuỗi khoá Sub taochuoikhoa(ByVal c As String) If flag = False Then Exit Sub End If Dim chuoibinary(255) As String Dim i As Integer For i = 0 To 255 chuoibinary(i) = binary(i, 8) chuoikhoa(i) = taotungkhoa(c, chuoibinary(i)) Next End Sub Hàm tạo từng khoá Function taotungkhoa(ByVal a As String, ByVal b As String) As String Dim i As Integer Dim j As Integer = 0 Dim tam(63) As Char For i = 0 To 63 tam(i) = a.Substring(i, 1) If tam(i) = "?" Then tam(i) = b.Substring(j, 1) j += 1 End If Next Return tam End Function Hàm dịch phải Function dichphai(ByVal s As String, ByVal n As Integer) As String Return s.Substring(s.Length - n, n) + s.Substring(0, s.Length - n) End Function Function tap_in(ByVal e As String, ByVal ephay As String, ByVal cphay As String, ByVal s As DataTable) As String() Dim tam(63), b, bsao, c, csao, cphaytam As String Dim i As Integer For i = 0 To 63 b = bi_so(i) Dim haibitcuoi As String = b.Substring(0, 1) + b.Substring(5, 1) Dim bonbitgiua As String = b.Substring(1, 4) Dim srow = thapphan(haibitcuoi) Dim scol = thapphan(bonbitgiua) Dim sij As Integer = s.Rows(srow).Item(scol) c = binary(sij, 4) bsao = phay(ephay, b) haibitcuoi = bsao.Substring(0, 1) + bsao.Substring(5, 1) bonbitgiua = bsao.Substring(1, 4) srow = thapphan(haibitcuoi) scol = thapphan(bonbitgiua) sij = s.Rows(srow).Item(scol) csao = binary(sij, 4) cphaytam = phay(c, csao) If cphaytam = cphay Then tam(thapphan(phay(e, b))) = 1 End If Next Return tam End Function Một số Hàm cho xử lý sự kiện Private Sub btthamma_Click(ByVal sender As System.Object, ByVal ee As System.EventArgs) Handles btthamma.Click ReDim banro(n) ReDim banma(n) ReDim e((n - 1) / 2) ReDim esao((n - 1) / 2) ReDim ephay((n - 1) / 2) ReDim cphay((n - 1) / 2) flag = True If gandulieu() = False Then Exit Sub End If If kiemtra() = False Then Exit Sub End If bi_banro_banma() xuli_e_esao_ephay() xuli_cphay() tap_test() taochuoikhoa(xulikhoa()) If flag = False Then Exit Sub End If chonkhoadung() End Sub Private Sub btthoat_Click(ByVal sender As System.Object, ByVal ee As System.EventArgs) Handles btthoat.Click Me.Close() End Sub Private Sub thammades_Load(ByVal sender As System.Object, ByVal ee As System.EventArgs) Handles MyBase.Load Dim strbanro As String strbanro += "748502CD38451097" + Chr(13) + Chr(10) strbanro += "3874756438451097" + Chr(13) + Chr(10) strbanro += "486911026ACDFF31" + Chr(13) + Chr(10) strbanro += "375BD31F6ACDFF31" + Chr(13) + Chr(10) strbanro += "357418DA013FEC86" + Chr(13) + Chr(10) strbanro += "12549847013FEC86" txtbanro.Text = strbanro Dim strbanma As String strbanma += "03C70306D8A09F10" + Chr(13) + Chr(10) strbanma += "78560A0960E6D4CB" + Chr(13) + Chr(10) strbanma += "45FA285BE5ADC730" + Chr(13) + Chr(10) strbanma += "134F7915AC253457" + Chr(13) + Chr(10) strbanma += "D8A31B2F28BBC5CF" + Chr(13) + Chr(10) strbanma += "0F317AC2B23CB944" txtbanma.Text = strbanma khoitao() End Sub 'des Hàm cắt bit cuối Function catbitcuoi(ByVal k As String) As String 'dua vao 64 bit tra ra 56 bit Dim i As Integer = 0 Dim j As Integer Dim tam As String While i < 63 For j = i To i + 6 tam += k.Substring(j, 1) Next i = i + 8 End While Return tam End Function Function ls(ByVal s As String, ByVal n As Integer) As String Return s.Substring(n, s.Length - n) + s.Substring(0, n) End Function Hàm tạo dãy khoá Sub taodaykhoa(ByVal khoa As String) khoa = hoanvi_pc1(khoa) Dim d(2) As String Dim c(2) As String c(0) = khoa.Substring(0, 28) c(0) = ls(c(0), 1) d(0) = khoa.Substring(28, 28) d(0) = ls(d(0), 1) daykhoa(0) = hoanvi_pc2(c(0) + d(0)) Dim i As Integer For i = 1 To 2 If i = 1 Then c(i) = ls(c(i - 1), 1) d(i) = ls(d(i - 1), 1) Else c(i) = ls(c(i - 1), 2) d(i) = ls(d(i - 1), 2) End If daykhoa(i) = hoanvi_pc2(c(i) + d(i)) Next i End Sub Hàm xử lý chuỗi nhập Function bi_acsii(ByVal int As Integer) As String Dim tam(7) As Char Dim i As Integer For i = 0 To 7 tam(i) = (int Mod 2).ToString int \= 2 Next Array.Reverse(tam) Return tam End Function Hàm mã hoá Function mahoa(ByVal x As String) As String Dim i, j As Integer Dim l(2) As String Dim r(2) As String 'x = hoanvi_ip(x) Dim l0 As String = x.Substring(0, 32) Dim r0 As String = x.Substring(32, 32) l(0) = r0 For i = 0 To 31 r(0) += (l0.Substring(i, 1) Xor f(r0, daykhoa(0)).Substring(i, 1)).ToString Next For i = 1 To 2 l(i) = r(i - 1) Dim a As String = f(r(i - 1), daykhoa(i)) For j = 0 To 31 r(i) += (l(i - 1).Substring(j, 1) Xor a.Substring(j, 1)).ToString Next j Next i Dim t As String = l(2) + r(2) Return t 'Return hoanvi_iptru(r(2) + l(2)) End Function Hàm tạo hàm f Function f(ByVal r As String, ByVal daykhoa_k As String) As String Dim i As Integer Dim e As String Dim hv As String = hoanvi_e(r) For i = 0 To 47 e += (hv.Substring(i, 1) Xor daykhoa_k.Substring(i, 1)).ToString Next Dim b(7) As String Dim c As String For i = 0 To 7 b(i) = e.Substring(i * 6, 6) Dim haibitdaucuoi As String = b(i).Substring(0, 1) + b(i).Substring(5, 1) Dim bonbitgiua As String = b(i).Substring(1, 4) Dim srow = thapphan(haibitdaucuoi) Dim scol = thapphan(bonbitgiua) Dim sij As Integer = s(i).Rows(srow).Item(scol) c += binary(sij, 4) Next Return hoanvi_p(c) End Function Hàm đổi ra chữ 'Function doirachu(ByVal y As String) As String 'Dim tam As String = y 'Dim tam1 As String = "" 'Dim so As Integer 'Dim i As Integer 'Dim j As Integer 'While i < tam.Length - 1 'so = 0 'For j = i To i + 7 'If tam.Substring(j, 1) = 1 Then 'so += 2 ^ (7 - (j - i)) 'End If 'Next 'tam1 += Chr(so) 'i = i + 8 'End While 'Return tam1 'End Function Function doirachu(ByVal y As String) As String Dim tam As String = y Dim tam1 As String = "" Dim so As Integer Dim i, j As Integer While i < tam.Length - 1 so = 0 For j = i To i + 3 If tam.Substring(j, 1) = 1 Then so += 2 ^ (3 - (j - i)) End If Next tam1 += chucai(so) i = i + 4 End While Return tam1 End Function Chữ cái Function chucai(ByVal so As Integer) As Char Select Case so Case 0 Return "0" Case 1 Return "1" Case 2 Return "2" Case 3 Return "3" Case 4 Return "4" Case 5 Return "5" Case 6 Return "6" Case 7 Return "7" Case 8 Return "8" Case 9 Return "9" Case 10 Return "A" Case 11 Return "B" Case 12 Return "C" Case 13 Return "D" Case 14 Return "E" Case 15 Return "F" End Select End Function Hàm chuyển mã asc Function asc(ByVal a As Char) Select Case a Case "0" asc = 0 Case "1" asc = 1 Case "2" asc = 2 Case "3" asc = 3 Case "4" asc = 4 Case "5" asc = 5 Case "6" asc = 6 Case "7" asc = 7 Case "8" asc = 8 Case "9" asc = 9 Case "A" asc = 10 Case "B" asc = 11 Case "C" asc = 12 Case "D" asc = 13 Case "E" asc = 14 Case "F" asc = 15 End Select End Function Hàm chọn khoá Sub chonkhoadung() Dim i As Integer Dim x As String = banro(0) 'For i = 0 To banro(0).Length - 1 'x += binary(asc(banro(0).Substring(i, 1)), hebit) 'Next For i = 0 To 255 taodaykhoa(chuoikhoa(i)) Dim banma1 As String = doirachu(mahoa(x)) If banma1 = doirachu(banma(0)) Then chuoikhoa(i) = chuoikhoa(i).Replace("#", "0") txtkhoa.Text = doirachu(chuoikhoa(i)) Exit Sub End If Next MessageBox.Show("khong tim duoc khoa") End Sub Private Sub txtbanro_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtbanro.TextChanged btthamma.Enabled = True lbthongbao.Text = "" End Sub Private Sub txtbanma_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtbanma.TextChanged btthamma.Enabled = True lbthongbao.Text = "" End Sub End Class

Các file đính kèm theo tài liệu này:

  • docBaoCao.doc
  • docBaoCao1.doc
  • docbia.doc