Ngược lại, với sự sử dụngrộng rãi hệ mã RSA, Elgamal trong thực tế, việc nghiên cứu các lời giải hiệu quảcho các bài toán phân tích thành thừa số nguyên tố và lôgarit rời rạc trở nên rất
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VINH
PHÙNG MINH ĐỨC
MỤC LỤC
MỞ ĐẦU ……… … 3
CHƯƠNG 1 Một số kiến thức cơ sở………5
1.1 Thuật toán và độ phức tạp của thuật toán……… 5
1.2 Phép tính đồng dư và các vấn đề có liên quan……….… 7
1.3 Liên phân số……….…13
CHƯƠNG 2 Một số ứng dụng của số học trong lý thuyết mật mã 14
2.1 Nguyên tắc chung và một số hệ mã đơn giản 14
2.2 Một số hệ mã mũ thông dụng 21
2.3 Phân tích ra thừa số nguyên tố 29
KẾT LUẬN
Trang 2TÀI LIỆU THAM KHẢO
Trang 3MỞ ĐẦU
Cho đến những năm 70 của thế kỷ XX, Số học vẫn được xem là một trongnhững ngành lý thuyết thuần túy nhất của toán học Thậm chí, có nhà toán họccho rằng vẻ đẹp của Số học có được là nhờ sự xa rời thực tiễn của nó (G H
Hardy, A Mathematician's Apology, Cambridge University Press, 1940) Nhưng
ngày nay, quan niệm đó đã thay đổi, sau khi Số học được áp dụng để xây dựngnhững hệ mật mã khóa công khai
Mật mã đã tồn tại từ hàng nghìn năm nhưng nó đã thường được coi là mộtmôn nghệ thuật hơn là một ngành khoa học Bước ngoặt mới chỉ đến từ hơn 30năm nay, từ khi khái niệm ban đầu về mã hóa khóa công khai được Diffie-Helmann đề xuất năm 1976 Liên tiếp sau đó, những công cụ ngày càng mạnhcủa lý thuyết số đã dần thâm nhập vào mật mã và góp phần đưa mật mã trở thànhmột ngành khoa học Học viện Công nghệ Massachusetts (MassachusettsInstitute of Technology), viết tắt là MIT là học viện nghiên cứu và giáo dục ởthành phố Cambridge, Massachusetts, Hoa Kỳ Trong các lĩnh vực tiềm năngnhất của MIT là thực hành trí tuệ nhân tạo và khoa học máy tính Năm 1978, banhà khoa học của MIT là Rivest, Shamir và Adleman đề xuất một hệ mã, mà nayđược gọi là RSA Độ an toàn của hệ mã này được dựa trên độ khó của việc phântích một số nguyên đủ lớn ra thừa số nguyên tố Liên tiếp sau đó, các bài toáncủa lý thuyết số như bài toán lôgarít rời rạc và tìm thặng dư cấp 2 cũng đã được
sử dụng để xây dựng các hệ mã Elgamal và Rabin Ngược lại, với sự sử dụngrộng rãi hệ mã RSA, Elgamal trong thực tế, việc nghiên cứu các lời giải hiệu quảcho các bài toán phân tích thành thừa số nguyên tố và lôgarit rời rạc trở nên rấtđược quan tâm trong lý thuyết số Nhờ đó, các lý thuyết mới của Số học, đặc biệt
là Số học thuật toán, tìm thấy những ứng dụng trực tiếp vào thực tiễn
Trang 4Như vậy, lý thuyết số đã hiện hữu trong các hoạt động thực tiễn: trao đổitrực tuyến giữa các ngân hàng, thanh toán qua thẻ ATM, truyền phát tín hiệu vệtinh, xem phim tự chọn trên truyền hình
Bên cạnh đó, với cây cầu bắc tới lý thuyết số, từ những phát kiến ban đầu,mật mã trở thành một ngành khoa học mới Ngành khoa học mật mã không chỉnghiên cứu sự bảo mật của các sơ đồ mã hóa, mà còn mở rộng đến những ứngdụng thực tiễn như chữ ký điện tử, sơ đồ định danh rồi dần dần đưa đến nhữngkhái niệm quan trọng của ngành khoa học máy tính và rộng hơn là của Toán họcnhư khái niệm về các chứng minh tương tác (interactives proofs), chứng minhkhông để lộ tri thức (zero-knowledge proofs) và gần đây là các chứng minh kiểmtra được một cách xác suất bằng cách chỉ kiểm thử một hằng số các bít thông tintrên bản chứng minh (probabilistic checkable proofs)
Mục đích của bản luận văn này là nhằm trình bày cơ sở của việc áp dụng
lý thuyết số vào mật mã, đặc biệt là mã hóa RSA và một số thuật toán phân tích
số nguyên đang sử dụng trong thám mã (mục tiêu của thám mã là tìm nhữngđiểm yếu hoặc không an toàn trong phương thức mật mã hóa)
Luận văn gồm hai chương Chương 1 trình bày các kiến thức về: thuậttoán, độ phức tạp của thuật toán, đồng dư và liên phân số Chương 2 trình bàymột số hệ mã đơn giản, hệ mã thông dụng, hệ mã RSA và ứng dụng của Số họcvào các hệ mã khóa công khai như phân tích Fermat, phân tích sử dụng liên phân
số, phương pháp phân tích của Pollard Từ đó viết một số thủ tục lập mã và giải
mã trên Maple
Luận văn này được hoàn thành dưới sự hướng dẫn tận tình và chu đáo củaPGS.TS Nguyễn Thành Quang Nhân dịp này tôi xin bày tỏ lòng kính trọng vàbiết ơn sâu sắc tới thầy giáo hướng dẫn khoa học, người đã dành nhiều thời gian
và công sức cho tôi để hoàn thành luận văn này
Trang 5Nhân dịp này tôi xin bày tỏ lòng biết ơn và gửi lời cảm ơn đến các thầy côgiáo thuộc chuyên ngành Đại số và Lý thuyết số, Khoa Toán, Phòng Đào tạo SauĐại học – Trường Đại học Vinh, những người đã tận tình giảng dạy và tạo mọiđiều kiện thuận lợi cho tôi hoàn thành khóa học.
Tôi cũng xin trân trọng cảm ơn tới Trường Đại học Sài Gòn đã tạo mọiđiều kiện tổ chức cho chúng tôi hoàn thành khóa học
Tôi xin chân thành cảm ơn bạn bè, đồng nghiệp, gia đình đã động viên vàgiúp đỡ tôi trong suốt khóa học
Tôi xin gửi lời cảm ơn đến Ban giám hiệu Trường Trung học Cơ sở LạcHồng, và các thầy cô đồng nghiệp, Phòng Giáo dục - Đào tạo Quận 10, TP HồChí Minh đã tạo điều kiện thuận lợi để tôi hoàn thành nhiệm vụ học tập
Luận văn còn nhiều thiếu sót, tác giả mong nhận được sự đóng góp củathầy cô giáo và các đồng nghiệp
TÁC GIẢ
Trang 6CHƯƠNG 1 MỘT SỐ KIẾN THỨC CƠ SỞ
1.1 Thuật toán và độ phức tạp của thuật toán
1.1.1 Khái niệm thuật toán
Có thể định nghĩa thuật toán theo nhiều cách khác nhau, ở đây chúng tôi
không trình bày chặt chẽ về thuật toán, mà sẽ hiểu khái niệm thuật toán theo mộtcách thông thường nhất
- Thuật toán là một quy tắc để với những dữ liệu ban đầu đã cho, ta tìm
được lời giải sau một thời gian hữu hạn
Có thể nói rằng, một thuật toán cần phải thỏa mãn các yêu cầu sau đây:
- Tính hữu hạn Thuật toán cần phải kết thúc sau một số hữu hạn bước.
Khi thuật toán ngừng làm việc, ta phải thu được câu trả lời cho vấn đề đặt ra
- Tính xác định Tại mỗi bước, thuật toán cần phải xác định nghĩa là chỉ rõ
đến độ phức tạp của thuật toán, chúng ta luôn hiểu độ phức tạp thời gian.
Dĩ nhiên, thời gian làm việc của máy tính khi chạy một thuật toán nào đókhông chỉ phụ thuộc vào thuật toán mà còn phụ thuộc vào máy tính đang được
Trang 7sử dụng Vì thế, để có một tiêu chuẩn chung, ta sẽ đo độ phức tạp của một thuật
toán bằng số các phép tính phải làm khi thực hiện thuật toán Nhưng điều này lại
phụ thuộc vào độ lớn của dữ kiện đầu vào Trong những ứng dụng thực tiễn, tachỉ cần ước lượng thật tốt độ phức tạp này Để làm điều đó, ta dùng khái niệmbậc O-lớn
1.1.2 Độ phức tạp của thuật toán Giả sử f(n) và g(n) là hai hàm xác định trên
tập hợp các số nguyên dương Ta nói, f(n) có bậc O-lớn của g(n) và viết f(n) =
O(g(n)) hoặc là f = O(g), nếu tồn tại một hằng số C > 0 sao cho với n đủ lớn, các
hàm f(n) và g(n) đều dương đồng thời thỏa mãn: f(n) < Cg(n).
Ví dụ: Cho hai đa thức
1.1.4 Định nghĩa Một thuật toán được gọi là có độ phức tạp đa thức nếu số các
phép tính cần thiết khi thực hiện thuật toán đó không vượt quá ( d )
O log n , trong đó
n là độ lớn của đầu vào và d là số nguyên dương nào đó
Nói cách khác, nếu đầu vào là các số k-bit thì thời gian thực hiện thuật
toán là O k( )d , tức là tương đương với một đa thức của k.
Trang 81.2 Phép tính đồng dư và các vấn đề liên quan
1.2.1 Định nghĩa. Số nguyên tố là số nguyên lớn hơn 1, không chia hết cho số
nguyên dương nào ngoài 1 và chính nó Số nguyên lớn hơn 1 không phải là số
nguyên tố được gọi là hợp số.
Định lý sau đây của Số học là một cơ sở quan trọng của thuật toán tìm các
số nguyên tố không vượt quá một số tự nhiên cho trước
1.2.2 Định lí Mọi hợp số n đều có ước nguyên tố nhỏ hơn n
Chứng minh Thật vậy, vì n là hợp số nên ta gọi a và b là các ước thật sự của n
Khi đó n ab , trong đó 1 a b n Rõ ràng ta phải có a hoặc b không vượt quá
,
n giả sử đó là a Khi đó, ước nguyên tố của a cũng đồng thời là ước nguyên tố của n.
Từ Định lí 1.2.1.2, ta có thuật toán tìm ra các số nguyên tố nhỏ hơn hoặc
bằng số nguyên dương n cho trước.
1.2.3 Thuật toán sàng các số nguyên tố của Eratosthenes Trước tiên, ta viết
dãy các số tự nhiên từ 1 đến n Trong dãy đó, ta gạch bỏ số 1 vì nó không phải là
số nguyên tố Số nguyên tố đầu tiên của dãy là số 2 Tiếp theo đó ta gạch khỏidãy số tất cả những số chia hết cho 2 Số đầu tiên không chia hết cho 2 là 3: đóchính là số nguyên tố Ta lại gạch khỏi dãy số còn lại những số nào không chiahết cho 3 Ta thu được số nguyên tố tiếp theo là 5 Tiếp tục như thế, ta gạch khỏidãy những số chia hết cho mọi số nguyên tố bé hơn n
Sàng Eratosthenes mặc dù cho ta thuật toán xác định mọi số nguyên tốkhông vượt quá một số cho trước nhưng lại rất ít được sử dụng để xác định xemmột số đã cho có phải là số nguyên tố hay không Nguyên nhân là vì thuật toán
có độ phức tạp khá lớn: để kiểm tra n, ta phải thực hiện phép chia cho tất cả các
số nguyên tố không vượt quá n
Trang 91.2.4 Định lí cơ bản của Số học Mọi số nguyên lớn hơn 1 đều phân tích được
một cách duy nhất thành tích các số nguyên tố, trong đó các thừa số được viết với thứ tự không giảm.
Chứng minh Ta chứng minh mọi số có thể viết dưới dạng tích của một hoặc
nhiều số nguyên tố Trước hết, mỗi số nguyên tố là tích của một thừa số là chính
nó Giả sử rằng có các số nguyên dương lớn hơn 1 không biểu diễn được thành
tích các số nguyên tố Khi đó gọi n là số nhỏ nhất trong các số đó Số n ≠1 và là
hợp số Do đó n = ab, trong đó cả a và b là các số nguyên dương nhỏ hơn n Vì n
là số nhỏ nhất không thể phân tích thành tích các số nguyên tố nên cả a và b phân tích được thành tích các số nguyên tố Nhưng khi đó n = ab lại phân tích
được Điều này mâu thuẫn với giả thiết
Ta giả sử rằng tồn tại số nguyên lớn hơn 1 mà có hai cách biểu diễn dướidạng tích các thừa số nguyên tố Khi đó giả sử s là số nhỏ nhất trong các số như
vậy, tức là s = p1p2 p m = q1q2 q n với p i ,q j là các số nguyên tố Do p1 chia hết
q1q2 q n suy ra tồn tại q j mà p1 chia hết q j Từ đó ta có p i = q j, bỏ hai số nguyên tố
ra khỏi đẳng thức ta được hai vế là hai khai triển khác nhau của số s chia cho p1,
mà theo giả thuyết s là số nhỏ nhất như vậy, mâu thuẩn này chứng tỏ giả thiết làsai vậy mỗi số nguyên lớn hơn một chỉ có một biểu diễn duy nhất dưới dạng tíchthừa số nguyên tố (không kể đến thứ tự các thừa số) ▄
1.2.5 Thuật toán Euclid Thuật toán cho phép xác định ước chung lớn nhất của
hai số nguyên nguyên dương (ƯCLN) Ta xét 3 trường hợp sau:
a) Nếu b là ước của a thì (a, b) = b.
b) Nếu a = bq + r thì (a, b) = (b, r).
c) Trường hợp tổng quát với a, b là các số nguyên dương (giả thiết a > b):
Ta thực hiện liên tiếp các phép chia sau đây và vì bất đẳng thức sau xảy ra
cho nên thuật chia là dừng lại sau hữu hạn bước (không quá a bước):
0 1 m 1 m m 1 0
a b r r r r r
Trang 101.2.6 Thuật toán Euclide mở rộng Thuật toán này sử dụng để giải phương
trình vô định nguyên ax + by = c, trong đó a, b,c là các hệ số nguyên, x, y là các
ẩn nhận giá trị nguyên Điều kiện cần và đủ để phương trình này có nghiệm
(nguyên) là UCLN của a và b là ước của c Khẳng định này dựa trên một mệnh
đề sau: Nếu d = (a, b) thì tồn tại các số nguyên x, y sao cho ax + by = d
Giải thuật Euclid mở rộng kết hợp quá trình tìm ƯCLN cua a, b trong thuật toán Euclid với việc tìm một cặp số x, y thoả mãn phương trình Diophante.
Giả sử cho hai số tự nhiên a, b, ngoài ra a > b > 0 Đặt r o = a,r1 = b, chia r0 cho
r1 được số dư r2 Nếu r2 = 0 thì dừng, nếu r2 khác không, chia r1 cho r2 được số
dư r3, Vì dãy các r i là giảm thực sự nên sau hữu hạn bước ta được số dư r m = 0.
r o = q1r1 + r2,0 < r2 < r1;
r1 = q2r2 + r3,0 < r3 < r2;
Trang 11Tổng quát, giả sử có
a.x i + b.y i = r i với i = 0,1,
a.x i + 1 + b.y i + 1 = r i + 1 với i = 0,1,
Trang 121.2.7 Định nghĩa Hàm Euler ( )n là hàm số học có giá trị tại số tự nhiên n 0
bằng số các số tự nhiên không vượt quá n và nguyên tố cùng nhau với n:
1 ( , ) 1
(m(
có nghiệm duy nhất theo môđun M m m m1 2 r
1.2.9 Định lí Fermat bé Nếu p là số nguyên tố và a là số không chia hết cho p
n thì có suy ra được n là số nguyên tố hay không? Câu trả lời là phủ định Thậtvậy, ta có:
Tuy nhiên, nếu một số nguyên thỏa mãn các giả thuyết của Định lí Fermat
bé thì "có nhiều khả năng" nó là số nguyên tố Từ đó, ta có:
1.2.10 Định lí Euler Nếu m > 1 là số nguyên dương và a là số nguyên nguyên
tố cùng nhau với m thì a ( )m 1(mod )m
, trong đó là hàm số số học Euler.
Định lí Euler có thể dùng để tìm nghịch đảo mod m Chẳng hạn, nếu a và
m là các số nguyên tố cùng nhau, ta có aa ( ) 1m 1(mod )m
tức là a ( ) 1m là nghịch
Trang 13đảo của a theo mod m Từ đó cũng suy ra nghiệm của phương trình đồng dư
tuyến tính ax b mod ( m với ( , ) 1), a m là x a ( ) 1m b(mod )m
1.2.11 Tính toán với đồng dư của luỹ thừa bậc cao Các tính chất của hàm
Euler được sử dụng để tính đồng dư của những lũy thừa rất lớn Chẳng hạn, tacần tính a n mod k , trong đó n là một số nguyên lớn Giả sử ta có:
Trang 14CHƯƠNG 2 MỘT SỐ ỨNG DỤNG CỦA SỐ HỌC TRONG LÝ THUYẾT MẬT MÃ2.1 Nguyên tắc chung và một số hệ mã đơn giản
2.1.1 Những khái niệm cơ bản trong lý thuyết mật mã (Cryptography)
Thuật ngữ Cryptography đề cập tới ngành khoa học nghiên cứu về che dấu
và giải mã thông tin Cụ thể hơn là nghiên cứu các cách thức chuyển đổi thông
tin từ dạng “đọc hiểu được” sang dạng “đọc nhưng không hiểu được” và ngược
lại Đây là một phương pháp hỗ trợ rất tốt trong việc chống lại những truy cậpbất hợp pháp tới các thông tin được truyền đi trên mạng, áp dụng mã hóa sẽkhiến cho nội dung thông tin được truyền đi dưới dạng không thể hiểu được đốivới bất kỳ ai cố tình muốn lấy thông tin đó
2.1.2 Nhu cầu sử dụng kỹ thuật mã hoá Tất nhiên không phải ai cũng phải
dùng mã hóa Nhu cầu về sử dụng mã hóa xuất hiện khi các bên giao tiếp muốnbảo vệ các tài liệu quan trọng hay truyền chúng một cách an toàn Các tài liệuquan trọng có thể là tài liệu quân sự, tài chính, kinh doanh hoặc đơn giản làthông tin nào đó mà mang tính riêng tư
Internet hình thành và ra đời từ yêu cầu phục vụ cho mục đích quân sự.Khi chúng ta tham gia trao đổi thông tin, chat, gửi mail Internet là một môitrường không an toàn, đầy rủi ro và nguy hiểm, không có gì đảm bảo rằng thôngtin mà chúng ta truyền đi không bị đọc trộm trên đường truyền Từ đó mã hóađược áp dụng như một biện pháp nhằm giúp chúng ta tự bảo vệ chính mình cũngnhư những thông tin mà chúng ta gửi đi
Nói đến mã hóa tức là nói đến việc che dấu thông tin bằng cách sử dụngthuật toán Che dấu ở đây không phải là làm cho thông tin biến mất mà là cách
thức chuyển từ dạng “có thể đọc hiểu được” thành dạng “đọc nhưng không thể
hiểu được” Một thuật toán là một tập hợp của các câu lệnh mà theo đó chương
trình sẽ biết phải làm thể nào để xáo trộn hay phục hồi lại dữ liệu
Trang 15Plaintext (Cleartext): Thông tin trước khi được mã hóa Đây là dữ liệu
ban đầu ở dạng có thể đọc hiểu được
Ciphertext: Thông tin, dữ liệu đã được mã hóa.Ở dạng đọc nhưng không
Key: Thành phần quan trọng trong việc mã hóa và giải mã.
CryptoGraphic Algorithm: Là các thuật toán được sử dụng trong việc
mã hóa hoặc giải mã thông tin
CryptoSystem: Hệ thống mã hóa bao gồm thuật toán mã hóa, khóa,
Plaintext, Ciphertext
Kí hiệu chung: P là thông tin ban đầu, trước khi mã hóa E() là thuật toán
mã hóa D() là thuật toán giải mã C là thông tin mã hóa K là khóa Chúng ta
biểu diễn quá trình mã hóa và giải mã như sau :
- Quá trình mã hóa được mô tả bằng công thức: E K (P) = C.
- Quá trình giải mã được mô tả bằng công thức: D K (C) = P.
2.1.3 Hệ mã Ceasar Trong phương pháp mã hóa thay thế có một phương pháp
nổi tiếng mà không thể không nhắc tới ở đây, đó chính là phương pháp mã hóa
thay thế Ceasar cipher Phương pháp này được Ceasar xây dựng trong cuộc chiến Gallic Wars (những người Gô-loa cổ đại, những người được xem là tổ tiên
của người Pháp ngày nay), thay thế từng kí tự trong Plaintext bằng kí tự đứngthứ 3 sau nó, nghĩa là:
Trang 16Như thấy ở bảng trên, chữ A sẽ được thay thế bằng chữ D, B thay bằng E
Với mã Ceasar, người ta chỉ áp dụng phép dịch 3 vị trí như trên hình
minh họa Nhưng sau này khi áp dụng nó người ta sử dụng các phép dịch kháclớn hơn Nhưng đối với bảng chữ cái tiếng Anh thì từ A -> Z có 26 chữ cái, do
đó điểm yếu của phương pháp này nằm ở chỗ phạm vi của phép dịch chỉ đượcphép nằm trong khoảng từ 0 – 25 Ví dụ nếu ta sử dụng phép dịch 26 thì sẽ tươngđương với phép dịch 0
2.1.4 Vòng tròn Ceasar
Dựa vào phương pháp này người ta đã xây dựng nên công thức cho
Ceasar Cipher như sau:
Trang 171) Đánh số thứ tự cho từng kí tự trong bảng chữ cái (ở đây là bảng chữ cái mã hóa bằng tiếng Việt):
Ví dụ Ta có văn bản gốc là: Em kính chúc các thầy cô mạnh khỏe
Để thêm tính bảo mật ta có thể ghép hoặc tách hoặc ghép chữ của câu trêndựa vào bảng mã trên ta chuyển câu trên thành dạng số:
Trang 18Số 3 trong công thức (1) được gọi là khóa mã Caesar vì nó được dùng để
mã hóa cũng như giải mã
Ta cũng có thể lập hệ mã mới bằng cách thay số 3 trong công thức (1)bằng một số k tùy ý giữa 1 và 29
C = E(P) ≡ (aP + b) (mod 29)
trong đó a,b là các số nguyên và (a, 29) = 1 những mã như vậy gọi là mã biến đổiaphin Việc giải mã được tiến hành bằng cách giải phương trình đồng dư:
P = D(C) ≡ a -1 (C – b) (mod 29) khi đã biết C, a, b.
Trang 19> daysoro := subs(bangma, dayvbro);
> daysoma := [seq(mod(a*daysoro[i]+b, n), i = 1 nops(daysoro))];
Trang 20dayktro:="em xin kinh chuc cac thay co manh khoe"
Phân tích sau đây cho thấy tính bảo mật của mã Caesar là không cao Khibắt được một văn bản mật người ta có thể dựa vào tần suất xuất hiện của các chữcái để đoán ra khóa của mã chẳng hạn nếu chữ a nói chung xuất hiện nhiều nhấttrong văn bản thì chữ cái nào có mặt nhiều nhất trong văn bản mật rất có khảnăng là chữ a Từ đó ta đoán ra khóa Hơn nữa chỉ có 29 cách khác nhau để chọnkhóa cho loại mã nói trên nên dễ dàng tìm ra khóa của mã,nhất là khi áp dụngvới máy tính Đối với mã biến đổi aphin ta chỉ cần dựa vào tần suất xuất hiện từ
để tìm ra 2 chữ cái tương ứng với với 2 chữ cái nào đó trong văn bản mật, ta cóthể tìm ra a,b bằng cách giải hệ hai phương trình đồng dư Ngoài ra việc giảinhững hệ mã biến đổi aphin cũng quá dễ dàng với máy tính hiện nay Như vậy,với những yêu cầu về bảo mật cao hơn người ta dùng hệ mã phức tạp hơn Sauđây là một vài hệ mã thường dùng từ đơn giản đến phức tạp
2.1.3 Hệ mã khối Mã khối xuất hiện nhằm chống lại việc sử dụng tần suất xuất
hiện của các chữ cái trong văn bản để dò ra khóa mã Khác với các hệ mã đãtrình bày ở trên ta không mã hóa từng chữ cái của văn bản mà mã hóa từng khối
chữ cái Cụ thể ta xét ví dụ sau đây Giả sử thông báo cần mã hóa là :
Em xin kính chúc các thầy cô mạnh khỏe