bctntlvn (42).pdf
Upcoming SlideShare
Loading in...5
×
 

bctntlvn (42).pdf

on

  • 536 views

 

Statistics

Views

Total Views
536
Slideshare-icon Views on SlideShare
536
Embed Views
0

Actions

Likes
0
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    bctntlvn (42).pdf bctntlvn (42).pdf Document Transcript

    • ĐỒ ÁN TỐT NGHIỆP - BẢO MẬT THÔNG TIN
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES MUÏC LUÏC I .1 Giôùi thieäu ....................................................................................................... 3 I.2 Caùc Heä Maõ Thoâng Duïng:................................................................................. 3 e. Phöông phaùp Affine........................................................................................... 4 f. Phöông phaùp Vigenere....................................................................................... 5 I.2 LAÄP MAÕ DES................................................................................................. 14 I. 3 THAÙM MAÕ DES............................................................................................ 17 I.3.1. Thaùm maõ heä DES - 3 voøng ................................................................. 20 II.3.2. Thaùm maõ heä DES 6-voøng ..................................................................... 24 II.3. 3 Caùc thaùm maõ vi sai khaùc ...................................................................... 28 III. CAØI ÑAËT THAÙM MAÕ DES 3 VOØNG...................................................... 28 III.1 Giao Dieän .................................................................................................... 28 III.2 XÖÛ LYÙ ............................................................................................................NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES LÔØI NOÙI ÑAÀU Hieän nay, nöôùc ta ñang trong giai ñoaïn tieán haønh coâng nghieäp hoùa, hieän ñaïi hoùa ñaátnöôùc. Tin hoïc ñöôïc xem laø moät trong nhöõng ngaønh muõi nhoïn. Tin hoïc ñaõ vaø ñang ñoùng goùpraát nhieàu cho xaõ hoäi trong moïi khía caïnh cuûa cuoäc soáng. Maõ hoùa thoâng tin laø moät ngaønh quan troïng vaø coù nhieàu öùng duïng trong ñôøi soáng xaõ hoäi.Ngaøy nay, caùc öùng duïng maõ hoùa vaø baûo maät thoâng tin ñang ñöôïc söû duïng ngaøy caøng phoåbieán hôn trong caùc lónh vöïc khaùc nhau treân Theá giôùi, töø caùc lónh vöïc an ninh, quaân söï, quoácphoøng…, cho ñeán caùc lónh vöïc daân söï nhö thöông maïi ñieän töû, ngaân haøng… ÖÙng duïng maõ hoùa vaø baûo maät thoâng tin trong caùc heä thoáng thöông maïi ñieän töû, giao dòchchöùng khoaùn,… ñaõ trôû neân phoå bieán treân theá giôùi vaø seõ ngaøy caøng trôû neân quen thuoäc vôùingöôøi daân Vieät Nam. Thaùng 7/2000, thò tröôøng chöùng khoaùn laàn ñaàu tieân ñöôïc hình thaønh taïiVieät Nam; caùc theû tín duïng baét ñaàu ñöôïc söû duïng, caùc öùng duïng heä thoáng thöông maïi ñieäntöû ñang ôû böôùc ñaàu ñöôïc quan taâm vaø xaây döïng. Do ñoù, nhu caàu veà caùc öùng duïng maõ hoùa vaøbaûo maät thoâng tin trôû neân raát caàn thieát.NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DESI. MOÄT SOÁ PHÖÔNG PHAÙP MAÕ HOÙA I .1 Giôùi thieäu Ñònh nghóa 1.1: Moät heä maõ maät (cryptosystem) laø moät boä-naêm (P, C, K, E, D) thoûa maõn caùc ñieàu kieän sau: 1. P laø khoâng gian baûn roõ. taäp hôïp höõu haïn taát caû caùc maåu tin nguoàn caàn maõ hoùa coù theå coù 2. C laø khoâng gian baûn maõ. taäp hôïp höõu haïn taát caû caùc maåu tin coù theå coù sau khi maõ hoùa 3. K laø khoâng gian khoaù. taäp hôïp höõu haïn caùc khoùa coù theå ñöôïc söû duïng 4. Vôùi moãi khoùa k∈K, toàn taïi luaät maõ hoùa ek∈E vaø luaät giaûi maõ dk∈D töông öùng. Luaät maõ hoùa ek: P → C vaø luaät giaûi maõ ek: C → P laø hai aùnh xaï thoûa maõn d k ( ek ( x ) ) = x, ∀ x ∈ P Tính chaát 4. laø tính chaát chính vaø quan troïng cuûa moät heä thoáng maõ hoùa. Tính chaát naøy baûo ñaûm vieäc maõ hoùa moät maåu tin x∈P baèng luaät maõ hoùa ek∈E coù theå ñöôïc giaûi maõ chính xaùc baèng luaät dk∈D. Ñònh nghóa 1.2: Zm ñöôïc ñònh nghóa laø taäp hôïp {0, 1, ..., m-1}, ñöôïc trang bò pheùp coäng (kyù hieäu +) vaø pheùp nhaân (kyù hieäu laø ×). Pheùp coäng vaø pheùp nhaân trong Zm ñöôïc thöïc hieän töông töï nhö trong Z, ngoaïi tröø keát quaû tính theo modulo m Ví duï: Giaû söû ta caàn tính giaù trò 11 × 13 trong Z16. Trong Z, ta coù keát quaû cuûa pheùp nhaân 11×13=143. Do 143≡15 (mod 16) neân 11×13=15 trong Z16. Moät soá tính chaát cuûa Zm 1. Pheùp coäng ñoùng trong Zm, i.e., ∀ a, b ∈ Zm, a+b ∈ Zm 2. Tính giao hoaùn cuûa pheùp coäng trong Zm, i.e., ∀ a, b ∈ Zm, a+b =b+a 3. Tính keát hôïp cuûa pheùp coäng trong Zm, i.e., ∀ a, b, c ∈ Zm, (a+b)+c =a+(b+c) 4. Zm coù phaàn töû trung hoøa laø 0, i.e., ∀ a ∈ Zm, a+0=0+a=a 5. Moïi phaàn töû a trong Zm ñeàu coù phaàn töû ñoái laø m – a 6. Pheùp nhaân ñoùng trong Zm, i.e., ∀ a, b ∈ Zm, a×b∈ Zm 7. Tính giao hoaùn cuûa pheùp coäng trong Zm, i.e., ∀ a, b ∈ Zm, a×b=b×a 8. Tính keát hôïp cuûa pheùp coäng trong Zm, i.e., ∀ a, b, c ∈ Zm, (a×b)×c =a×(b×c) 9. Zm coù phaàn töû ñôn vò laø 1, i.e., ∀ a ∈ Zm, a×1=1×a=a 10. Tính phaân phoái cuûa pheùp nhaân ñoái vôùi pheùp coäng, i.e., ∀ a, b, c ∈ Zm, (a+b)×c =(a×c)+(b×c) 11. Zm coù caùc tính chaát 1, 3 – 5 neân taïo thaønh 1 nhoùm. Do Zm coù tính chaát 2 neân taïo thaønh nhoùm Abel. Zm coù caùc tính chaát (1) – (10) neân taïo thaønh 1 vaønhI.2 Caùc Heä Maõ Thoâng Duïng: a. Heä Maõ Ñaày (Shift Cipher )NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Shift Cipher laø moät trong nhöõng phöông phaùp laâu ñôøi nhaát ñöôïc söû duïng ñeåmaõ hoùa. Thoâng ñieäp ñöôïc maõ hoùa baèng caùch dòch chuyeån (xoay voøng) töøng kyù töï ñi k vò trítrong baûng chöõ caùi. Phöông phaùp Shift Cipher Cho P = C = K = Z26. Vôùi 0 ≤ K ≤ 25, ta ñònh nghóa eK = x + K mod 26 vaø dK = y - K mod 26 (x,y ∈ Z26) trong ñoù 26 laø soá kyù töï trong baûng chöõ caùi La tinh, moät caùch töông töï cuõng coù theåñònh nghóa cho moät baûng chöõ caùi baát kyø. Ñoàng thôøi ta deã daøng thaáy raèng maõ ñaåy laø moät heämaät maõ vì dK(eK(x)) = x vôùi moïi x∈Z26. b. Heä KEYWORD-CEASAR Trong heä maõ naøy khoùa laø moät töø naøo ñoù ñöôïc choïn tröôùc, ví duï PLAIN. Töø naøyxaùc ñònh daõy soá nguyeân trong Z26 (15,11,0,8,13) töông öùng vôùi vò trí caùc chöõ caùi cuûa caùcchöõ ñöôïc choïn trong baûng chöõ caùi. Baây giôø baûn roõ seõ ñöôïc maõ hoùa baèng caùch duøng caùchaøm laäp maõ theo thöù töï: e15, e11, e0, e8, e13, e15, e11, e0, e8, e,...vôùi eK laø haøm laäp maõ trong heä maõ chuyeån. c. Heä Maõ Vuoâng (SQUARE) Trong heä naøy caùc töø khoùa ñöôïc duøng theo moät caùch khaùc haún. Ta duøng baûng chöõcaùi tieáng Anh (coù theå boû ñi chöõ Q, neáu muoán toång soá caùc chöõ soá laø moät soá chính phöông)vaø ñoøi hoûi moïi chöõ trong töø khoùa phaûi khaùc nhau. Baây giôø moïi chöõ cuûa baûng chöõ caùiñöôïc vieát döôùi daïng moät hình vuoâng, baét ñaàu baèng töø khoùa vaø tieáp theo laø nhöõng chöõ caùicoøn laïi theo thöù töï cuûa baûng chöõ. d. Maõ theá vò Moät heä maõ khaùc khaù noåi tieáng . Heä maõ naøy ñaõ ñöôïc söû duïng haøng traêm naêm nay.Phöông phaùp : Cho P = C = Z26. K goàm taát caû caùc hoaùn vò coù theå coù cuûa 26 kyù hieäu 0,...,25. Vôùi moãi hoaùn vò π∈K, ta ñònh nghóa: eπ(x) = π(x) vaø ñònh nghóa dπ(y) = π-1(y) vôùi π -1 laø hoaùn vò ngöôïc cuûa hoaùn vò π. Trong maõ theá vò ta coù theå laáy P vaø C laø caùc baûng chöõ caùi La tinh. Ta söû duïng Z26trong maõ ñaåy vì laäp maõ vaø giaûi maõ ñeàu laø caùc pheùp toaùn ñaïi soá. e. Phöông phaùp AffineNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Cho P = C = Z26 vaø cho K = {(a,b) ∈ Z26 × Z26 : gcd(a,26) = 1} Vôùi K = (a,b) ∈ K, ta xaùc ñònh eK(x) = ax+b mod 26 vaø dK = a-1(y-b) mod 26 (x,y ∈ Z26) Phöông phaùp Affine laïi laø moät tröôøng hôïp ñaëc bieät khaùc cuûa Substitution Cipher. Ñeå coù theå giaûi maõ chính xaùc thoâng tin ñaõ ñöôïc maõ hoùa baèng haøm ek∈ E thì ek phaûi laø moät song aùnh. Nhö vaäy, vôùi moãi giaù trò y∈Z26, phöông trình ax+b≡y (mod 26) phaûi coù nghieäm duy nhaát x∈Z26. Phöông trình ax+b≡y (mod 26) töông ñöông vôùi ax≡(y–b ) (mod 26). Vaäy, ta chæ caàn khaûo saùt phöông trình ax≡(y–b ) (mod 26)Ñònh lyù1.1: Phöông trình ax+b≡y (mod 26) coù nghieäm duy nhaát x∈Z26 vôùi moãi giaù trò b∈Z26khi vaø chæ khi a vaø 26 nguyeân toá cuøng nhau.Vaäy, ñieàu kieän a vaø 26 nguyeân toá cuøng nhau baûo ñaûm thoâng tin ñöôïc maõ hoùa baèng haøm ekcoù theå ñöôïc giaûi maõ vaø giaûi maõ moät caùch chính xaùc.Goïi φ(26) laø soá löôïng phaàn töû thuoäc Z26 vaø nguyeân toá cuøng nhau vôùi 26. mÑònh lyù 1.2: Neáu n = ∏ pi i vôùi pi laø caùc soá nguyeân toá khaùc nhau vaø ei ∈ Z+, 1 ≤ i ≤ m thì e i =1φ (n ) = ∏ ( piei − piei −1 ) m i =1Trong phöông phaùp maõ hoùa Affine , ta coù 26 khaû naêng choïn giaù trò b, φ(26) khaû naêng choïngiaù trò a. Vaäy, khoâng gian khoùa K coù taát caû nφ(26) phaàn töû.Vaán ñeà ñaët ra cho phöông phaùp maõ hoùa Affine Cipher laø ñeå coù theå giaûi maõ ñöôïc thoâng tinñaõ ñöôïc maõ hoùa caàn phaûi tính giaù trò phaàn töû nghòch ñaûo a–1 ∈ Z26.f. Phöông phaùp Vigenere phöông phaùp maõ hoùa Vigenere söû duïng moät töø khoùa (keyword) coù ñoä daøi m. Coù theå xemnhö phöông phaùp maõ hoùa Vigenere Cipher bao goàm m pheùp maõ hoùa Shift Cipher ñöôïc aùpduïng luaân phieân nhau theo chu kyø. Khoâng gian khoùa K cuûa phöông phaùp Vigenere coù soá phaàn töû laø 26, lôùn hôn haún phöôngphaùp soá löôïng phaàn töû cuûa khoâng gian khoùa K trong phöông phaùp Shift Cipher. Do ñoù, vieäctìm ra maõ khoùa k ñeå giaûi maõ thoâng ñieäp ñaõ ñöôïc maõ hoùa seõ khoù khaên hôn ñoái vôùi phöôngphaùp Shift Cipher. Phöông phaùp maõ hoùa Vigenere Cipher Choïn soá nguyeân döông m. Ñònh nghóa P = C = K = (Z26)mNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES K = { (k0, k1, ..., kr-1) ∈ (Z26)r} Vôùi moãi khoùa k = (k0, k1, ..., kr-1) ∈ K, ñònh nghóa: ek(x1, x2, ..., xm) = ((x1+k1) mod 26, (x2+k2) mod n, ..., (xm+km) mod 26) dk(y1, y2, ..., ym) = ((y1–k1) mod n, (y2–k2) mod n, ..., (ym–km) mod 26) vôùi x, y ∈ (Z26)m g. Heä maõ Hill Phöông phaùp Hill Cipher ñöôïc Lester S. Hill coâng boá naêm 1929: Cho soá nguyeân döôngm, ñònh nghóa P = C = (Z26)m. Moãi phaàn töû x∈P laø moät boä m thaønh phaàn, moãi thaønh phaànthuoäc Z26. YÙ töôûng chính cuûa phöông phaùp naøy laø söû duïng m toå hôïp tuyeán tính cuûa m thaønhphaàn trong moãi phaàn töû x∈P ñeå phaùt sinh ra m thaønh phaàn taïo thaønh phaàn töû y∈C. Phöông phaùp maõ hoùa Hill Cipher Choïn soá nguyeân döông m. Ñònh nghóa: P = C = (Z26)m vaø K laø taäp hôïp caùc ma traän m×m khaû nghòch ⎛ k1,1 k1, 2 L k1,m ⎞ ⎜ ⎟ ⎜ k 2,1 L L k 2,m ⎟ Vôùi moãi khoùa k = ⎜ ∈ K , ñònh nghóa: M M M ⎟ ⎜ ⎟ ⎜k k m, 2 L k m ,m ⎟ ⎝ m,1 ⎠ ⎛ k1,1 k1, 2 L k1,m ⎞ ⎜ ⎟ ⎜ k 2,1 L L k 2,m ⎟ ek ( x ) = xk = ( x1 , x2 ,..., xm )⎜ vôùi x=(x1, x2, ..., xm) ∈ P M M M ⎟ ⎜ ⎟ ⎜k k m, 2 L k m ,m ⎟ ⎝ m ,1 ⎠ vaø dk(y) = yk–1 vôùi y∈ C Moïi pheùp toaùn soá hoïc ñeàu ñöôïc thöïc hieän treân Zn h. Maõ hoaùn vò Nhöõng phöông phaùp maõ hoùa neâu treân ñeàu döïa treân yù töôûng chung: thay theá moãi kyù töïtrong thoâng ñieäp nguoàn baèng moät kyù töï khaùc ñeå taïo thaønh thoâng ñieäp ñaõ ñöôïc maõ hoùa. YÙtöôûng chính cuûa phöông phaùp maõ hoaùn vò laø vaãn giöõ nguyeân caùc kyù töï trong thoâng ñieäpnguoàn maø chæ thay ñoåi vò trí caùc kyù töï; noùi caùch khaùc thoâng ñieäp nguoàn ñöôïc maõ hoùa baèngcaùch saép xeáp laïi caùc kyù töï trong ñoù. Phöông phaùp maõ hoùa maõ hoaùn vò Choïn soá nguyeân döông m. Ñònh nghóa: P = C = (Z26)m vaø K laø taäp hôïp caùc hoaùn vò cuûa m phaàn töû {1, 2, ..., m} Vôùi moãi khoùa π ∈ K, ñònh nghóa:NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES eπ ( x1 , x2 ,..., xm ) = (xπ (1) , xπ (2 ) ,...xπ (m ) ) vaø ( d π ( y1 , y 2 ,..., y m ) = yπ −1 (1) , yπ −1 (2 ) ,... yπ −1 (m ) ) vôùi π–1 hoaùn vò ngöôïc cuûa π Phöông phaùp maõ hoaùn vò chính laø moät tröôøng hôïp ñaëc bieät cuûa phöông phaùp Hill. Vôùimoãi hoaùn vò π cuûa taäp hôïp {1, 2, ..., m} , ta xaùc ñònh ma traän kπ = (ki, j ) theo coâng thöùc sau: ⎧1, neáu i = π ( j ) ki, j = ⎨ ⎩0, trong tröôøng hôïp ngöôïc laïi Ma traän kπ laø ma traän maø moãi doøng vaø moãi coät coù ñuùng moät phaàn töû mang giaù trò 1, caùcphaàn töû coøn laïi trong ma traän ñeàu baèng 0. Ma traän naøy coù theå thu ñöôïc baèng caùch hoaùn vòcaùc haøng hay caùc coät cuûa ma traän ñôn vò Im neân kπ laø ma traän khaû nghòch. Roõ raøng, maõ hoùabaèng phöông phaùp Hill vôùi ma traän kπ hoaøn toaøn töông ñöông vôùi maõ hoùa baèng phöông phaùpmaõ hoaùn vò vôùi hoaùn vò π. d. Maõ voøng Trong caùc heä tröôùc ñeàu cuøng moät caùch thöùc laø caùc phaàn töû keá tieáp nhau cuûa baûn roõñeàu ñöôïc maõ hoùa vôùi cuøng moät khoùa K. Nhö vaäy xaâu maõ y seõ coù daïng sau: y = y1y2... = eK(x1) eK(x2)...Caùc heä maõ loaïi naøy thöôøng ñöôïc goïi laø maõ khoái (block cipher). Coøn ñoái vôùi caùc heä maõ doøng. YÙ töôûng ôû ñaây laø sinh ra moät chuoãi khoùa z = z1z2...,vaø söû duïng noù ñeå maõ hoùa xaâu baûn roõ x = x1x2...theo qui taéc sau: y = y1 y 2 ... = e z1 ( x1 )e z2 ( x 2 )... I.3 Quy trình thaùm maõ: Cöù moãi phöông phaùp maõ hoaù ta laïi coù moät phöông phaùp thaùm maõ töông öùng nhöng nguyeân taéc chung ñeå vieäc thaùm maõ ñöôïc thaønh coâng thì yeâu caàu ngöôøi thaùm maõ phaûi bieát heä maõ naøo ñöôïc duøng hoaù. Ngoaøi ra ta coøn phaûi bieát ñöôïc baûn maõ vaø baûn roõ öùng.nhìn chung caùc heä maõ ñoái xöùng laø deã caøi ñaët vôùi toác ñoä thöïc thi nhanh.Tính an toaøn cuûa noù phuï thuoäc vaøo caùc yeáu toá : • Khoâng gian khoaù phaûi ñuû lôùn • vôùi caùc pheùp troän thích hôïp caùc heä maõ ñoái xöùng coù theå taïo ra ñöôïc moät heä maõ môùi coù tính an toaøn cao. • baûo maät cho vieäc truyeàn khoùa cuõng caàn ñöôïc xöû lyù moät caùch nghieâm tuùc. Vaø moät heä maõ hoaù döõ lieäu ra ñôøi (DES). DES ñöôïc xem nhö laø chuaån maõ hoùa döõlieäu cho caùc öùng duïng töø ngaøy 15 thaùng 1 naêm 1977 do UÛy ban Quoác gia veà Tieâu chuaåncuûa Myõ xaùc nhaän vaø cöù 5 naêm moät laàn laïi coù chænh söûa, boå sung. DES laø moät heä maõ ñöôïc troän bôûi caùc pheùp theá vaø hoaùn vò. vôùi pheùp troän thích hôïpthì vieäc giaûi maõ noù laïi laø moät baøi toaùn khaù khoù. Ñoàng thôøi vieäc caøi ñaët heä maõ naøy chonhöõng öùng duïng thöïc teá laïi khaù thuaän lôïi. Chính nhöõng lyù do ñoù noù ñöôïc öùng duïng roängraõi cuûa DES trong suoát hôn 20 naêm qua, khoâng nhöõng taïi Myõ maø coøn laø haàu nhö treân khaéptheá giôùi. Maëc duø theo coâng boá môùi nhaát (naêm 1998) thì moïi heä DES, vôùi nhöõng khaû naêngNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DEScuûa maùy tính hieän nay, ñeàu coù theå beû khoùa trong hôn 2 giôø. Tuy nhieân DES cho ñeán nayvaãn laø moät moâ hình chuaån cho nhöõng öùng duïng baûo maät trong thöïc teá.II. HEÄ MAÕ CHUAÅN DES (Data Encryption Standard) II.1 Ñaëc taû DES Phöông phaùp DES maõ hoùa töø x coù 64 bit vôùi khoùa k coù 56 bit thaønh moät töø coù y 64 bit. Thuaät toaùn maõ hoùa bao goàm 3 giai ñoaïn: 1. Vôùi töø caàn maõ hoùa x coù ñoä daøi 64 bit, taïo ra töø x0 (cuõng coù ñoä daøi 64 bit) baèng caùch hoaùn vò caùc bit trong töø x theo moät hoaùn vò cho tröôùc IP (Initial Permutation). Bieåu dieãn x0 = IP(x) = L0R0, L0 goàm 32 bit beân traùi cuûa x0, R0 goàm 32 bit beân phaûi cuûa x0 L0 R0 x0 Hình.1 Bieåu dieãn daõy 64 bit x thaønh 2 thaønh phaàn L vaø R 2. Xaùc ñònh caùc caëp töø 32 bit Li, Ri vôùi 1≤ i ≤ 16theo quy taéc sau: Li = Ri-1 Ri = Li-1⊕ f (Ri-1, Ki) vôùi ⊕ bieåu dieãn pheùp toaùn XOR treân hai daõy bit, K1, K2, ..., K16 laø caùc daõy 48 bit phaùt sinh töø khoùa K cho tröôùc (Treân thöïc teá, moãi khoùa Ki ñöôïc phaùt sinh baèng caùch hoaùn vò caùc bit trong khoùa K cho tröôùc). Li-1 Ri-1 f Ki ⊕ Li Ri Hình.2 Quy trình phaùt sinh daõy 64 bit LiRi töø daõy 64 bit Li-1Ri-1vaø khoùa Ki 3. AÙp duïng hoaùn vò ngöôïc IP-1 ñoái vôùi daõy bit R16L16, thu ñöôïc töø y goàm 64 bit. Nhö vaäy, y = IP-1 (R16L16)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Haøm f ñöôïc söû duïng ôû böôùc 2 laø A J E E(A) + B1 B2 B3 B4 B5 B6 B7 B8 S1 S2 S3 S4 S5 S6 S7 S8 C1 C2 C3 C4 C5 C6 C7 C8 P f(A,J)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Haøm f coù goàm 2 tham soá: Tham soá thöù nhaát A laø moät daõy 32 bit, tham soá thöù hai J laømoät daõy 48 bit. Keát quaû cuûa haøm f laø moät daõy 32 bit. Caùc böôùc xöû lyù cuûa haøm f(A, J)nhösau: • Tham soá thöù nhaát A (32 bit) ñöôïc môû roäng thaønh daõy 48 bit baèng haøm môû roäng E. Keát quaû cuûa haøm E(A) laø moät daõy 48 bit ñöôïc phaùt sinh töø A baèng caùch hoaùn vò theo moät thöù töï nhaát ñònh 32 bit cuûa A, trong ñoù coù 16 bit cuûa A ñöôïc laäp laïi 2 laàn trong E(A). • Thöïc hieän pheùp toaùn XOR cho 2 daõy 48 bit E(A) vaø J, ta thu ñöôïc moät daõy 48 bit B. Bieåu dieãn B thaønh töøng nhoùm 6 bit nhö sau:B = B1B2B3B4B5B6B7B8 • Söû duïng 8 ma traän S1, S2,..., S8, moãi ma traän Si coù kích thöôùc 4×16 vaø moãi doøng cuûa ma traän nhaän ñuû 16 giaù trò töø 0 ñeán 15. Xeùt daõy goàm 6 bit Bj = b1b2b3b4b5b6, Sj(Bj) ñöôïc xaùc ñònh baèng giaù trò cuûa phaàn töû taïi doøng r coät c cuûa Sj, trong ñoù, chæ soá doøng r coù bieåu dieãn nhò phaân laø b1b6, chæ soá coät c coù bieåu dieãn nhò phaân laø b2b3b4b5. Baèng caùch naøy, ta xaùc ñònh ñöôïc caùc daõy 4 bit Cj = Sj(Bj), 1 ≤ j ≤ 8. • Taäp hôïp caùc daõy 4 bit Cj laïi. ta coù ñöôïc daõy 32 bit C = C1C2C3C4C5C6C7C8. Daõy 32 bit thu ñöôïc baèng caùch hoaùn vò C theo moät quy luaät P nhaát ñònh chính laø keát quaû cuûa haøm F(A, J) caùc haøm ñöôïc söû duïng trong DES. Hoaùn vò khôûi taïo IP seõ nhö sau: IP 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 Ñieàu naøy coù nghóa laø bit thöù 58 cuûa x laø bit ñaàu tieân cuûa IP(x); bit thöù 50 cuûa x laø bit thöù hai cuûa IP(x) v.v. Hoaùn vò ngöôïc IP-1 seõ laø: IP-1 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 Haøm môû roäng E ñöôïc ñaëc taû theo baûng sau: E – baûng choïn bit 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 Taùm S-hoäp vaø hoaùn vò P seõ ñöôïc bieåu dieãn nhö sau: S1 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S2 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 S3 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 S4NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 S5 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 11 8 12 7 0 14 2 13 6 15 0 9 10 4 5 3 S6 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 S7 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 S8 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11 P 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES K laø xaâu coù ñoä daøi 64 bit, trong ñoù coù 56 bit duøng laøm khoùa vaø 8 bit duøng ñeå kieåmtra söï baèng nhau (ñeå phaùt hieän loãi). Caùc bit ôû caùc vò trí 8, 16, ..., 64 ñöôïc xaùc ñònh, sao chomoãi byte chöùa soá leû caùc soá 1. Vì vaäy, töøng loãi coù theå ñöôïc phaùt hieän trong moãi 8 bit. Caùcbit kieåm tra söï baèng nhau laø ñöôïc boû qua khi tính lòch khoùa. 1. Cho khoùa 64 bit K, loaïi boû caùc bit kieåm tra vaø hoaùn vò caùc bit coøn laïi cuûa Ktöông öùng vôùi hoaùn vò (coá ñònh) PC-1. Ta vieát PC-1(K) = C0D0, vôùi C0 bao goàm 28 bit ñaàutieân cuûa PC-1(K) vaø D0 laø 28 bit coøn laïi. 2. Vôùi i naèm trong khoaûng töø 1 ñeán 16, ta tính Ci = LSi(Ci-1) Di = LSi(Di-1)vaø Ki = PC-2(CiDi), LSi bieåu dieãn pheùp chuyeån chu trình (cyclic shift) sang traùi hoaëc cuûamoät hoaëc cuûa hai vò trí tuøy thuoäc vaøo trò cuûa i; ñaåy moät vò trí neáu i = 1, 2, 9 hoaëc 16 vaøñaåy 2 vò trí trong nhöõng tröôøng hôïp coøn laïi. PC-2 laø moät hoaùn vò coá ñònh khaùc. Vieäc tính lòch khoùa ñöôïc minh hoïa nhö hình veõ sau: K PC-1 C0 D0 LS1 LS1 C1 D1 PC-2 K1 LS2 LS2 ... LS16 LS16 C16 D16 PC-2 K16 Caùc hoaùn vò PC-1 vaø PC-2 ñöôïc söû duïng trong vieäc tính lòch khoùa laø nhö sau: PC-1 57 49 41 33 25 17 9NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 34 60 52 44 36 63 55 7 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 PC-2 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 50 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 Baây giôø ta seõ hieån thò keát quaû vieäc tính lòch khoùa. Nhö ñaõ nhaän xeùt ôû treân, moãivoøng söû duïng khoùa 48 bit töông öùng vôùi 48 bit trong K. Caùc thaønh phaàn trong caùc baûng sauseõ chæ ra caùc bit trong K ñöôïc söû duïng trong caùc voøng khaùc nhau.I.2 LAÄP MAÕ DES Ñaây laø ví duï veà vieäc laäp maõ söû duïng DES. Giaû söû ta maõ hoùa baûn roõ sau trong daïngthaäp luïc phaân (Hexadecimal) 0123456789ABCDEFsöû duïng khoùa thaäp luïc phaân 133457799BBCDFF1Khoùa trong daïng nhò phaân khoâng coù caùc bit kieåm tra seõ laø:00010010011010010101101111001001101101111011011111111000. Aùp duïng IP, ta nhaän ñöôïc L0 vaø R0 (trong daïng nhò phaân) : L0 = 11001100000000001100110011111111 L1 = R0 = 1111000010101010111100001010101016 voøng laäp maõ ñöôïc theå hieän nhö sau: E(R0) = 011110100001010101010101011110100001010101010101 K1 = 000110110000001011101111111111000111000001110010 E(R0) ⊕ K1 = 011000010001011110111010100001100110010100100111 Output S-hoäp = 01011100100000101011010110010111 f(R0,K1) = 00100011010010101010100110111011 L2 = R1 = 11101111010010100110010101000100 E(R1) = 011101011110101001010100001100001010101000001001NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES K2 = 011110011010111011011001110110111100100111100101 E(R1) ⊕ K2 = 000011000100010010001101111010110110001111101100 Output S-hoäp = 11111000110100000011101010101110 f(R1, K2) = 00111100101010111000011110100011 L3 = R2 = 11001100000000010111011100001001 E(R2) = 111001011000000000000010101110101110100001010011 K3 = 010101011111110010001010010000101100111110011001 E(R2) ⊕ K3 = 101100000111110010001000111110000010011111001010 S-box output = 00100111000100001110000101101111 f(R2, K3) = 01001101000101100110111010110000 L4 = R3 = 10100010010111000000101111110100 E(R3) = 010100000100001011111000000001010111111110101001 K4 = 011100101010110111010110110110110011010100011101 E(R3) ⊕ K4 = 001000101110111100101110110111100100101010110100 S-box output = 00100001111011011001111100111010 f(R3, K4) = 10111011001000110111011101001100 L5 = R4 = 011101110 E(R4) = 101110101110100100000100000000000000001000001010 K5 = 011111001110110000000111111010110101001110101000 E(R4) ⊕ K5 = 110001100000010100000011111010110101000110100010 Xuaát S-hoäp = 01010000110010000011000111101011 f(R4, K5) = 00101000000100111010110111000011 L6 = R5 = 10001010010011111010011000110111 E(R5) = 110001010100001001011111110100001100000110101111 K6 = 011000111010010100111110010100000111101100101111 E(R5) ⊕ K6 = 101001101110011101100001100000001011101010000000 S-box output = 01000001111100110100110000111101 f(R5, K6) = 10011110010001011100110100101100 L7 = R6 = 11101001011001111100110101101001 E(R6) = 111101010010101100001111111001011010101101010011 K7 = 111011001000010010110111111101100001100010111100 E(R6) ⊕ K7 = 000110011010111110111000000100111011001111101111 S-box output = 00010000011101010100000010101101 f(R6, K7) = 10001100000001010001110000100111 L8 = R7 = 00000110010010101011101000010000 E(R7) = 000000001100001001010101010111110100000010100000NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES K8 = 111101111000101000111010110000010011101111111011 E(R7) ⊕ K8 = 111101110100100001101111100111100111101101011011 S-box output = 01101100000110000111110010101110 f(R7, K8) = 00111100000011101000011011111001 L9 = R8 = 11010101011010010100101110010000 E(R8) = 011010101010101101010010101001010111110010100001 K9 = 111000001101101111101011111011011110011110000001 E(R8) ⊕ K9 = 100010100111000010111001010010001001101100100000 S-box output = 00010001000011000101011101110111 f(R8, K9) = 00100010001101100111110001101010 L10 = R9 = 00100100011111001100011001111010 E(R9) = 000100001000001111111001011000001100001111110100 K10 = 101100011111001101000111101110100100011001001111 E(R9) ⊕ K10 = 101000010111000010111110110110101000010110111011 S-box output = 11011010000001000101001001110101 f(R9, K10) = 01100010101111001001110000100010 L11 = R10 = 10110111110101011101011110110010 E(R10) = 010110101111111010101011111010101111110110100101 K11 = 001000010101111111010011110111101101001110000110 E(R10) ⊕ K11 = 011110111010000101111000001101000010111000100011 S-box output = 01110011000001011101000100000001 f(R10, K11) = 11100001000001001111101000000010 L12 = R11 = 11000101011110000011110001111000 E(R11) 011000001010101111110000000111111000001111110001 K12 011101010111000111110101100101000110011111101001 E(R11) ⊕ K12 000101011101101000000101100010111110010000011000 S-box output 01111011100010110010011000110101 f(R11, K12) 11000010011010001100111111101010 L13 = R12 01110101101111010001100001011000 E(R12) = 001110101011110111111010100011110000001011110000 K13 = 100101111100010111010001111110101011101001000001 E(R12)⊕ K13 = 101011010111100000101011011101011011100010110001 S-box output = 10011010110100011000101101001111 f(R12, K13) = 11011101101110110010100100100010 L14 = R13 = 00011000110000110001010101011010 E(R13) = 000011110001011000000110100010101010101011110100 K14 = 010111110100001110110111111100101110011100111010 E(R13)⊕ K14 = 010100000101010110110001011110000100110111001110NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES S-box output = 01100100011110011001101011110001 f(R13, K14) = 10110111001100011000111001010101 L15 = R14 = 11000010100011001001011000001101 E(R14) = 111000000101010001011001010010101100000001011011 K15 = 101111111001000110001101001111010011111100001010 E(R14)⊕ K15 = 010111111100010111010100011101111111111101010001 S-box output = 10110010111010001000110100111100 f(R14, K15) = 01011011100000010010011101101110 L16 = R15 = 01000011010000100011001000110100 E(R15) = 001000000110101000000100000110100100000110101000 K16 = 110010110011110110001011000011100001011111110101 E(R15)⊕ K16 = 111010110101011110001111000101000101011001011101 S-box output = 10100111100000110010010000101001 f(R15, K16) = 11001000110000000100111110011000 R16 = 00001010010011001101100110010101 Cuoái cuøng, aùp duïng IP-1 cho R16L16 ta nhaän ñöôïc baûn maõ trong daïng thaäp luïc phaânnhö sau: 85E813540F0AB405I. 3 THAÙM MAÕ DES Moät phöông phaùp raát noåi tieáng trong thaùm maõ DES laø “thaùm maõ vi sai“(differential cryptanalysic) do Biham vaø Shamir ñeà xuaát. Ñoù laø phöông phaùp thaùm vôùi baûnroõ ñöôïc choïn. Noù khoâng ñöôïc söû duïng trong thöïc teá ñeå thaùm maõ DES 16 voøng, maø chæñöôïc söû duïng ñeå thaùm caùc heä DES coù ít voøng hôn. Baây giôø ta seõ moâ taû nhöõng yù töôûng cô baûn cuûa kyõ thuaät naøy. Ñeå ñaït muïc ñích thaùmmaõ, ta coù theå boû qua hoaùn vò khôûi taïo IP vaø hoaùn vò ñaûo cuûa noù (bôûi vì ñieàu ñoù khoâng caànthieát cho vieäc thaùm maõ). Nhö ñaõ nhaän xeùt ôû treân, ta xeùt caùc heä DES n voøng, vôùi n ≤ 16.Trong caøi ñaët ta coù theå coi L0R0 laø baûn roõ vaø LnRn nhö laø baûn maõ. Thaùm maõ vi sai ñoøi hoûi phaûi so saùnh x-or (exclusive-or) cuûa hai baûn roõ vôùi x-or cuûahai baûn maõ töông öùng. Noùi chung, ta seõ quan saùt hai baûn roõ L0R0 vaø L0*R0* vôùi trò x-orñöôïc ñaëc taû L0’R0’ = L0R0 ⊕ L0*R0*. Trong nhöõng thaûo luaän sau ta seõ söû duïng kyù hieäu (‘)ñeå chæ x-or cuûa hai xaâu bit. Ñònh nghóa 3.1: Cho Sj laø moät S-hoäp (1 ≤ j ≤ 8). Xeùt moät caëp xaâu 6-bit laø (Bj,Bj* ).Ta noùi raèng, xaâu nhaäp x-or (cuûa Sj) laø Bj ⊕ Bj* vaø xaâu xuaát x-or (cuûa Sj) laø Sj(Bj) ⊕ Sj(Bj*). Chuù yù laø xaâu nhaäp x-or laø xaâu bit coù ñoä daøi 6, coøn xaâu xuaát x-or coù ñoä daøi 4. Ñònh nghóa 3.2: Vôùi baát kyø Bj ’ ∈ (Z2) 6, ta ñònh nghóa taäp Δ(Bj’) goàm caùc caëp(Bj,Bj*) coù x-or nhaäp laø Bj’. Deã daøng thaáy raèng, baát kyø taäp Δ(Bj’) naøo cuõng coù 26 = 64 caëp, vaø do ñoùNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Δ(Bj’) = {(Bj, Bj ⊕ Bj’) : Bj ∈ (Z2) 6 } Vôùi moãi caëp trong Δ(Bj’), ta coù theå tính xaâu x-or xuaát cuûa Sj vaø laäp ñöôïc phaân boákeát quaû. Coù 64 xaâu xuaát x-or, ñöôïc phaân boá trong 24 = 16 giaù trò coù theå coù. Tính khoângñoàng ñeàu cuûa caùc phaân boá ñoù laø cô sôû ñeå maõ thaùm. Ví duï 3.1: Giaû söû ta xeùt S1 laø S-hoäp ñaàu tieân vaø xaâu nhaäp x-or laø 110100. Khi ñoù Δ(110100) = {(000000, 110100), (000001, 110101), ..., (111111, 001011)} Vôùi moãi caëp trong taäp Δ(110100), ta tính xaâu xuaát x-or cuûa S1. Chaúng haïn, S1(000000) = E16 = 1110, S1(110100) = 1001,nhö vaäy xaâu xuaát x-or cho caëp (000000,110100) laø 0111. Neáu thöïc hieän ñieàu ñoù cho 64 caëp trong Δ(110100) thì ta nhaän ñöôïc phaân boá cuûacaùc xaâu x-or xuaát sau:000 000 001 001 010 010 011 011 100 100 101 101 110 110 111 1110 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 8 16 6 2 0 0 12 6 0 0 0 0 8 0 6 Trong ví duï 3.1, chæ coù 8 trong soá 16 xaâu x-or xuaát coù theå coù xuaát hieän thaät söï. Víduï cuï theå naøy ñaõ chæ ra söï phaân boá raát khoâng ñeàu cuûa caùc xaâu x-or xuaát. Noùi chung, neáu tacoá ñònh S-hoäp Sj vaø xaâu nhaäp x-or Bj’, thì trung bình coù khoaûng 75 - 80% caùc xaâu x-orxuaát coù theå coù xuaát hieän thöïc söï. Ñeå moâ taû caùc phaân boâ ñoù ta ñöa ra ñònh nghóa sau. Ñònh nghóa 3.3: Vôùi 1 ≤ j ≤ 8 vaø vôùi caùc xaâu bit Bj’ ñoä daøi 6 vaø Cj’ ñoä daøi 4, tañònh nghóa: INj(Bj’,Cj’) = {Bj ∈ (Z2)6 : Sj(Bj) ⊕ Sj(Bj ⊕ Bj’) = Cj’}vaø Nj(Bj’, Cj’) = ⎮INj(Bj’, Cj’)⎮ Baûng sau seõ cho caùc xaâu nhaäp coù theå coù vôùi xaâu x-or nhaäp 110100 Xaâu xuaát x-or Caùc xaâu nhaäp coù theå coù 0000 0001 000011, 001111, 011110, 011111 101010, 101011, 110111, 111011 000100, 000101, 001110, 010001 0010 010010, 010100, 011010, 011011 100000, 100101, 010110, 101110 101111, 110000, 110001, 111010 0011 000001, 000010, 010101, 100001 110101, 110110 0100 010011, 100111NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 0101 0110 000000, 001000, 001101, 010111 0111 011000, 011101, 100011, 101001 101100, 110100, 111001, 111100 1000 001001, 001100, 011001, 101101 111000, 111101 1001 1010 1011 1100 1101 000110, 010000, 010110, 011100 110010, 100100, 101000, 110010 1110 1111 000111, 001010, 001011, 110011 111110, 111111 Nj(Bj’, Cj’) tính soá caùc caëp vôùi xaâu nhaäp x-or baèng Bj’ coù xaâu xuaát x-or baèng Cj’vôùi S-hoäp Sj. Caùc caëp ñoù coù caùc xaâu nhaäp x-or ñöôïc ñaëc taû vaø ñöa ra caùch tính caùc xaâuxuaát x-or coù theå nhaän ñöôïc töø taäp INj(Bj’, Cj’). Ñeå yù raèng, taäp naøy coù theå phaân thaønhNj(Bj’, Cj’) /2 caëp, moãi caëp coù xaâu x-or nhaäp baèng Bj’. Phaân boá trong ví duï 3.1 chöùa caùc trò N1(110100, C1’), C1’∈ (Z2)4. Trong baûng treânchöùa caùc taäp IN(110100, C1’). Vôùi moãi taùm S-hoäp, coù 64 xaâu nhaäp x-or coù theå coù. Nhö vaäy, coù 512 phaân boá coùtheå tính ñöôïc. Nhaéc laïi laø, xaâu nhaäp cho S-hoäp ôû voøng thöù i laø B= E⊕ J, vôùi E = E(Ri-1) laømôû roäng cuûa Ri-1 vaø J = Ki goàm caùc bit khoùa cuûa voøng i. Baây giôø xaâu nhaäp x-or (cho taát caûtaùm S-hoäp) coù theå tính ñöôïc nhö sau: B ⊕ B* = (E ⊕ J) ⊕ (E* ⊕ J) = E ⊕ E* Ñieàu naøy raát quan troïng ñeå thaáy raèng, xaâu nhaäp x-or khoâng phuï thuoäc vaøo caùc bitkhoùa J. (Do ñoù, xaâu xuaát x-or cuõng khoâng phuï thuoäc vaøo caùc bit khoùa.) Ta seõ vieát moãi B, E vaø J nhö laø noái cuûa taùm xaâu 6-bit: B = B1B2B3B4B5B6B7B8 E = E1E2E3E4E5E6E7E8 J = J1J2J3J4J5J6J7J8vaø ta cuõng seõ vieát B vaø E* nhö vaäy. Baây giôø giaû söû laø ta ñaõ bieát caùc trò Ej vaø Ej* vôùi moät j *naøo ñoù, 1 ≤ j ≤ 8, vaø trò cuûa xaâu xuaát x-or cho Sj, Cj’ = Sj(Bj) ⊕ Sj(Bj* ). Khi ñoù seõ laø: Ej ⊕ Jj ∈ INj(Ej’, Cj’), *vôùi Ej’ = Ej ⊕ Ej .Ñònh nghóa 3.4: Giaû söû Ej vaø Ej* laø caùc xaâu bit ñoä daøi 6, vaø Cj’ laø xaâu bit ñoä daøi 4. Ta ñònhnghóa: testj(Ej, Ej*, Cj’) = { Bj ⊕ Ej : Bj ∈ INj(Ej’, Cj’) },vôùi Ej’ = Ej ⊕ Ej*.NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DESÑònh lyù 3.1: Giaû söû Ej vaø Ej* laø hai xaâu nhaäp cho S-hoäp Sj, vaø xaâu xuaát x-or cho Sj laø Cj’. Kyù hieäuEj’ = Ej ⊕ Ej* . Khi ñoù caùc bit khoùa Jj coù trong taäp testj(Ej, Ej*, Cj’). Ñeå yù, ñoù chính laø caùc xaâu bit Nj(Ej’, Cj’) ñoä daøi 6 trong taäp testj(Ej, Ej*, Cj’); giaù tròchính xaùc cuûa Jj phaûi laø moät trong soá ñoù.Ví duï 3.2:Giaû söû E1 = 000001, E1*= 110101 vaø C1’= 1101. Do ñoù N1(110101,1101) = 8, ñuùng baèng 8xaâu bit trong taäp test1(000001, 110101, 1101). Töø baûng treân ta thaáy raèngIN1(110100, 1101) = {000110, 010000, 010110, 011100, 100010, 100100, 101000,110010}Cho neântest1(000001, 110101,1101) = {000111, 010001, 010111, 011101, 100011, 100101,101001, 110011} Neáu ta coù moät boä ba thöù hai nhö theá E1, E1*, C1’, khi ñoù ta seõ nhaän ñöôïc taäp thöùhai test1 cuûa caùc trò cho caùc bit khoùa trong J1. Trò ñuùng cuûa J1 caàn phaûi naèm trong giao cuûacaùc S-hoäp. Neáu ta coù moät vaøi boä ba nhö vaäy, khi ñoù ta coù theå mau choùng tìm ñöôïc caùc bitkhoùa trong J1. Moät caùch roõ raøng hôn ñeå thöïc hieän ñieàu ñoù laø laäp moät baûng cuûa 64 boä ñeámbieåu dieãn cho 64 khaû naêng cuûa cuûa 6 khoùa bit trong J1. Boä ñeám seõ taêng moãi laàn, töông öùngvôùi söï xuaát hieän cuûa caùc bit khoùa trong taäp test1 cho moät boä ba cuï theå. Cho t boä ba, ta hyvoïng tìm ñöôïc duy nhaát moät boä ñeám coù trò t; trò ñoù seõ töông öùng vôùi trò ñuùng cuûa caùc bitkhoùa trong J1.I.3.1. Thaùm maõ heä DES - 3 voøng Baây giôø ta seõ xeùt yù töôûng vöøa trình baøy cho vieäc thaùm maõ heä DES - ba voøng. Ta seõbaét ñaàu vôùi caëp baûn roõ vaø caùc baûn maõ töông öùng: L0R0, L0*R0*, L3R3 vaø L3*R3*. Ta coù theåbieåu dieãn R3 nhö sau: R3 = L2 ⊕ f(R2, K3) = R1 ⊕ f(R2, K3) = L0 ⊕ f(R0, K1) ⊕ f(R2, K3)R3* coù theå bieåu dieãn moät caùch töông töï , do vaäy: R3’ = L0’ ⊕ f(R0, K1) ⊕ f(R0*, K1) ⊕ f(R2, K3) ⊕ f(R2*, K3) Baây giôø, giaû söû ta ñaõ choïn ñöôïc caùc baûn roõ sao cho R0 = R0*, chaúng haïn: R0’ = 00...0 Khi ñoù f(R0, K1) = f(R0*, K1), vaø do ñoù: R3’ = L0’⊕ f(R2, K3) ⊕ f(R2*, K3) ÔÛ ñieåm naøy R3’ laø ñöôïc bieát khi noù coù theå tính ñöôïc töø hai baûn maõ, vaø L0’ laø bieátñöôïc khi noù coù theå tính ñöôïc töø hai baûn roõ. Nghóa laø ta coù theå tính ñöôïc f(R2,K3)⊕f(R2*,K3)töø phöông trình: f(R2, K3) ⊕ f(R2*, K3) = R3’ ⊕ L0’ Baây giôø f(R2, K3) = P(C) vaø f(R2*, K3) = P(C*), vôùi C vaø C* töông öùng laø kyù hieäucuûa hai xaâu xuaát cuûa taùm S-hoäp (nhaéc laïi, P laø coá ñònh, laø hoaùn vò ñöôïc bieát coâng khai).Neân:NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES P(C) ⊕ P(C*) = R3’ ⊕ L0’vaø keát quaû laø: C’ = C ⊕ C* = P-1(R3’ ⊕ L0’) (1) Ñoù laø xaâu xuaát x-or cho taùm S-hoäp trong voøng ba. Baây giôø, R2 = L3 vaø R2* = L3* laø ñaõ bieát (chuùng laø moät phaàn cuûa caùc baûn maõ). Töøñaây ta coù theå tính: E = E(L3) (2)vaø E* = E(L3*) (3)söû duïng haøm môû roäng E ñöôïc bieát coâng khai. Chuùng laø nhöõng xaâu nhaäp cho caùc S-hoäp chovoøng ba. Nhö vaäy giôø ta ñaõ bieát E, E*, vaø C’ cho voøng ba vaø ta coù theå tieáp tuïc xaây döïngcaùc taäp test1, ..., test8 cuûa caùc trò coù theå coù cho caùc bit khoùa trong J1, ..., J8. Giaûi thuaät vöøa xeùt coù theå bieåu dieãn bôûi caùc maõ sau: Input: L0R0, L0*R0*, L3R3 vaø L3*R3*, vôùi R0 = R0* 1. Tính C’ = P-1(R3’ ⊕ L0’) 2. Tính E = E(L3) vaø E* = E(L*) 3. for j = 1 to 8 do compute testj(Ej, Ej*, Cj’) Vieäc maõ thaùm seõ söû duïng moät soá boä ba E, E*, C’ nhö vaäy. Ta seõ laäp taùm baûng caùcboä ñeám vaø do ñoù xaùc ñònh ñöôïc 48 bit trong K3, laø khoùa cho voøng ba. 56 bit trong khoùa khiñoù coù theå tìm ñöôïc hoaøn toaøn töø 28 = 256 khaû naêng cho 8 bit khoùa. Baây giôø ta seõ minh hoïa ñieàu ñoù qua ví duï sau.Ví duï 3.3 Giaû söû ta coù ba caëp baûn roõ vaø baûn maõ, vôùi caùc baûn maõ cuøng coù caùc xaâu x-or ñöôïcmaõ hoùa bôûi cuøng moät khoùa. Ñeå ngaén goïn ta söû duïng heä thaäp luïc phaân: Baûn roõ Baûn maõ 748502CD38451097 03C70306D8A09F10 3874756438451097 78560A0960E6D4CB 486911026ACDFF31 45FA285BE5ADC730 375BD31F6ACDFF31 134F7915AC253457 357418DA013FEC86 D8A31B2F28BBC5CF 12549847013FEC86 0F317AC2B23CB944 Töø caëp ñaàu tieân ta tính caùc xaâu nhaäp cuûa S-hoäp (cho voøng 3) töø caùc phöông trình(2) vaø (3). Chuùng laø:E = 000000000111111000001110100000000110100000001100E* = 101111110000001010101100000001010100000001010010Xaâu xuaát x-or cuûa S-hoäp ñöôïc tính baèng phöông trình (1) seõ laø: C’ = 10010110010111010101101101100111NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DESTöø caëp thöù hai, ta tính ñöôïc caùc xaâu nhaäp cho S-hoäp laø: E = 101000001011111111110100000101010000001011110110 E* = 100010100110101001011110101111110010100010101001vaø xaâu xuaát x-or cuûa S-hoäp laø: C’ = 10011100100111000001111101010110Töø caëp thöù ba, caùc xaâu nhaäp cho S-hoäp seõ laø: E = 111011110001010100000110100011110110100101011111 E* = 000001011110100110100010101111110101011000000100vaø xaâu xuaát x-or cuûa S-hoäp laø: C’ = 11010101011101011101101100101011 Tieáp theo, ta laäp baûng caùc trò trong taùm maûng boä ñeám cho moãi caëp. Ta seõ minh hoïathuû tuïc vôùi caùc maûng ñeám cho J1 töø caëp ñaàu tieân. Trong caëp naøy, ta coù E1’= 101111 vaø C1’= 1001. Taäp: IN1(101111, 1001) = {000000, 000111, 101000, 101111}Do E1 = 000000 ta coù: J1 ∈ test1(000000, 101111, 1001) = {000000, 000111, 101000, 101111} Do ñoù ta taêng caùc trò 0, 7, 40 vaø 47 trong caùc maûng ñeám cho J1. Cuoái cuøng ta seõ trình baøy caùc baûng. Neáu ta xem caùc xaâu bit ñoä daøi 6 nhö laø bieåudieãn cuûa caùc soá nguyeân trong khoaûng 0-63, thì 64 trò seõ töông öùng vôùi 0, 1, ..., 63. Caùcmaûng ñeám seõ laø nhö sau: J1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 J2 0 0 0 1 0 3 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 2 0 0 0 J3 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 J4 3 1 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 1 1 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 1 J5 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 2 0 J6 1 0 0 1 1 0 0 3 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 J7 0 0 2 1 0 1 0 3 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 2 0 0 0 2 0 0 0 0 1 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 J8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 3 0 0 0 0 1 0 0 0 0 0 0 0 0 0 Trong moãi taùm maûng ñeám, coù duy nhaát moät boä ñeám coù trò laø 3. Vò trí cuûa caùc boäñeám ñoù xaùc ñònh caùc bit khoùa trong J1, ..., J8. Caùc vò trí ñoù laø: 47, 5, 19, 0, 24, 7, 7, 49.Chuyeån caùc soá nguyeân ñoù sang daïng nhò phaân, ta nhaän ñöôïc J1, ..., J8: J1 = 101111 J2 = 000101 J3 = 010011 J4 = 000000 J5 = 011000 J6 = 000111 J7 = 000111 J8 = 110001 Baây giôø ta coù theå taïo ra 48 bit khoùa, baèng caùch quan saùt lòch khoùa cho voøng ba. Suyra laø K coù daïng: 0001101 0110001 01?01?0 1?00100 0101001 0000??0 111?11? ?100011vôùi caùc bit kieåm tra ñaõ ñöôïc loaïi boû vaø “?” kyù hieäu bit khoùa chöa bieát. Khoùa ñaày ñuû (trongdaïng thaäp luïc phaân, goàm caû bit kieåm tra) seõ laø:NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 1A624C89520DEC46II.3.2. Thaùm maõ heä DES 6-voøngBaây giôø ta seõ moâ taû vieäc môû roäng yù töôûng treân cho vieäc thaùm maõ treân heä DES 6-voøng. YÙtöoûng ôû ñaây laø löïa choïn moät caùch caån thaän caëp baûn roõ vôùi xaâu x-or ñaëc thuø vaø sau ñoù xaùcñònh caùc xaùc suaát cuûa caùc daõy ñaëc thuø cuûa caùc xaâu x-or qua caùc voøng laäp maõ. Baây giôø tacaàn ñònh nghóa moät khaùi nieäm quan troïng sau.Ñònh nghóa 3.5: Cho n ≥ 1 laø soá nguyeân. Ñaëc tröng cuûa voøng thöù n laø moät danh saùch caùcdaïng L0’, R0’, L1’, R1’, p1, ..., Ln’, Rn’, pnthoûa maõn caùc ñieàu kieän sau:1. Li’ = Ri-1’ vôùi 1 ≤ i ≤ n2. Cho 1 ≤ i ≤ n vaø Li-1, Ri-1 vaø L*i-1, R*i-1 laø ñaõ ñöôïc choïn sao cho Li-1 ⊕ L*i-1 = L’i-1 vaø Ri-1 ⊕ R*i-1 = R’i-1. Giaû söû Li, Ri vaø Li* , Ri* laø tính ñöôïc nhôø vieäc aùp duïng moät voøng laäp maõ DES. Khi ñoù xaùc suaát ñeå Li ⊕ L*i = Li’ vaø Ri ⊕ R*i = Ri’ chính xaùc baèng pi. (Chuù yù laø, xaùc suaát naøy ñöôïc tính treân taát caû caùc boä coù theå coù cuûa J = J1...J8) . Xaùc suaát ñaëc tröng ñöôïc ñònh nghóa baèng tích p = p1 × ...× pn.Nhaän xeùt: Giaû söû ta choïn L0, R0 vaø L0*, R0* sao cho L0 ⊕ L0* = L0’ vaø R0 ⊕ R0*= R0’ vaøta aùp duïng n voøng laäp maõ cuûa DES, nhaän ñöôïc L1. ..., Ln vaø R1, ..., Rn. Khi ñoù ta khoâng theåñoøi hoûi xaùc suaát ñeå Li ⊕ Li* = Li’ vaø Ri ⊕ Ri* = Ri’ cho taát caû i ( 1 ≤ i ≤ n) laø p1 × ...× pn.Bôûi vì caùc boä -48 trong lòch khoùa K1, ..., Kn khoâng phaûi laø ñoäc laäp laãn nhau. (Neáu n boä-48naøy ñuôïc choïn ñoäc laäp moät caùch ngaãu nhieân, thì ñieàu xaùc nhaän laø ñuùng). Nhöng ta seõ coiraèng p1 × ... × pn chính xaùc laø xaùc xuaát ñoù.Ta coøn caàn xaùc nhaän laø, caùc xaùc suaát pi trong ñaëc tröng laø caùc caëp baûn roõ ñöôïc xaùc ñònhtuøy yù (nhöng coá ñònh) ñöôïc ñaëc taû baèng xaâu x-or, vôùi 48 bit khoùa cho moät voøng laäp maõDES laø coù 248 khaû naêng. Do ñoù vieäc thaùm maõ seõ nhaèm vaøo vieäc xaùc ñònh khoùa coá ñònh(nhöng chöa bieát). Do ñoù caàn coá choïn caùc baûn maõ ngaãu nhieân (nhöng chuùng coù caùc xaâu x-or ñöôïc ñaëc taû), hy voïng raèng caùc xaùc suaát ñeå caùc xaâu x-or trong n voøng laäp maõ truøng hôïpvôùi caùc xaâu x-or, ñöôïc ñaëc taû trong ñaëc tröng, töøng ñoâi moät p1, ..., pn töông öùng.Trong ví duï sau ñaây, ta seõ trình baøy ñaëc tröng voøng 1 ñeå laøm cô sôû cho vieäc thaùm maõ DESba voøng trong hình sau (nhö ôû treân, ta seõ söû duïng caùch bieåu dieãn theo heä thaäp luïc phaân). L’0 = baát kyø R’0 = 0000000016 L’1 = 0000000016 R’1 = L’0 p=1 Ta cuõng seõ moâ taû moät ñaëc tröng voøng 1 khaùc nhö sau L’0 = 0000000016 R’0 = 6000000016 L’1 = 6000000016 R’1 = 0080820016 p = 14/64NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DESTa haõy xeùt ñaëc tröng sau moät caùch chi tieát hôn. Khi f(R0, K1) vaø f(R0*, K1) ñöôïc tính, böôùcñaàu tieân laø môû roäng R0 vaø R0*. Xaâu x-or keát quaû cuûa hai môû roäng laø: 001100...0Töùc laø xaâu x-or nhaäp cho S1 laø 001100 vaø caùc xaâu x-or cho baûy S-hoäp khaùc ñeàu laø 000000.Caùc xaâu xuaát x-or cho S2 ñeán S8 ñeàu laø 0000. Xaâu xuaát x-or cho S1 laø 1110 vôùi xaùc suaát14/64 (do N1(001100, 1110) = 14). Neân ta nhaän ñöôïc: C’ = 11100000000000000000000000000000vôùi xaùc suaát 14/64. Aùp duïng P, ta nhaän ñöôïc: P(C) ⊕ P(C*) = 00000000100000001000001000000000trong daïng thaäp luïc phaân seõ laø 0080820016. Khi xaâu naøy coäng x-or vôùi L0’, ta nhaän ñöôïcR1’ vôùi xaùc suaát 14/64. Do ñoù L1’ = R0’. Vieäc thaùm maõ DES saùu voøng döïa treân ñaëc tröng ba voøng ñöôïc cho trong hình sau.Trong thaùm maõ 6-voøng, ta baét ñaàu vôùi L0R0. L0*R0*, L6R6 vaø L6*R6*, maø ta phaûi choïn baûnroõ sao cho L0’= 4008000016 vaø R.0’= 0400000016, ta coù theå bieåu dieãn R0 nhö sau: L0’ = 4008000016 R0’ = 0400000016 L1’ = 0400000016 R1’ = 0000000016 p = 1/4 L2’ = 0000000016 R2’ = 0400000016 p = 1 L3’ = 0400000016 R3’ = 4008000016 p = 1/4 R6 = L5 ⊕ f(R5, K6) = R4 ⊕ f(R5, K6) = L3 ⊕ f(R3, K4) ⊕ f(R5, K6)R6* cuõng coù theå bieåu dieãn töông töï, ta coùR0’ = L3’ ⊕ f(R3, K4) ⊕ f(R3*, K4) ⊕ f(R5, K6) ⊕ f(R5*, K6) (4)(Ñeå yù laø töông töï nhö thaùm maõ 3-voøng)R6’ laø ñöôïc bieát. Töø ñaëc tröng ta tính L3’ = 0400000016 vaø R3’ = 4008000016 vôùi xaùc suaát1/16. Neáu nhö vaäy, thì xaâu nhaäp x-or cho S-hoäp trong voøng 4 coù theå tính ñöôïc nhôø haømmôû roäng phaûi laø: 001000000000000001010000...0Caùc xaâu x-or cho S2, S5, S6, S7 vaø S8 taát caû ñeàu baèng 000000, vaø vì theá xaâu xuaát x-or laø0000 cho taát caû naêm S-hoäp ñoù trong voøng 4. Ñieàu naøy coù nghóa laø, ta coù theå tính ñöôïc caùcxaâu xuaát x-or cho naêm S-hoäp ñoù trong voøng 6 nhôø phöông trình (4). Do ñoù giaû söû ta tính: C1’C2’C3’C4’C5’C6’C7’C8’ = P-1(R6’ ⊕ 04000000)moãi Ci laø xaâu bit coù ñoä daøi 4. Khi ñoù vôùi xaùc suaát 1/16, thì seõ daãn ñeán laø C2’, C5’, C6’, C7’vaø C8’ töông öùng laø caùc xaâu x-or xuaát cuûa S2, S5, S6, S7 vaø S8 trong voøng 6. Caùc xaâu nhaäpcho caùc S-hoäp ñoù trong voøng 6 coù theå tính ñöôïc laø E2, E5, E6, E7 vaø E8; vaø E2*, E5*, E6*, E7*vaø E8*, vôùi E1E2E3E4E5E6E7E8 = E(R5) = E(L6)vaø E1*E2*E3*E4*E5*E6*E7*E8* = E(R5*) = E(L6*)coù theå tính ñöôïc töø caùc baûn roõ nhö sau:NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Input: L0R0, L0*R0*, L6R6 vaø L6*R6*; vôùi L0’ = 4008000016 vaø R0’ = 0400000016. 1. Tính C’ = P-1(R6’ ⊕ 0400000016) 2. Tính E = E(L6) vaø E* = E(L6*) 3. for j ∈ {2,5,6,7,8} do tính testj( Ej, Ej*, Cj’) Ta cuõng seõ xaùc ñònh 30 bit khoùa trong J2, J5, J6, J7 vaø J8 nhö trong thaùm maõ 3-voøng.Baøi toaùn, ñeå xaâu xuaát x-or giaû ñònh cho voøng 6 laø chính xaùc chæ vôùi xaùc suaát 1/16. Coøn15/16 phaàn coøn laïi ta seõ thöôøng nhaän ñöôïc nhöõng xaâu voâ duïng ngaãu nhieân hôn laø caùc bitkhoùa.Ñònh nghóa 3.6: Giaû söû L0 ⊕ L0* = L0’ vaø R0 ⊕ R0*= R0’. Ta noùi raèng, caëp baûn roõ L0R0 vaøL0* R0* laø ñuùng (right) öùng vôùi ñaëc tröng neáu Li ⊕ Li* = Li’ vaø Ri ⊕ Ri*= Ri’ cho moïi i, 1 ≤ i≤ n. Caëp traùi vôùi caëp ñöôïc ñònh nghóa goïi laø caëp sai (wrong).Ta mong raèng, khoaûng 1/16 soá caëp cuûa ta laø ñuùng, coøn caùc caëp coøn laïi laø caëp sai öùng vôùiñaëc tröng voøng ba cuûa ta.Chieán löôïc cuûa ta laø tính Ej. Ej* vaø Cj’nhö ñaõ moâ taû ôû treân vaø sau ñoù xaùc ñònh testj(Ej, Ej*,Cj’) vôùi j = 2,5,6,7,8. Neáu ta baét ñaàu vôùi moät caëp ñuùng, thì thì caùc bit khoùa chính xaùc chomoãi Jj seõ naèm trong taäp testj. Neáu caëp laø sai, thì trò Cj’ seõ khoâng ñuùng, vaø ñoù laø nguyeân doñeå giaû ñònh raèng, moãi taäp testj thöïc chaát laø ngaãu nhieân.Ta coù theå nhaän ra caëp ñuùng theo phöông phaùp sau: Neáu ⎮testj⎮= 0, vôùi baát kyø j∈{2,5,6,7,8}, khi ñoù ta taát yeáu coù ñöôïc caëp ñuùng. Baây giôø cho moät caëp sai, ta coù theå hyvoïng raèng, xaùc suaát ñeå ⎪testj⎪= 0 cho moät j cuï theå laø xaáp xæ 1/5. Ñoù laø lyù do ñeå giaû ñònh laø,Nj(Ej’, Cj’) = ⎪testj⎪ vaø nhö ñaõ nhaän xeùt töø tröôùc, xaùc suaát ñeå Nj(Ej’, Cj’) = 0 laø xaáp xæ 1/5.Xaùc suaát ñeå caû naêm testj ñeàu döông laø vaøo khoaûng 0.85 ≈ 0.33, quaû vaäy xaùc suaát ñeå ít nhaátmoät testj baèng 0 laø vaøo khoaûng 0.67. Neân ta coù khoaûng 2/3 soá caëp laø sai, nhôø vaøo moätnhaän xeùt ñôn giaûn, ñöôïc goïi laø pheùp loïc (filtering operation). Tyû soá cuûa caùc caëp ñuùng treâncaùc caëp coøn laïi sau pheùp loïc laø vaøo khoaûng: 1 16 =1 6 1 16 + 15 16 × 1 3Ví duï 3.4: Giaû söû ta coù caëp baûn roõ - baûn maõ sau: Baûn roõ Baûn maõ 86FA1C2B1F51D3BE 1E23ED7F2F553971 C6F21C2B1B51D3BE 296DE2B687AC6340Chuù yù laø, L0’ = 4008000016 vaø R0’ = 0400000016. Xaâu nhaäp vaø xaâu xuaát cuûa S-hoäp chovoøng 6 ñöôïc tính nhö sau:NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES j Ej Ej* Cj’ 2 111100 010010 1101 5 111101 111100 0001 6 011010 000101 0010 7 101111 010110 1100 8 111110 101100 1101Khi ñoù caùc taäp testj seõ laø nhö sau: j testj 2 14, 15,26, 30, 32, 33, 48, 52 5 6 7, 24, 36, 41, 54, 59 7 8 34, 35, 48, 49Ta thaáy raèng, hai taäp test5 vaø test7 laø roãng , neân caëp naøy laø caëp sai vaø noù bò loaïi boû baèngpheùp loïc.Baây giôø giaû söû ta coù caëp sao cho ⎪testj⎪> 0 vôùi j = 2,5,6,7,8 laø nhöõng taäp coøn laïi sau pheùploïc.(Bôûi vì ta khoâng bieát ñöôïc laø caëp naøo ñuùng, caëp naøo sai.) Ta noùi raèng, xaâu bit J2J5J6J7J8ñoä daøi 30 laø ñöôïc ñeà xuaát bôûi caëp neáu Jj ∈ testj vôùi j = 2,5,6,7,8. Soá caùc caëp ñöôïc ñeà xuaátlaø: ∏ test j∈ 2 , 5, 6 , 7 , 8 j Ñoù laø bình thöôøng vôùi soá xaâu bit ñöôïc ñeà xuaát laø khaù lôùn. (Chaúng haïn. lôùn hôn80000)Giaû söû, ta laäp baûng cho taát caû caùc xaâu ñöôïc ñeà xuaát nhaän ñöôïc töø N caëp, maø khoâng bò loaïibôûi pheùp loïc. Vôùi moãi caëp ñuùng, thì xaâu bit ñuùng J2J5J6J7J8 seõ laø xaâu ñöôïc ñeà xuaát. Xaâu bitñuùng seõ ñöôïc tính khoaûng 3N/16 laàn. Xaâu bit sai thöôøng xuaát hieän ít hôn, bôûi vì chuùngxuaát hieän ngaãu nhieân vaø coù khoaûng 230 khaû naêng. (Laø moät soá raát lôùn.) Ta nhaän ñöôïc moät baûng cöïc lôùn taát caû caùc xaâu ñöôïc ñeà xuaát, neân ta söû duïng moätthuaät toaùn chæ ñoøi hoûi moät khoâng gian vaø thôøi gian ít nhaát. Ta coù theå maõ hoùa baát kyø moättaäp testj naøo thaønh moät veùc tô Tj coù ñoä daøi 64, vôùi toïa ñoä thöù i cuûa Tj ñöôïc ñaët baèng 1 (0≤i≤63), neáu xaâu bit ñoä daøi 6 laø bieåu dieãn cuûa i ôû trong taäp testj; vaø toïa ñoä thöù i ñöôïc ñaëtbaèng 0 trong tröôøng hôïp ngöôïc laïi ( ñieàu naøy gioáng nhö maûng caùc boä ñeám maø ta ñaõ söûduïng trong thaùm maõ DES ba voøng). Vôùi moãi caëp coøn laïi, ta xaây döïng caùc veùc tô nhö treân vaø goïi chuùng laø Tji,j=2,5,6,7,8; 1 ≤ i≤ N. Vôùi I ⊆ {1, ..., N} ta noùi raèng I laø chaáp nhaän ñöôïc (allowable) neáuvôùi moãi j ∈ {2,5,6,7,8} coù ít nhaát moät toïa ñoä baèng ⎪I⎪ trong veùc tôNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES ∑T i∈ I j i Neáu caëp thöù i laø caëp ñuùng cho moãi i∈I, thì taäp I laø chaáp nhaän ñöôïc. Do ñoù ta choraèng taäp chaáp nhaän ñöôïc coù kích thöôùc (xaáp xæ) 3N/16, laø taäp ñeà xuaát vaø ta hy voïng laø chægoàm caùc bit khoùa ñuùng chöù khoâng coù caùc xaâu khaùc. Ñieàu naøy laøm ñôn giaûn hoùa cho vieäcxaây döïng taát caû caùc taäp chaáp nhaän ñöôïc I baèng moät thuaät toaùn ñeä qui.II.3. 3 Caùc thaùm maõ vi sai khaùc Phöông phaùp thaùm maõ vi sai coøn coù theå aùp duïng ñeå thaùm caùc heä DES nhieàu voønghôn. Vôùi heä DES 8-voøng ñoøi hoûi 214 baûn roõ choïn vaø caùc heä 10-, 12-, 14- vaø 16-voøng ñoøihoûi coù töông öùng 224, 231, 239 vaø 247 baûn maõ choïn. Neân noùi chung laø khaù phöùc taïp.Caùc kyõ thuaät thaùm maõ vi sai ñöôïc Biham vaø Shamir phaùt trieån. Caùc phöông phaùp thaùm maõDES khaùc ñaõ ñöôïc Matsui söû duïng nhö laø thaùm maõ tuyeán tính.III. HEÄ MAÕ DES 3 VOØNG Chöông trình goàm hai phaàn: • Phaàn Giao Dieân (chöùa trong thö muïc GiaoDien): Coù chöùc naêng xöû lyù giao dieän. • Phaàn Xöû Lyù (chöùa trong thö muïc XuLy): coù chöùc naêng hoä trôï caùc haøm xöû lyù.III.1 Giao Dieän ( Package GiaoDien). a. Maøn hình chính (Mainform.vb) Form laäp maõ vaø giaûi maõ DES(Des.vb)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DESSource code moät soá haøm chính trong form giai maõ DesImports System.IOPublic Class des Inherits System.Windows.Forms.Formkhai bao bien Dim str As String Dim s(7) As DataTable Dim ip() As String Dim iptru() As String Dim e() As String Dim p() As String Dim pc1() As String Dim pc2() As String Dim daykhoa(15) As String Dim x As String Dim daynhap(29) As StringNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Dim daybanma(29) As Stringkhoi tao 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) = 0NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 9NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 dgs0.DataSource = s(0) End SubHam khoi tao s1 Sub khoitao_s1() Dim i As Integer s(1) = New DataTable For i = 0 To 15NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 15NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 13NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 dgs1.DataSource = s(1) End SubHam khoi tao 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)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 5NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 8NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 dgs2.DataSource = s(2) End SubHaøm khôûi taïo s3Sub 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) = 0NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 10NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 12NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES s(3).Rows(3).Item(13) = 7 s(3).Rows(3).Item(14) = 2 s(3).Rows(3).Item(15) = 14 dgs3.DataSource = s(3) End SubHaøm khôûi taïo 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) = 3NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 7NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 dgs4.DataSource = s(4) End SubHaøm khôûi taïo S5NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 10NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 1NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 dgs5.DataSource = s(5) End SubHaøm khôûi taïo 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)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 1NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 13NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubHaøm khôûi taï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) = 13NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 0NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 15NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubKhôûi taïo giaù trò bieá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 SubCaét bit cuoái Function catbitcuoi(ByVal k As String) As String dua vao 64 bit tra ra 56 bitNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 FunctionHoaù vò pc2 Function hvpc2(ByVal str As String) As String Dim tam(47) As Char Dim i As Integer For i = 0 To 47NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 FunctionHaøm taïo daõy khoaù 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)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubMoät soá haøm xöû lyù chuoãi nhaäpNhaäp nhò phaâ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 += " "NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 FunctionMoät soá haøm maõ hoaùHaøm hoaùn vò ip Function hvip(ByVal x As String) As String Dim tam(63) As Char Dim i As IntegerNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES For i = 0 To 63 tam(i) = x.Substring(ip(i) - 1, 1) Next Return tam End FunctionHaøm hoaù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 FunctionHaøm hoaù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)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Next Return tam End FunctionMaõ hoaù 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 jNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Next i Dim v As String = hviptru(r(15) + l(15)) y += v Next k Return y End FunctionHaø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 FunctionNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DESHaøm thaäp phaâ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 FunctionHaøm nhò phaâ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=a2 Next Array.Reverse(tam) Return tam End FunctionHaøm ñoå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 IntegerNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 Regionmoät soá haøm duøng ñeå giaûi maõtaïo baûn maõ nhò phaâ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) = tamNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Next i End SubHaøm giaûi maõ 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 kNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Return x End FunctionMoät soá söï kieän giuùp cho vieäc thöïc thi Private Sub des_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load khoitao() End Sub Private Sub btlapma_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btlapma.Click khoitao() If txtchuoinhap.Text = "" Then MessageBox.Show("B n hãy nh p vào chu ic n mã hoá") 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 AsSystem.EventArgs) Handles btthoat.Click Me.Close() End SubNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Private Sub btgiaima_Click(ByVal sender As System.Object, ByVal e AsSystem.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 ic n gi i mã") txtbanma.Focus() Return End If txtdaykhoa.Text = "" taodaykhoa() txtbanrobit.Text = giaima() txtbanro.Text = doirachu(giaima()) End SubEnd ClassForm thaùm maõ Des (thamma.vb)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DESImports System.Windows.FormsPublic Class thammades Inherits System.Windows.Forms.FormKhai baùo moät soá bieán vaø haø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 StringNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 BooleanKhôûi taï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) = 8NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 8NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 13NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES End SubKhôûi taïo haø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) = 5NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 12NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubKhôûi taïo haøm s2 Sub khoitao_s2() Dim i As Integer s(2) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumnNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 4NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 10NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubKhôûi taïo haø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) = 7NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 1NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 9NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubKhôûi taïo haø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) = 6NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 11NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 3NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES End SubKhôûi taïo haø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) = 5NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 4NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubKhôûi taïo haøm s6 Sub khoitao_s6() Dim i As Integer s(6) = New DataTable For i = 0 To 15 Dim col As DataColumn = New DataColumnNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 9NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 11NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubKhôûi taïo haø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) = 13NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 0NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 15NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubKhôûi taïo hoaù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) = 13NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 31NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES hve(46) = 32 hve(47) = 1 End SubKhôûi taïo hoaù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) = 3NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubKhôûi taïo hoaù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) = 4NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 42NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES hvpc2(44) = 50 hvpc2(45) = 36 hvpc2(46) = 29 hvpc2(47) = 32 End SubKhôûi taïo hoaù 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) = 27NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 29NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES hvpc1(49) = 21 hvpc1(50) = 13 hvpc1(51) = 5 hvpc1(52) = 28 hvpc1(53) = 20 hvpc1(54) = 12 hvpc1(55) = 4 End SubKhôûi taïo hoaù 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) = 54NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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) = 19NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubKhôûi taïo caùc haøm Sub khoitao() khoitao_s0() khoitao_s1() khoitao_s2() khoitao_s3() khoitao_s4() khoitao_s5() khoitao_s6()NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES khoitao_s7() khoitao_hve() khoitao_hvp() khoitao_hvpc2() khoitao_hvpc1() khoitao_hvip() End Subcaùc haøm hoaùn vòHaøm hoaù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 FunctionHaøm hoaù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 Haøm hoaùn vò e Function hoanvi_e(ByVal r As String) As StringNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 Haøm hoaù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 Haøm hoaù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 Haøm hoaùn vò pc1 Function hoanvi_pc1(ByVal k As String) As String Dim tam(63) As CharNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 Haøm hoaù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 Haøm hoaùn vò pc2 Function hoanvi_pc2(ByVal str As String) As String Dim tam(47) As Char Dim i As IntegerNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES For i = 0 To 47 tam(i) = str.Substring(Integer.Parse(hvpc2(i) - 1), 1) Next Return tam End Function Haøm hoaù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 Functiongan va kiem tra du lieu nhaphaøm gaùn döõ lieä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 - 1NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 ub 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 pl ") Return False End Try End Function Haøm kieåm tra Function kiemtra() As Boolean Dim i As Integer For i = 0 To n If banro(i) = "" Then MessageBox.Show("baïn nhaäp chöa ñuû " & (i + 1)) Return False End If If banro(i).Length <> m Then MessageBox.Show( (i + 1) & m ) Return False End If NextNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 <= nIf banro(i).Substring(m / 2, m / 2) <> banro(i + 1).Substring(m / 2, m / 2)Then MessageBox.Show("D li ub 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öû lyù e, e sao, e phaåy Sub xuli_e_esao_ephay() Dim i As Integer e(0)=NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES"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öû lyù c phaå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)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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)).ToStringNext cphay(i) = hoanvi_ptru(cphay(i)) Next cphay(0) = "10010110010111010101101101100111" cphay(1) = "10011100100111000001111101010110" cphay(2) = "11010101011101011101101100101011" End Subcac 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 IntegerNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 CharNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES For i = 0 To n - 1 tam(i) = (a Mod 2).ToString a=a2 Next Array.Reverse(tam) Return tam End FunctionHaøm taïo taä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 FunctionNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DESHaøm taïo khoaù voø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 = FalseNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Exit Function End If khoav3 += binary(vitrimax, 6) Next txtkhoav3.Text = khoav3 Return khoav3 End FunctionHaøm Xöû lyù khoaù 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 FunctionHaøm taïo chuoãi khoaù Sub taochuoikhoa(ByVal c As String) If flag = False Then Exit SubNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SubHaøm taïo töøng khoaù Function taotungkhoa(ByVal a As String, ByVal b As String) AsString 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 FunctionHaøm dòch phaû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, ByValcphay As String, ByVal s As DataTable) As String()NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 FunctionMoät soá Haøm cho xöû lyù söï kieän Private Sub btthamma_Click(ByVal sender As System.Object,ByVal ee As System.EventArgs) Handles btthamma.Click ReDim banro(n)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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, ByValee 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.LoadNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 Haøm caét bit cuoái Function catbitcuoi(ByVal k As String) As String dua vao 64 bit trara 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)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 FunctionHaøm taïo daõy khoaù 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))NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Next i End SubHaøm xöû lyù chuoãi nhaä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 FunctionHaøm maõ hoaù 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)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 FunctionHaøm taïo haø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)NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES Next Return hoanvi_p(c) End FunctionHaøm ñoå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 - 1NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 FunctionChöõ caù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"NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 FunctionHaøm chuyeån maõ asc Function asc(ByVal a As Char) Select Case a Case "0" asc = 0 Case "1" asc = 1 Case "2"NGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES 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 SelectNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES End FunctionHaøm choïn khoaù 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 AsSystem.Object, ByVal e As System.EventArgs) Handlestxtbanma.TextChangedNGOÂ THÒ TUYEÁT HAØ – T012825
    • ÑOÀ AÙN BAÛO MAÄT THOÂNG TIN HEÄ MAÕ DES btthamma.Enabled = True lbthongbao.Text = "" End SubEnd ClassNGOÂ THÒ TUYEÁT HAØ – T012825