bài báo cáo môn cấu trúc rời rạc

14 0 0
Tài liệu đã được kiểm tra trùng lặp
bài báo cáo môn cấu trúc rời rạc

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét,đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trongphần tài liệu tham khảo.Ngoài ra, trong

Trang 1

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

KHOA CÔNG NGHỆ THÔNG TIN

BÀI BÁO CÁO MÔN CẤU TRÚC RỜI RẠC

Người hướng dẫn: Thầy TRẦN LƯƠNG QUỐC ĐẠINgười thực hiện: ĐỖ ANH KHOA – 52100968

Lớp: 21050401Khoá: 25THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023

Trang 2

LỜI CẢM ƠN

Em xin cảm ơn thầy Đại rất nhiều vì đã cống hiến hết sức mình cho công cuộc dạy học ở trường đại học Tôn Đức Thắng Nhờ có sự hướng dẫn chi tiết và tận tình của thầy mà em có thể hoàn thành được bài báo cáo giữa kì, em chân thànhcảm ơn thầy rất nhiều.

Trang 3

ĐỒ ÁN ĐƯỢC HOÀN THÀNHTẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi / chúng tôi vàđược sự hướng dẫn của TS Nguyễn Văn A; Các nội dung nghiên cứu, kết quảtrong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trướcđây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét,đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trongphần tài liệu tham khảo.

Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng nhưsố liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thíchnguồn gốc.

Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu tráchnhiệm về nội dung đồ án của mình Trường đại học Tôn Đức Thắng không

liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trìnhthực hiện (nếu có).

TP Hồ Chí Minh, ngày 02 tháng 04 năm 2023 Tác giả

(ký tên và ghi rõ họ tên)

Đỗ Anh Khoa

Trang 4

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN

Phần xác nhận của GV hướng dẫn

Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)

Phần đánh giá của GV chấm bài

Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)

Trang 5

TÓM TẮT

Bài báo cáo này đầu tiên khái quát các khái niệm về nghịch đảo modulo, thuậttoán Euclid mở rộng và hệ thống RSA cryptosystem Sau đó có code minh họabằng python cho từng thuật toán

Trang 6

CHƯƠNG 1 - FINDING AN INVERSE MODULO 8

TÀI LIỆU THAM KHẢO 14

CHƯƠNG 1 - FINDING AN INVERSE MODULO1.1 Khái niệm:

- Nghịch đảo modulo cho số b là số nguyên, x , m là các số nguyên dương(x <

m), nếu x*b mod m = 1 thì x là nghịch đảo b mod n, ký hiệu là b^-1 mod m

- Giải thuật Euclid: Trong toán học, giải thuật Euclid (hay thuật toán Euclid) là một giải thuật để tính ước chung lớn nhất (ƯCLN) của hai số

nguyên, là số lớn nhất có thể chia được bởi hai số nguyên đó với số dư bằng không Giải thuật này được đặt tên theo nhà toán học người Hy Lạp cổ

Trang 7

đại Euclid, người đã viết nó trong bộ Cơ sở của ông (khoảng năm 300 TCN)

định và là một trong số những thuật toán lâu đời nhất được sử dụng rộng rãi.- Giải thuật Euclid mở rộng được sử dụng để giải một phương trình vô định

đó 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(a,b) là ước của c Khẳng định này dựa trên một mệnh đề sau:

Nếu d = UCLN(a,b) thì tồn tại các số nguyên x, y sao cho ax + by = d

1.2 Cơ sở lý thuyết giải thuật:

Euclid với việc tìm một cặp số x, y thoả mãn phương trình Đi-ô-phăng Giả sử

Bảng thuật toán Euclid công thức mở rộng

1.3 Ví dụ:

Modulo nghịch đảo 1759 của 550:

Trang 8

Dựa vào bảng công thức ở trên đã cung cấp, ta có:

= 439

Vậy đáp án cuối cùng của bài toán là 439.

1.4 Code và kết quả:

Code:

Trang 9

Kết quả:

Như vậy ta thấy kết quả chạy đúng theo đáp án ở ví dụ đã nêu trên

CHƯƠNG 2 - RSA CRYPTOSYSTEM2.1 Khái niệm:

thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong

mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn.- Số học mô đun là một hệ thống số học dành cho số nguyên Trong số học môđun, các con số được viết bao quanh lấy nhau thành nhiều vòng tròn cho đến

Trang 10

khi chạm đến giá trị đích, gọi là mô đun (tiếng Anh: modulus, số

tên Disquisitiones Arithmeticae, xuất bản năm 1801.- Phân tích thừa số nguyên tố:

+ Số nguyên tố là số tự nhiên chỉ có hai ước số dương phân biệt là 1 và chính nó Các số có nhiều hơn 2 ước số dương được gọi là hợp số.

+ Định lý: "Mọi số tự nhiên lớn hơn 1 đều phân tích được thành tích những thừa số nguyên tố, và sự phân tích này là duy nhất nếu không kể đến thứ tự của các thừa số".

+ Để phân tích một số ra thừa số nguyên tố, ta thử chia lần lượt số đó cho các số nguyên tố như 2, 3, 5, 7,

2.2 Mô tả thuật toán:

mã hóa và giải mã Khóa công khai được công bố rộng rãi cho mọi người và

có thể được giải mã bằng khóa bí mật tương ứng Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được

2.3 Ví dụ:

đọc được Để làm được điều này, An gửi cho Bình một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa Bình nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bình cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bình gửi chiếc hộp lại cho An An mở hộp với chìa khóa của mình và đọc thông tin trong thư Trong ví dụ này,

Trang 11

chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật Sau đây là giải thích thuật toán RSA cryptosystem:

+ Bước 1: Khởi tạo chìa khóa (key generation)

Khoa tạo một chìa khóa bao gồm một cặp khóa công khai và một khóa riêng tư.Chìa khóa công khai bao gồm một modulus N và một encryption exponent (Lũy thừa giải mã), kí hiệu là e Quá trình khởi tạo chìa khóa được tiến hành theo các bước sau đây.

a) Chọn 2 số nguyên tố kí hiệu là p và q Trong ví dụ này ta chọn ngẫu nhiên 2 số 61 và 53

f) An có 1 chìa khóa công khai (N, e) = (3233, 17) và 1 chìa khóa riêng tư (N, d) = 3233, 2753

+ Bước 2: Mã hóa tin nhắn: Khoa muốn gửi tin nhắn "HELLO" đến An một cách an toàn Trước tiên, anh ta chuyển đổi tin nhắn thành biểu diễn số bằng bảng ASCII Trong ví dụ này, giả sử "HELLO" ánh xạ đến số 0725112115 Sau đó, Khoa mã hóa tin nhắn bằng khóa công khai của An như sau:

Khoa nâng biểu diễn số của thông điệp lên lũy thừa của số mũ mã hóa, e, modulo mô đun, N: 0725112115^17 mod 3233 = 2723.

Bản mật mã mà Khoa gửi cho An là 2723.

Trang 12

Bước 3: Giải mã tin nhắn: An nhận được bản mã và sử dụng khóa riêng của mình để giải mã tin nhắn An tính toán biểu diễn số của thông điệp văn bản thuần bằng cách nâng bản mã lên lũy thừa của số mũ giải mã d, modulo mô đun, N: 2723^2753 mod 3233 = 0725112115 Kết quả biểu diễn số là tin nhắn gốc mà Khoa đã gửi.

Bước 4: Giải mã thư: An chuyển đổi biểu diễn số trở lại thư gốc bằng cách sử dụng bảng ASCII được sử dụng trong bước 2 Trong ví dụ này, An ánh xạ mỗi số có hai chữ số trong biểu diễn số với ký tự ASCII tương ứng của nó để nhận thông báo "HELLO".

"""Generate a key pair""" ifnot(is_prime p( )and is_prime( )):q raiseValueError("Both numbers must be prime.")

elif p == q:

raiseValueError("p and q cannot be equal.")

n = p * q phi = p - * q - (1) (1)

# Choose an integer e such that e and phi(n) are coprime

Trang 13

"""Compute modular inverse""" gcd x y = extended_euclidean_algorithm m, ,( ,a)

def encrypt(public_key, message):

"""Encrypt a message using the public key""" n e = public_key,

cipher = [pow ord((char), e n , )for char in message]

return cipher

def decrypt(private_key, cipher):

"""Decrypt a message using the private key""" n d = private_key,

message = [chr pow((char, d n, ))for char cipherin]

return''.join message()

# Generate a key pair

# Decrypt the message

message = decrypt(private_key, cipher)

Kết quả:

Trang 14

TÀI LIỆU THAM KHẢO

Tiếng Việt

[1] Wikipedia Giải thuật Euclid mở rộng

[2] https://www.youtube.com/watch?v=oEHF5ET0OZg Tiếng Anh

Ngày đăng: 07/05/2024, 18:24

Tài liệu cùng người dùng

Tài liệu liên quan