1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

14 28 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Bài báo cáo môn Cấu trúc rời rạc
Tác giả Đỗ Anh Khoa
Người hướng dẫn Thầy Trần Lương Quốc Đại
Trường học Trường Đại học Tôn Đức Thắng
Chuyên ngành Công nghệ thông tin
Thể loại bài báo cáo
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 14
Dung lượng 744,03 KB

Nội dung

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 ĐẠI Người thực hiện: ĐỖ ANH KHOA – 52100968

Lớp: 21050401 Khoá: 25 THÀ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ành cảm ơn thầy rất nhiều

Trang 3

ĐỒ ÁN ĐƯỢC HOÀN THÀNH

TẠ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õ trong phầ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ích nguồ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ách nhiệ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ình thự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ật toán Euclid mở rộng và hệ thống RSA cryptosystem Sau đó có code minh họa bằng python cho từng thuật toán

Trang 6

CHƯƠNG 1 - FINDING AN INVERSE MODULO 8

1.1 Khái niệm: 8

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

1.3 Ví dụ: 9

1.4 Code và kết quả: 10

CHƯƠNG 2 - RSA CRYPTOSYSTEM 11

2.1 Khái niệm: 11

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

2.3 Ví dụ: 12

2.4 Code và kết quả: 13

TÀI LIỆU THAM KHẢO 14

CHƯƠNG 1 - FINDING AN INVERSE MODULO

1.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ó:

i

Ta có kết quả bài toán là -111 Tuy nhiên điều kiện kết quả của bài toán phải là một số dương (từ định nghĩa) Nên :

(1759^-1) mod 550 = -111 mod 550

= (-111 + 550) mod 550

= 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 CRYPTOSYSTEM

2.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

b) Tính modulus N = p * q = 61 * 53 = 3233

c) Tính hàm phi Euler của N as phi(N) = (p-1)*(q-1) Trong trường hợp này

là 60*52 = 3120

d) Chọn lũy thừa mã hóa e(e là 1 số nguyên tố) Trong trường hợp này ta chọn số 17

e) Tính lũy thừa giải mã d theo công thức e * d trùng 1(mod phi(N)) Nói cách khác, d là nghịch đảo nhân của e modulo phi(N) Trong trường hợp này, ta dùng thuật toán euclid mở rộng để tính d = 2753 ( vì 17 * 2753 =

1 (mod 3120))

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"

2.4 Code và kết quả:

import random

import math

def is_prime( ) n :

"""Check if a number is prime"""

n <= if 1 :

return False

elif n <= 3 :

return True

elif n % == n % == 2 0 or 3 0 :

return False

i = 5

while i * i <= n :

n % i == if 0 or n % ( i + 2 ) == 0 :

return False

i += 6

return True

def generate_key_pair( p ) :

"""Generate a key pair"""

if not ( is_prime p ( ) and is_prime ( )): q

raise ValueError ( "Both numbers must be prime." )

elif p == q :

raise ValueError ( "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

e = random.randrange ( , 1 phi )

while True :

math.gcd phi == if ( , e ) 1 :

break

e = random.randrange phi ( , 1 )

# Compute the private key

d = mod_inverse phi ( , e )

# Return public and private key pair

Trang 13

"""Compute modular inverse"""

gcd x y = extended_euclidean_algorithm m , , ( , a )

gcd != if 1 :

raise ValueError ( "Modular inverse does not exist." )

return x % m

def extended_euclidean_algorithm( a , ) :

"""Extended Euclidean algorithm"""

a == if 0 :

return ( , b , 1 )

else :

gcd x y = extended_euclidean_algorithm b % a a , , ( , )

return ( gcd , y - b // a * x x ( ) , )

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 cipher in ]

return ''.join message ( )

# Generate a key pair

p = 61

q = 53

public_key , private_key = generate_key_pair ( , p q )

# Encrypt a message

message = "HELLO "

cipher = encrypt ( public_key , message )

print ( cipher )

# Decrypt the message

message = decrypt ( private_key , cipher )

print ( message )

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Ừ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w