Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
910,96 KB
Nội dung
Chương 1-3 CƠ SỞ TOÁN HỌC Đồng dư số học modulo Thuật toán lũy thừa nhanh Thuật tốn Euclid tìm số nghịch đảo Thuật tốn Miller-Rabin kiểm tra số nguyên tố Đồng dư số học modulo • Các số nguyên tố vấn đề số ngun tố có vai trị quan trọng số học ứng dụng vào lý thuyết mật mã (ta xét riêng số nguyên tố mục sau) • Định lý 1.1 Nếu b>0 b|a gcd(a, b) = b Nếu a = bq + r gcd( a,b ) = gcd( b,r ) • Một số nguyên m gọi bội số chung a b a| m b| m Số m gọi bội số chung bé a b, ký hiệu lcm(a, b), m > 0, m bội số chung a b, bội số chung a b bội m Thí dụ lcm(14,21) = 42 • Với hai số nguyên dương a b ta có quan hệ lcm(a,b).gcd( a,b) = a.b Đồng dư số học modulo • Cho n số nguyên dương Ta nói hai số nguyên a b đồng dư với theo modunlo n, viết a b (mod n) hay an b , n|(a-b) (tức a-b chia hết cho n) Điều có nghĩa “khi chia a b cho n ta số dư nhau” • Thí dụ: 23 (mod 5), 23 - = 5x3; -19 (mod 7), -19 - = - 4x7 Đồng dư số học modulo • Quan hệ đồng dư (theo modunlo n) tập hợp số ngun có tính chất phản xạ, đối xứng bắc cầu, tức quan hệ tương đương, tạo phân hoạch tập hợp tất số nguyên Z thành lớp tương đương: hai số nguyên thuộc lớp tương đương chúng cho số dư chia cho n Mỗi lớp tương đương đại diện số tập hợp Zn = {0, 1, 2, 3, , n -1}, số dư chung chia số lớp cho n Vì vậy, ta đồng Zn với tập hợp tất lớp tương đương số nguyên theo mod n; tập ta xác định phép tính cộng, trừ nhân theo mod n • Thí dụ: Z25 = {0, 1, 2, , 24} Trong Z25 ta có: 15 + 14 4, 15 + 14 = 29 (mod 25) Đồng dư số học modulo • Cho a Zn Một số nguyên x Zn gọi nghịch đảo a theo mod n, a.x (mod n) Nếu có số x ta nói a khả nghịch, ký hiệu x a-1 mod n Thí dụ: 22-1 (mod 25) = 8, 22.8 = 176 (mod25) • Từ định nghĩa ta suy a khả nghịch theo mod n gcd( a, n ) = 1, tức a n nguyên tố với • Ta định nghĩa phép chia Zn sau: a : b (mod n ) = a.b-1 mod n Phép chia thực b khả nghịch theo mod n • Thí dụ: 15 : 22 (mod 25) = 15.22-1 mod 25 = 20 Tính tốn số ngun lớn • Tính tốn với số học modunlo n ta rút gọn kết trung gian theo mod n nhận đáp số tính tốn số học thơng thường • Định lý 1.2: Ngun lý số học modunlo Cho a1, a2, số nguyên, op = {+, - , * } Khi ta có: (a1 op a2) mod n = [ (a1 mod n ) op (a2 mod n)] mod n • Chú ý: Nguyên lý số học modunlo áp dụng cho phép tốn dạng ek • Thí dụ: Tính biểu thức 35 mod 35 mod = ((((32 mod 7)2 mod 7)).3) mod = ((22 mod 7).3) mod = 12 mod = Tính tốn số nguyên lớn • Bằng cách áp dụng nguyên lý số học modunlo n kết tính tốn (cuối trung gian) có giá trị nằm [0, n-1], điều tránh việc sinh kết trung gian số lớn khổng lồ • Như vậy, cần k bít nhớ để lưu trữ số nguyên n cần thiết kế kiểu số ngun có 2k bít thực tất phép toán tập số Zn • Vì có số thuật tốn mã hố sau dựa sở phép tính hàm mod n nên mục trình bày thuật tốn tính luỹ thừa nhanh theo mod n (dùng bình phương liên tiếp nhân) Thuật tốn tính luỹ thừa theo mod n /* INPUT: số nguyên a, z, n; OUTPUT: giá trị biểu thức az mod n;*/ Function fastexp(a, z, n) Var s, a1, z1; Begin s := 1; a1 := a; z1 := z; While (z10) Begin While (z1 mod = 0) Be gin z1 := z1 / 2; a1 := (a1*a1) mod n; End; z1 := z1 - 1; s := (s*a1) mod n; End; fastexp := s; End; Thuật tốn tính luỹ thừa theo mod n Ví dụ Tính 239 mod 29 Bước lặp z1 a1 s K tạo 23 1 - 23 - 20 - 23 - - Kết ta 239 mod 29 = Tính nghịch đảo • Như trình bày mục 1.4.1, số a khả đảo theo mod n gcd(a,n) = • Vấn đề đặt là: giả sử a khả đảo, tìm a-1? (tức tìm số x thuộc [1, n-1] cho a*x mod n =1) • Đơn giản ta duyệt tất số thuộc [1, n-1] ta tìm số x thoả mãn a*x mod n =1, x a-1, với cách số lần duyệt n-1 Tuy nhiên, n lớn (cỡ 10100) số lần duyệt số đáng nể mà với khả máy tính điện tử khơng thể thực Mục giới thiệu thuật toán Euclide mở rộng để tìm phần tử nghịch đảo Thuật tốn Euclide MR tìm nghịch đảo /* INPUT: số nguyên a, n với gcd(a,n)=1; OUTPUT: d = a-1 mod n */ Function ndao(a, n) Var g0, g1,g2, v0, v1,v2, t; Begin g0 := n; g1 := a; v0 :=0; v1 := 1; While (g10) Begin t := g0 div g1; g2 := g0 - t*g1; v2 := v0 - t*v1; g0 := g1; g1 := g2; v0 := v1; v1 := v2; End; If (v0>0) then ndao := v0 else ndao := v0 + n; End; Thuật toán Euclide MR tìm nghịch đảo Ví dụ Tính 5-1 mod B Lặp t g2 v2 g0 v0 g1 v1 K.tạo - - - 1 -1 -1 2 -1 3 -7 -7 g1 = nên dừng thuật tốn Khi đó, ta thấy v0 = > => 5-1 mod 7= v0 = Thuật toán Miller-Rabin kiểm tra số nguyên tố Để kiểm tra xem số p có phải số ngun tố hay khơng, thuật tốn cổ điển kiểm tra xem p có chia hết cho p chia hết cho số lẻ từ đến 𝑝 hay không Nếu p không chia hết cho số p số nguyên tố, ngược lại cần p chia hết cho số trên, p khơng phải số nguyên tố Tuy nhiên p số nguyên tố lớn việc kiểm tra số khơng hiệu mặt thời gian Thuật toán Miller-Rabin TT Miller-Rabin kiểm tra số nguyên tố p TEST(p) { Tìm k, q với k> 0, q lẻ thỏa mãn 𝑝 = 2𝑘 𝑞 + 1; Chọn số ngẫu nhiên a khoảng [2, p - 1] ; If (aq mod p ==1) return “p số nguyên tố”; For (j= 0; j p = 41 số nguyên tố với xác suất sai (1/4)3 Bài tập chương Bài Áp dụng thuật toán FastExp tính giá trị biểu thức (ghi rõ giá trị x, z1, a1 bước trung gian): a) b) 2353 mod103 321 mod 23 (a: b: 14) Bài Áp dụng thuật tốn Euclide mở rộng tính số nghịch đảo (ghi rõ giá trị g0,g1, g2, v0, v1, v2 bước trung gian): 1 1 24 mod 53 b) mod 59 b) (a: 12 b: 42) Bài Tính giá trị biểu thức sau đây: a) (( 25 17 21)(12 24 15)) mod 29 b) ( 2353 15.26) mod 103 a) c) 13.22 21.8 mod 53 17.24 13 (a: 10 b: 20 d) c: 41 6i mod 59 i 1 d: 43 ) Bài Áp dung thuật tốn Miller-Rabin kiểm tra số 13 có số nguyên tố hay hợp số với xác suất sai (0.25)3 Bài 1a) Tính 321 mod 23 Buoc lap: z1 a1 x -K.gan : 21 1 : 20 : 10 : 12 : - 13 : 6 : 13 : Gia tri: Bài 1b) Tính 2353 mod 103 Buoc lap: z1 a1 x -K.gan : 53 23 1 : 52 23 : 26 14 : 13 93 : 12 79 : 100 : : 93 : 81 : 14 Gia tri: 14 Bài 2a) Tính 5-1 mod 59 Buoc lap : t g2 v2 g0 v0 g1 v1 K.gan : 59 1 : 11 -11 -11 : 1 12 -11 12 : -59 12 -59 So nghich dao: 12 Bài 2b) Tính 24-1 mod 53 Buoc lap : t g2 v2 g0 v0 g1 v1 K.gan : 53 24 1 : -2 24 -2 : 4 -2 : 1 -11 -11 : 53 -11 53 So nghich dao: 42 Thuật toán Miller-Rabin Giải 4: p = 13 = 22.3 + => k = 2, q = 3, p-1 = 12 aq mod p a2q mod p t a 10 12 12 => p = 13 số nguyên tố với xác suất sai (1/4)3 ... : 20 : 10 : 12 : - 13 : 6 : 13 : Gia tri: Bài 1b) Tính 235 3 mod 10 3 Buoc lap: z1 a1 x -K.gan : 53 23 1 : 52 23 : 26 14 : 13 93 : 12 79 : 10 0 : : 93 : 81 : 14 Gia tri: 14 Bài... v0 g1 v1 K.gan : 53 24 1 : -2 24 -2 : 4 -2 : 1 -11 -11 : 53 -11 53 So nghich dao: 42 Thuật toán Miller-Rabin Giải 4: p = 13 = 22 .3 + => k = 2, q = 3, p -1 = 12 aq... Bài 2a) Tính 5 -1 mod 59 Buoc lap : t g2 v2 g0 v0 g1 v1 K.gan : 59 1 : 11 -11 -11 : 1 12 -11 12 : -59 12 -59 So nghich dao: 12 Bài 2b) Tính 24 -1 mod 53 Buoc lap : t