intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Trộn lẫn thành phần Hardware và Software part 10

Chia sẻ: AJFGASKJHF SJHDB | Ngày: | Loại File: PDF | Số trang:8

77
lượt xem
11
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Khóa (key): là khóa dùng trong việc mã hóa và giải mã 2.1-Phương pháp Caesar : 2.1.1- Nguyên tắc : Trong sơ đồ Caesar mỗi ký tự được thay thế bằng ký tự đứng sau nó k ký tự trong bảng ký tự được xếp từ A..Z í dụ: Dùng bảng ký tự với k= 4,ta có thể mã hóa bản thông báo ‘HELLO’ như sau: Bản rõ : H E L L O Bản mã: L I P P S Để giải mã người ta dùng khóa k =4 và phục hồi lại bản rõ bằng cách dùng phép...

Chủ đề:
Lưu

Nội dung Text: Trộn lẫn thành phần Hardware và Software part 10

  1. http:// www.diachiweb.com Khoùa (key): laø khoùa duøng trong vieäc maõ hoùa vaø giaûi maõ · 2.1-Phöông phaùp Caesar : 2.1.1- Nguyeân taéc : Trong sô ñoà Caesar moãi kyù töï ñöôïc thay theá baèng kyù töï ñöùng sau noù k kyù töï trong baûng kyù töï ñöôïc xeáp töø A..Z Vòtrí 1 2 3 4 5 6 7 8 9 10 11 12 Kítöï A B C D E F G H I J K L 13 14 15 16 17 18 19 20 21 22 23 24 25 26 M N O P Q R S T U V W X Y Z Ví duï: Duøng baûng kyù töï vôùi k= 4,ta coù theå maõ hoùa baûn thoâng baùo ‘HELLO’ nhö sau: Baûn roõ : H E L L O Baûn maõ: L I P P S Ñeå giaûi maõ ngöôøi ta duøng khoùa k =4 vaø phuïc hoài laïi baûn roõ baèng caùch duøng pheùp bieán ñoåi ngöôïc laïi. 2.1.2- Giaûi thuaät vieát baèng ngoân ngöõ giaû: · Maõ hoùa : Input : Chuoåi string _in caàn maõ hoùa K: khoùa /*khoaûng caùch vò trí kyù töï ñöùng sau*/ Output: Chuoåi string_out ñaõ maõ hoùa Procedure MAHOACAESAR; Begin Gaùn bieán string_out baèng roãng; /*duøng chöùa keát quaû taïm thôøi khi maõ hoùa */ While chöa heát chuoåi string_in do Begin -Ñoïc kí töï trong chuoåi string_in -Tìm vò trí kí töï vöøa ñoïc ñöôïc trong baûng kí töï -Coäng vò trí vöøa tìm ñöôïc vôùi k -Tìm kí töï öùng vôùi vò trí vöøa tìm ñöôïc trong baûng kí töï -Noái kí töï vöø tìm ñöôïc vaøo chuoài string_out end End. · Giaûi maõ : Input : Chuoåi string_in caàn giaûi maõ . K:khoùa /* khoaûng caùch vò trí kyù töï ñöùng sau ñaõ thay theá */. Output :Chuoåi string_out ñaõ giaûi maõ . Procedure GIAIMACAESAR; Begin Gaùn bieán string_out baèng roãng; /*duøng chöùa keát quaû taïm thôøi khi maõ hoùa */ While chöa heát chuoåi string_in do Begin -Ñoïc kí töï trong chuoåi string_in -Tìm vò trí kí töï vöøa ñoïc ñöôïc trong baûng kí töï -Tröø vò trí vöøa tìm ñöôïc vôùi k
  2. http:// www.diachiweb.com -Tìm kí töï öùng vôùi vò trí vöøa tìm ñöôïc trong baûng kí töï -Noái kí töï vöø tìm ñöôïc vaøo chuoài string_out end End. 2.2 Phöông phaùp KEYWORD : 2.2.1- Nguyeân taéc: Trong phöông phaùp KEYWORD töøng kyù töï cuûa baûn roõ seõ ñöôïc coäng theâm vaøo lieân tieáp theo töøng kyù töï moät cuûa töø khoùa.Pheùp coäng ñöôïc thöïc hieän theo modulo 26 . 2.2.2-Ví duï : Giaû söû baûng kyù töï vaø vò trí cuûa chuùng cho bôûi : Vòtrí 1 2 3 4 5 6 7 8 9 10 11 12 Kítöï A B C D E F G H I J K L 13 14 15 16 17 18 19 20 21 22 23 24 25 26 M N O P Q R S T U V W X Y Z Vôùi töø khoùa ‘KEY’ thì thoâng baùo ‘HELLO’ ñöôïc maõ hoùa nhö sau : Baûn roõ : HELLO Töø khoùa : KEYKE Baûn maõ : SJKWT Ngöôøi nhaän cuõng phaûi bieát töø khoùa vaø phuïc hoài laïi baûn roõ baèng caùch tröø töøng kyù töï cuûa baûn maõ cho töøng kí töï cuûa töø khoùa. 2.2.3-Giaûi thuaät :vieát baèng ngoân ngöõ giaû · Maõ hoùa: Input chuoåi string_in caàn maõ hoùa Khoùa: keyword Output chuoåi string_out ñaõ maõ hoùa Procedure MAHOA_KEYWORD Begin Gaùn string_out:=roång; Gaùn j:=1; While chöa heát chuoåi string_in do Begin /*caét choåi string_in ra töøng ñoaïn */ /*hieän pheùp coäng vôùi khoùa*/ For i:=1 to chieàu daøi cuûa khoùa do Begin -Ñoïc töøng kí töï string_in(i*j) cuûa chuoåi -Tìm vò trí cuûa string_in(i*j) trong baûng kí töï -Tìm vò trí cuûa khoùa(i) trong baûng kí töï -Coäng 2 vò trí vöøa tìm ñöôïc -Tìm kí töï öùng vôùi keát quaû cuûa pheùp coäng trong baûng kí töï -Noái kí töï vöaø tìm ñöôïc vaøo string_out end; gaùn j=j+1; end; · Giaûi maõ :
  3. http:// www.diachiweb.com Input: chuoåi string_in caàn maõ hoùa Khoùa: keyword; Output chuoåi string ñaõ giaûi maõ ; Procedure GIAIMA_KEYWORD Begin Gaùn string_out:=roång; Gaùn j:=1; While chöa heát chuoåi do Begin /*caét choåi string_in ra töøng ñoaïn ñeå thöïc */ /*hieän pheùp coäng vôùi khoùa*/ For i:=1 to chieàu daøi cuûa khoùa do Begin -Ñoïc kí töï string_in(i*j) cuûa chuoåi -Tìm vò trí cuûa string_in(i*j) trong baûng kí töï -Tìm vò trí cuûa khoùa(i) trong baûng kí töï -Tröø 2 vò trí vöøa tìm ñöôïc -Tìm kí töï öùng vôùi keát quaû cuûa pheùp tröø trong baûng kí töï -Noái kí töï vöaø tìm ñöôïc vaøo string_out end; gaùn j:=j+1; end; 2.3.Phöông phaùp duøng baûng thay theá : Moät phöông phaùp khaùc kheùo leùo hôn laø duøng baûng thay theá . 2.3.1-Nguyeân taéc : Ta ñònh nghóa 2 baûng kyù töï : · Baûng 1 chöùa caùc kyù töï goác (kyù töï trong baûn roõ ). · Baûng 2 chöùa caùc kyù töï thay theá (kyù töï seõ ñöôõc thay ñeå thaønh baûn maõ ). Caùch thöïc hieän :Ñoïc töøng kyù töï trong baûn roõ ,doø vaøo baûng 1 tìm kyù töï thay theá töông öùng trong baûng 2 . Gheùp caùc kyù töï laáy ñöôïc seõ taïo thaønh baûn maõ . 2.3.2-Ví duï: Kyù töï goác A B C D E F G H I J K Kyù töï thay theá Q W E R T Y U I O P A L M N O P Q R S T U V W X Y Z S D F G H J K L Z X C V B N M Thoâng baùo ‘HELLO’ seõ ñöôïc maõ hoaù nhö sau Baûn roõ H E L L O Baûn maõ I T S S G Ñeå giaûi maõ ngöôøi nhaän cuõng phaûi bieát baûng kyù töï thay theá vaø laøm ngöôïc laïi .
  4. http:// www.diachiweb.com 2.3.3- Giaûi thuaät :Giaûi thuaät ñöôïc vieát baèng ngoân ngöõ giaû Maõ hoùa : · Input : Chuoåi string_in caàn maõ hoùa . Baûng kyù töï thay theá ,baûng kí töï goác Output :Chuoåi string_out ñaõ maõ hoùa . Procedure MAHOATHAYTHEÁ Begin Gaùn string_out:=roång; While chöa heát chuoåi string_in do begin -Ñoïc töøng kí töï trong chuoåi string_in -Tìm vò trí cuûa kí töï vöøa ñoïc ñöôïc trong baûng kí töï -Tìm kí töï thay theá öùng vôùi vò trí vöøa tìm ñöôïc -Noái kí töï thay theá vaøo chuoåi string_out end; · Giaûi maõ: Input : Chuoåi string_in caàn giaûi maõ, Baûng kyù töï thay theá,baûng kí töï goác Output :Chuoåi string_out ñaõ giaûi maõ . Procedure GIAIMA_THAYTHE Begin Gaùn string_out:=roång; While chöa heát chuoåi string_in do begin -Ñoïc töøng kí töï trong chuoåi string_in -Tìm vò trí cuûa kí töï vöøa ñoïc ñöôïc trong baûng kí töï thay theá -Tìm kí töï goác öùng vôùi vò trí vöøa tìm ñöôïc -Noái kí töï goác vaøo chuoåi string_out end; 2.4.Phöông phaùp hoaùn vò : 2.4.1- nguyeân taéc : Phöông phaùp naày saép xeáp caùc kyù töï trong baûn roõ laïi theo moät qui luaät hoaùn vò naøo ñoù .Vieäc saép xeáp laïi seõ laøm thay ñoåi toaøn boä caáu truùc cuûa thoâng baùo tröôùc vaø baûn roõ sau khi ñöôïc saép xeáp seõ thaønh baûn maõ . 4.2- Ví duï : Cho khoùa hoaùn vò nhö sau : 312 ,ta chia thoâng baùo ‘HELLO’ ra thaønh töøng khoái (xaâu kyù töï con) coù ñoä daøi 3 kyù töï .luùc naày thoâng baùo ‘HELLO’ ñöôïc maõ hoùa nhö sau Vò trí ban ñaàu 123 Vò trí sau hoaùn vò 3 1 2. Vò trí : 1 2 3 1 2 3 Baûn roõ : H E L L O‘‘ Baûn maõ L H E ‘‘ LO Trong ñoù ‘ ‘ laø kyù töï khoaûng traéng theâm vaøo cho ñuû soá nguyeân laàn chieàu daøi khoaù hoaùn vò . 2.4.3- Giaûi thuaät : Giaûi thuaät ñöôïc vieát baèng ngoân ngöõ giaû. · MAÕ HOÙA : Input :Chuoåi string_in caàn maõ hoùa . Khoaù hoaùn vò /*chuoåi soá khaùc nhau vaøsao cho taäp hôïp caùc soá phaûi coù */ /* thöù töï lieân tieáp*/
  5. http:// www.diachiweb.com Output :Chuoåi string_out ñaõ maõ hoùa Procedure MAHOA_HOANVI Begin Gaùn string_out:=roång; While chöa heát chuoài string_in do Begin -Ñoïc töøng khoái,moãi khoái coù ñoä daøi baèng ñoä daøi cuûa khoùa -Xaùc ñònh vò trí hoaùn vò cho moãi kí töï trong moät khoái -Ñoïc kí töï öùng vôùi vò trí xaùc ñònh ñöôïc trong khoùa -Noái kí töï vöøa ñoïc ñöôïc vaøo string_out End End · Giaûi maõ:töông töï phaàn maõ hoùa 3.1.Löu ñoà giaûi thuaät maõ hoùa Begin nhaäp:bang_ro nhaäp:Khoa bang_ma:=’’ n:=length(bang_ro) m:=length(khoa) i:=0
  6. http:// www.diachiweb.com S n mod m = 0 Ñ bang_ro:=bang_ro + ‘ ‘ j:=1 n:=n+1 Bang_ma:=bang_ma + bang_ro((i*m)+(khoa[j])) j:=j+1 S j=m+1 Ñ i:=i + 1 i=n/m S Ñ End Löu ñoà giaûi thuaät maõ hoùa 3.2.Löu ñoà giaûi thuaät giaûi maõ Begin nhaäp:bang_ma nhaäp:Khoa bang_ro:=’’ n:=length(bang_ma) m:=length(khoa) i:=0
  7. http:// www.diachiweb.com Ñoåi khoùa j:=1 Bang_ro:=bang_ro + bang_ma((i*m)+(khoa[j])) j:=j+1 j=m S Ñ i:=i + 1 S i=n/m Ñ End Löu ñoà giaûi thuaät giaûi maõ 3.3.Giaûi thuaät maõ hoùa vieát baèng ngoân ngöõ Pascal Input :bang_ro caàn maõ hoùa . Khoa Output :bang_ma ñaõ maõ hoùa Procedure Ma_hoa_hoan_vi(var bang_ro,bang_ma:string;khoahv:string); Var m,n,k,i,j:integer; Begin n:=length(st); m:=length(khoahv); k:=(n div m) +1; for I :=n +1 to k*n do bang_ro:=bang_ro +’ ’; bang_ma:=’’; for i:=0 to k-1 do for j:=1 to m do begin Val(khoahv[j],so,e);
  8. http:// www.diachiweb.com Bang_ma:=bang_ma +bang_ro[so +(i)*m]; end; end; 3.4.Giaûi thuaät giaûi maõ vieát baèng ngoân ngöõ Pascal Input :bang_ma caàn giaûi maõ, Khoa . Output :bang_ro ñaõ giaûi maõ . Procedure Giai_ma_hoan_vi(var bang_ma,bang_ro:string;khoahv:string); Var m,n,k,i,j:integer; Function doikhoa(khoahv:string):string; {input khoa hoan vi; output khoa hoan vi da duoc doi lai} var tam:string;j,kitu:string[2]; i,n:integer; begin tam:=’’; n:=length(khoahv); for I:=1 to n do begin Str(I,j); Str((pos(j,khoahv)),kitu); Tam:=tam+kitu; end; doikhoa :=tam; end; begin n:=length(bang_ma); m:=length(khoahv); k:=(n div m) +1; khoahv :=doikhoa(khoahv); for i:=0 to k-1 do for j:=1 to m do begin val(khoahv[j],so,l); bang_ro:=bang_ro + bang_ma[so +(i)*m]; end; end;
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2