1. Trang chủ
  2. » Công Nghệ Thông Tin

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

8 334 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 64,16 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

2.1.2- Giải thuật viết bằng ngôn ngữ giả: · Mã hóa : Input : Chuổi string _in cần mã hóa K: khóa /*khoảng cách vị trí ký tự đứng sau*/ Output: Chuổi string_out đã mã hóa Procedure MAH

Trang 1

· 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

Ví 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 biến đổi ngược lại

2.1.2- Giải thuật viết bằng ngôn ngữ giả:

· Mã hóa :

Input : Chuổi string _in cần mã hóa

K: khóa /*khoảng cách vị trí ký tự đứng sau*/

Output: Chuổi string_out đã mã hóa

Procedure MAHOACAESAR;

Begin

Gán biến string_out bằng rỗng; /*dùng chứa kết quả tạm thời khi mã hóa */

While chưa hết chuổi string_in do Begin

-Đọc kí tự trong chuổi string_in

-Tìm vị trí kí tự vừa đọc được trong bảng kí tự

-Cộ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 bảng kí tự

-Nối kí tự vừ tìm được vào chuồi string_out

end

End

· Giải mã :

Input : Chuổi string_in cần giải mã

K:khóa /* khoảng cách vị trí ký tự đứng sau đã thay thế */

Output :Chuổi string_out đã giải mã

Procedure GIAIMACAESAR;

Begin

Gán biến string_out bằng rỗng; /*dùng chứa kết quả tạm thời khi mã hóa */

While chưa hết chuổi string_in do Begin

-Đọc kí tự trong chuổi string_in

-Tìm vị trí kí tự vừa đọc được trong bảng kí tự

-Trừ vị trí vừa tìm được với k

Trang 2

-Tìm kí tự ứng với vị trí vừa tìm được trong bảng kí tự

-Nối kí tự vừ tìm được vào chuồi string_out

end

End

2.2 Phương pháp KEYWORD :

2.2.1- Nguyên tắc:

Trong phương pháp KEYWORD từng ký tự của bản rõ sẽ được cộng thêm vào liên tiếp theo từng ký tự một của từ khóa.Phép cộng được thực hiện theo modulo 26

2.2.2-Ví dụ :

Giả sử bảng ký tự và vị trí của chúng cho bởi :

Với từ khóa ‘KEY’ thì thông báo ‘HELLO’ được mã hóa như sau :

Bản rõ : H E L L O

Từ khóa : K E Y K E

Bản mã : S J K W T

Người nhận cũng phải biết từ khóa và phục hồi lại bản rõ bằng cách trừ từng ký tự của bản mã cho từng kí tự của từ khóa

2.2.3-Giải thuật :viết bằng ngôn ngữ giả

· Mã hóa:

Input chuổi string_in cần mã hóa

Khóa: keyword

Output chuổi string_out đã mã hóa

Procedure MAHOA_KEYWORD

Begin

Gán string_out:=rổng;

Gán j:=1;

While chưa hết chuổi string_in do Begin /*cắt chổi string_in ra từng đoạn */

/*hiện phép cộng với khóa*/

For i:=1 to chiều dài của khóa do Begin

-Đọc từng kí tự string_in(i*j) của chuổi

-Tìm vị trí của string_in(i*j) trong bảng kí tự

-Tìm vị trí của khóa(i) trong bảng kí tự

-Cộng 2 vị trí vừa tìm được

-Tìm kí tự ứng với kết quả của phép cộng trong bảng kí tự

-Nối kí tự vưà tìm được vào string_out

end;

gán j=j+1;

end;

· Giải mã :

Trang 3

Input: chuổi string_in cần mã hóa

Khóa: keyword;

Output chuổi string đã giải mã ;

Procedure GIAIMA_KEYWORD

Begin

Gán string_out:=rổng;

Gán j:=1;

While chưa hết chuổi do Begin /*cắt chổi string_in ra từng đoạn để thực */

/*hiện phép cộng với khóa*/

For i:=1 to chiều dài của khóa do Begin

-Đọc kí tự string_in(i*j) của chuổi

-Tìm vị trí của string_in(i*j) trong bảng kí tự

-Tìm vị trí của khóa(i) trong bảng kí tự

-Trừ 2 vị trí vừa tìm được

-Tìm kí tự ứng với kết quả của phép trừ trong bảng kí tự

-Nối kí tự vưà tìm được vào string_out

end;

gán j:=j+1;

end;

2.3.Phương pháp dùng bảng thay thế :

Một phương pháp khác khéo léo hơn là dùng bảng thay thế

2.3.1-Nguyên tắc :

Ta định nghĩa 2 bảng ký tự :

· Bảng 1 chứa các ký tự gốc (ký tự trong bản rõ )

· Bảng 2 chứa các ký tự thay thế (ký tự sẽ đưỡc thay để thành bản mã )

Cách thực hiện :Đọc từng ký tự trong bản rõ ,dò vào bảng 1 tìm ký tự thay thế tương ứng trong bảng 2 Ghép các ký tự lấy được sẽ tạo thành bản mã

2.3.2-Ví dụ:

Thông báo ‘HELLO’ sẽ được mã hoá như sau

Bản rõ H E L L O

Bản mã I T S S G

Để giải mã người nhận cũng phải biết bảng ký tự thay thế và làm ngược lại

Trang 4

2.3.3- Giải thuật :Giải thuật được viết bằng ngôn ngữ giả

· Mã hóa :

Input : Chuổi string_in cần mã hóa

Bảng ký tự thay thế ,bảng kí tự gốc

Output :Chuổi string_out đã mã hóa

Procedure MAHOATHAYTHẾ

Begin

Gán string_out:=rổng;

While chưa hết chuổi string_in do begin

-Đọc từng kí tự trong chuổi string_in

-Tìm vị trí của kí tự vừa đọc được trong bảng kí tự

-Tìm kí tự thay thế ứng với vị trí vừa tìm được

-Nối kí tự thay thế vào chuổi string_out

end;

· Giải mã:

Input : Chuổi string_in cần giải mã, Bảng ký tự thay thế,bảng kí tự gốc

Output :Chuổi string_out đã giải mã

Procedure GIAIMA_THAYTHE

Begin

Gán string_out:=rổng;

While chưa hết chuổi string_in do begin

-Đọc từng kí tự trong chuổi string_in

-Tìm vị trí của kí tự vừa đọc được trong bảng kí tự thay thế

-Tìm kí tự gốc ứng với vị trí vừa tìm được

-Nối kí tự gốc vào chuổi string_out

end;

2.4.Phương pháp hoán vị :

2.4.1- nguyên tắc :

Phương pháp nầy sắp xếp các ký tự trong bản rõ lại theo một qui luật hoán vị nào đó .Việc sắp xếp lại sẽ làm thay đổi toàn bộ cấu trúc của thông báo trước và bản rõ sau khi được sắp xếp sẽ thành bản mã

4.2- Ví dụ : Cho khóa hoán vị như sau : 312 ,ta chia thông báo ‘HELLO’ ra thành từng khối (xâu ký tự con) có độ dài 3 ký tự lúc nầy thông báo ‘HELLO’ được mã hóa như sau

Vị trí ban đầu 1 2 3

Vị trí sau hoán vị 3 1 2

Vị trí : 1 2 3 1 2 3

Bản rõ : H E L L O ‘ ‘

Bản mã L H E ‘ ‘ L O

Trong đó ‘ ‘ là ký tự khoảng trắng thêm vào cho đủ số nguyên lần chiều dài khoá hoán vị 2.4.3- Giải thuật :

Giải thuật được viết bằng ngôn ngữ giả

· MÃ HÓA :

Input :Chuổi string_in cần mã hóa

Khoá hoán vị /*chuổi số khác nhau vàsao cho tập hợp các số phải có */ /* thứ tự liên tiếp*/

Trang 5

Output :Chuổi string_out đã mã hóa

Procedure MAHOA_HOANVI

Begin

Gán string_out:=rổng;

While chưa hết chuồi string_in do Begin

-Đọc từng khối,mỗi khối có độ dài bằng độ dài của khóa -Xác định vị trí hoán vị cho mỗi kí tự trong một khối -Đọc kí tự ứng với vị trí xác định được trong khóa -Nối kí tự vừa đọc được vào string_out

End

End

· Giải mã:tương tự phần mã hóa

3.1.Lưu đồ giải thuật mã hóa

Begin

nhập:bang_ro nhập:Khoa bang_ma:=’’

n:=length(bang_ro) m:=length(khoa) i:=0

Trang 6

S

Đ

S

Đ

S

Đ

End

Lưu đồ giải thuật mã hóa

3.2.Lưu đồ giải thuật giải mã

Begin

bang_ro:=bang_ro + ‘ ‘ n:=n+1

n mod m = 0

j:=1

Bang_ma:=bang_ma + bang_ro((i*m)+(khoa[j])) j:=j+1

j=m+1

i:=i + 1

i=n/m

nhập:bang_ma nhập:Khoa bang_ro:=’’

n:=length(bang_ma) m:=length(khoa) i:=0

Trang 7

S

Đ

S

Đ

End

Lưu đồ giải thuật giải mã

3.3.Giải thuật mã hóa viết bằng ngôn ngữ Pascal

Input :bang_ro cần mã hóa

Khoa

Output :bang_ma đã mã hó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);

Bang_ro:=bang_ro + bang_ma((i*m)+(khoa[j]))

j:=j+1

j=m

i:=i + 1

i=n/m j:=1 Đổi khóa

Trang 8

Bang_ma:=bang_ma +bang_ro[so +(i)*m];

end;

end;

3.4.Giải thuật giải mã viết bằng ngôn ngữ Pascal

Input :bang_ma cần giải mã, Khoa

Output :bang_ro đã giải mã

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;

Ngày đăng: 26/07/2014, 08:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN