Sau đây mình xin trình bày một bài tập về quy tắc mã hóa:
Quy tắc mã hóa :Đoạn
thông điệp được mã hóa là một đoạn văn bản có ý nghĩa. Đầu và cuối thông điệp
không có khoảng trắng. Các ký tự sử dụng trong đoạn văn bản này là các ký tự có
giá trị từ 32 đến 126 trong bảng mã
ASCII.Đoạn
văn bản được mã hóa theo một khoá K. Khoá K có giá trị trong đoạn [0, 255].
THÔNG
ĐIỆP 1
-        
Độ dài chuỗi mã hóa: 48
-        
Độ
dài chuỗi giải mã: 30
-        
Thời
gian truyền tin: 4 phút
Chuỗi mã hóa:
| 
> | 
? | 
) | 
8 | 
' | 
1 | 
< | 
$ | 
9 | 
' | 
" | 
8 | 
| 
5 | 
2 | 
6 | 
, | 
0 | 
3 | 
( | 
- | 
# | 
# | 
4 | 
# | 
| 
0 | 
3 | 
0 | 
( | 
3 | 
: | 
> | 
+ | 
0 | 
/ | 
% | 
, | 
| 
' | 
! | 
& | 
8 | 
# | 
% | 
? | 
5 | 
" | 
6 | 
- | 
Key:
164
Chuỗi
giải mã:
| 
1 | 
2 | 
3 | 
4 | 
5 | 
6 | 
7 | 
8 | 
9 | 
10 | 
11 | 
12 | 
13 | 
14 | 
15 | 
16 | 
THÔNG
ĐIỆP 2
-        
Độ dài chuỗi mã hóa: 48
-        
Độ
dài chuỗi giải mã: 30
-        
Thời
gian truyền tin: 4 phút
Chuỗi mã hóa:
| 
6 | 
2 | 
3 | 
8 | 
= | 
1 | 
< | 
; | 
6 | 
& | 
- | 
= | 
| 
/ | 
. | 
. | 
) | 
2 | 
/ | 
# | 
8 | 
7 | 
# | 
6 | 
' | 
| 
0 | 
. | 
! | 
8 | 
= | 
1 | 
< | 
* | 
1 | 
" | 
< | 
< | 
| 
3 | 
$ | 
> | 
' | 
0 | 
. | 
# | 
, | 
? | 
2 | 
, | 
* | 
Key:
231
Chuỗi
giải mã:
| 
1 | 
2 | 
3 | 
4 | 
5 | 
6 | 
7 | 
8 | 
9 | 
10 | 
11 | 
12 | 
13 | 
14 | 
15 | 
16 | 
THÔNG
ĐIỆP 3
-        
Độ dài chuỗi mã hóa: 48
-        
Độ
dài chuỗi giải mã: 30
-        
Thời
gian truyền tin: 4 phút
Chuỗi mã hóa:
| 
4 | 
> | 
7 | 
/ | 
3 | 
4 | 
% | 
6 | 
? | 
7 | 
/ | 
/ | 
| 
3 | 
) | 
7 | 
* | 
9 | 
+ | 
5 | 
* | 
? | 
- | 
6 | 
7 | 
| 
7 | 
; | 
< | 
+ | 
- | 
9 | 
& | 
6 | 
; | 
+ | 
5 | 
+ | 
| 
- | 
> | 
> | 
# | 
; | 
' | 
$ | 
+ | 
# | 
> | 
' | 
1 | 
Key:
106
Chuỗi
giải mã:
| 
1 | 
2 | 
3 | 
4 | 
5 | 
6 | 
7 | 
8 | 
9 | 
10 | 
11 | 
12 | 
13 | 
14 | 
15 | 
16 | 
THÔNG
ĐIỆP 4
-        
Độ dài chuỗi mã hóa: 48
-        
Độ
dài chuỗi giải mã: 30
-        
Thời
gian truyền tin: 4 phút
Chuỗi mã hóa:
| 
9 | 
3 | 
2 | 
+ | 
+ | 
9 | 
& | 
9 | 
8 | 
: | 
; | 
> | 
| 
9 | 
. | 
% | 
) | 
> | 
? | 
, | 
+ | 
- | 
< | 
- | 
8 | 
| 
= | 
3 | 
( | 
- | 
# | 
/ | 
= | 
8 | 
> | 
3 | 
, | 
+ | 
| 
? | 
= | 
- | 
8 | 
> | 
3 | 
, | 
; | 
- | 
< | 
- | 
9 | 
Key:
152
Chuỗi
giải mã:
| 
1 | 
2 | 
3 | 
4 | 
5 | 
6 | 
7 | 
8 | 
9 | 
10 | 
11 | 
12 | 
13 | 
14 | 
15 | 
16 | 
#include<cstring>
#include<math.h>
char c[1000], s[1000];
using namespace std;
int doi(int a,int coso,int& k,bool& ch)
{
if (a>=coso) doi(a/coso,coso,k,ch);
if (!ch) c[k++]=(a % coso)["0123456789ABCDEF"];
ch=false;
return 0;
}
int main()
{
int l[8],coso;
l[0]=1; l[1]=2; l[2]=4; l[3]=8; l[4]=16; l[5]=32; l[6]=64; l[7]=128;
cout<<"Nhap doan van can duoc ma hoa: ";
cin>>s;
cout<<"Nhap key de bai cho: ";
cin>>coso;
int k=0;
for(int i=0;i<strlen(s);i++)
{
bool ch=true;
doi(s[i]+0,2,k,ch);
}
int i=0, j=7, x=0;
cout<<"Doan van sau khi giai ma:"<<endl;
while (i<strlen(c))
{
x+=(c[i]=='1')?l[j]:0;
j--;
if ((i+1)%8==0)
{
x^=coso;
cout<<char(x);
x=0;
j=7;
}
i++;
}
cout<<endl;
return 0;
}
 
Không có nhận xét nào:
Đăng nhận xét