1. Lập mã: Đối với hệ mã mũ, ta ứng các chữ trong văn bản với các số, chuyển các
số đó thành hệ thống số khác thông qua khoá lập mã, sau đó lại dùng bảng t−ơng ứng các số vừa tìm đ−ợc ta đ−ợc văn bản mật cần chuyển. Giả sử p là một số nguyên tố lẻ (để đảm bảo tính an toàn số p đ−ợc chọn ở đây phải là số nguyên tố t−ơng đối
VnMath.Com
lớn, chẳng hạn lớn hơn 2929), e là khoá lập mã (trong đó (e,p-1)=1). Để chuyển một văn bản cho đối t−ợng có khoá lập mã là (e,p) tiến hành lập mã theo các b−ớc sau:
B−ớc 1: Tìm m (là số nguyên lớn nhất sao cho mọi số t−ơng ứng với m chữ cái đều
nhỏ hơn p). Ta thực hiện dòng lệnh sau:
[>Lp:=length(p);
Sau dấu (;) ấn phím “Enter” trên màn hình sẽ hiện lên kết quả. Nếu kết quả là một số lẻ thì lấy m =(Lp-1)/2.
Nếu kết quả là một số chẵn xét p’=2929...29 trong đó số chữ số của p’ bằng số chữ số của p, ta thực hiện tiếp dòng lệnh:
[>p-p’;
Sau dấu (;) ấn phím “Enter” trên màn hình sẽ hiện lên kết quả. Nếu kết quả là một số d−ơng lấy m=Lp/2. Nếu kết quả là một số âm lấy m=(Lp-2)/2.
B−ớc 2: Đặt t−ơng ứng mỗi chữ trong văn bản P với một số, ta dùng dòng lệnh sau:
[>subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10,h=1 1,i=12,k=13,l=14,m=15,n=16,o=17,oo=18,ow=19,p=20,q=21,r= 22,s=23,t=24,u=25,uw=26,v=27,x=28,y=29},[P]);
Sau dấu (:) ấn phím “Enter” trên màn hình sẽ hiện ra kết quả.
B−ớc 3: Chia các số t−ơng ứng tìm đ−ợc thành từng nhóm m số, trong đó các số
1,2,3,4,5,6,7,8,9 thay bởi 01,02,03,04,05,06,07,08,09. Nếu nhóm cuối cùng ch−a đủ m số thì ta thêm vào các số 28 (t−ơng ứng với chữ x). Công việc này ta thực hiện bằng tay vì nó đơn giản. Rồi tìm các chữ t−ơng ứng trong văn bản mật. Ta thực hiện dòng lệnh:
[>L:=[nhóm thứ nhất, nhóm thứ hai,...]:seq (msolve (x- L[k]&^e,p),k=1..nops(L));
Sau dấu (:) ấn phím “Enter” trên màn hình sẽ hiện ra kết quả.
Nh− vậy, rất đơn giản, để mã hoá văn bản nào đó ta chỉ cần thay các chữ cái trong văn bản vào vị trí của P (với chú ý các chữ cái phải tách biệt nhau bởi dấu (,)) trong dòng lệnh ở b−ớc 2, và thay các số p,e của khoá lập mã vào các dòng lệnh ở b−ớc 1, b−ớc 3. Để dễ hiểu ta theo dõi thí dụ sau đây:
Thí dụ: Với khoá lập mã là p=2938,e=31. Mã hoá thông báo sau:
ĐI HA NÔI NGAY Ta thực hiện nh− sau:
[>length(2839);
4
4 là một số chẵn do đó ta phải thực hiện tiếp lệnh thử với p’=2929
[> 2939-2929;
VnMath.Com
10 10 là một số d−ơng do đó lấy m=4/2=2. [>subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10,h=1 1,i=12,k=13,l=14,m=15,n=16,o=17,oo=18,ow=19,p=20,q=21,r= 22,s=23,t=24,u=25,uw=26,v=27,x=28,y=29},[dd,i,h,a,n,oo,i ,n,g,a,y]); [7, 12, 11, 1, 16, 18, 12, 16, 10, 1, 29] [> L:=[0712,1101,1618,1216,1001,2928]:seq(msolve (L[k]&^31-x,2939),k=1..nops(L)); {x = 898}, {x = 1853}, {x = 1003}, {x = 2156}, {x = 1786}, {x = 2614} Vậy ta có văn bản mật là 898 1853 1003 2156 1786 2614.
2. Giải mã: Khi nhận đ−ợc một văn bản mật C gửi cho mình, ta dùng khoá giải mã
(d,n) của mình để tìm ra nội dung nhận đ−ợc. Ta thực hiện các dòng lệnh nh− sau:
B−ớc 1: Tìm lại khối P’ (t−ơng ứng bằng các số) trong văn bản, ta dùng dòng lệnh:
[>L:=[C]: seq (msolve (x-L[k]&^d,p),k=1..nops(L));
Chú ý khi thay C vào trong dòng lệnh này thì các khối phải cách nhau bởi (,). Sau dấu (;) ấn phím “Enter” trên màn hình sẽ hiện lên khối các số t−ơng ứng của P’.
B−ớc 2: Để nhận đ−ợc P ta tách mỗi khối của P’ nhận đ−ợc thành các nhóm có hai
số rồi t−ơng ứng mỗi nhóm với một chữ cái. Ta thực hiện nh− sau:
[>P:=[P’]:subs({1=a,2=aw,3=aa,4=b,5=c,6=d,7=dd,8=e,9=ee, 10=g,11=h,12=i,13=k,14=l,15=m,16=n,17=o,18=oo,19=ow,20=p ,21=q,22=r,23=s,24=t,25=u,26=uw,27=v,28=x,29=y},[seq((P[ i] mod 29),i=1..nops(P))]);
Ta xét thí dụ sau:
Thí dụ: Hãy giải mã văn bản mật 898 1853 1003 2156 1786 2614 biết khoá giải
mã là (853,2939). Ta thực hiện nh− sau: [>L:=[898,1853,1003,2156,1786,2614]:seq(msolve(x- L[k]&^853,2939),k=1..nops(L)); {x = 712}, {x = 1101}, {x = 1618}, {x = 1216}, {x = 1001}, {x = 2928} [>P:= [07,12,11,1,16,18,12,16,10,1,29,28]:subs({1=a,2=aw,3=aa, 4=b,5=c,6=d,7=dd,8=e,9=ee,10=g,11=h,12=i,13=k,14=l,15=m, VnMath.Com VnMath.Com
16=n,17=o,18=oo,19=ow,20=p,21=q,22=r,23=s,24=t,25=u,26=u w,27=v,28=x,0=y},[seq((P[i] mod 29),i=1..nops(P))]);
[dd, i, h, a, n, oo, i, n, g, a, y, x]
Vậy văn bản nhận đ−ợc là ĐI HA NÔI NGAY.