Back to Home

Thuật toán Euclide mở rộng

Bài toán tìm nghịch đảo modulo là một bước cực kỳ quan trọng trong mật mã học.

Định lý Bézout

Cho a,bNa,b \in \mathbb Ngcd(a,b)=1\gcd(a,b)=1, tồn tại x,yZx,y \in \mathbb Z sao cho ax+by=1ax+by=1

Chứng minh

Xét tập hợp S={ax+byx,yZ,ax+by>0}S=\{ax+by \quad | x,y \in \mathbb Z, ax+by \gt 0\}. Dễ dàng thấy rằng SS không rỗng.

Gọi dd là phần tử nhỏ nhất của SS, vậy d=ax0+by0(x0,y0Z)d=ax_0 + by_0 \quad (x_0,y_0 \in \mathbb Z). Mục tiêu là ta sẽ chứng minh d=1d=1.

Đầu tiên, ta chứng minh dd là ước số của aa. thật vậy, ta có: a=qd+r(0r<d)a=qd + r \quad (0 \le r \lt d), vậy r=aqdr=a-qd, thay d=ax0+by0d=ax_0 + by_0 vào,
ta có:r=aq(ax0+by0)=a(1qx0)+b(qy0)r = a-q(ax_0 + by_0) = a(1-qx_0) + b(-qy_0)

Như vậy, rr cũng có dạng Aa+ByAa+By do đó rSr \in S, mà r<dr<d vậy nhất định r=0r=0, suy ra dd là ước số của aa.

Tương tự, dd cũng là ước số của bb. Mà ta có gcd(a,b)=1\gcd(a,b)=1 theo giả thuyết, vậy d=1d=1, suy ra đpcm.

Nghịch đảo Modulo

Nghịch đảo modulo của aa theo modulo mm là số nguyên xxsao cho a.x1modma.x \equiv 1 \mod m.

Ta sẽ chuyển đổi để đưa từ bài toán kiếm nghịch đảo modulo của a về định lý Bézout: ax1modm    ax1=myax \equiv 1\mod m \iff ax-1=my hay axmy=1ax - my=1.

Điều kiện để tồn tại nghiệm là gcd(a,m)=1\gcd(a,m)=1

Thuật toán Euclide ngược

Ví dụ: Tìm nghịch đảo của 6767 trong modulo 1212. Ta đi tìm x,yZ:67x+12y=1x,y\in \mathbb Z: 67x + 12y = 1.

Chiều xuôi, liên tục chia lấy dư số lớn cho số bé để tìm các số dư:

  • 67 chia 12 dư 7

  • 12 chia 7 dư 5

  • 7 chia 5 dư 2

  • 5 chia 2 dư 1 ngừng

Ta thu được các số dư là 2,5,7. Giờ ta đi tính ngược lên để tìm nhân tử Bezout.

Bắt đầu với 2, ta có 1 = 5-2.2, mà 2=7-5.1, thay vào ta có 1=5-2(7-5.1)=3.5-7.2
Tiếp tục với 5 = 12 - 1.7, thay vào: 1=3(12-1.7)-2.7 = 3.12-5.7
Tiếp tục với 7 = 67 - 5.12, thay vào 1=3.12 - 5(67-5.12)=28.12-5.67

Như vậy x=5,y=28x=-5, y=28. Vì x=5<0x=-5 \lt 0 ta cộng thêm 1212 để làm x=12+(5)x=12+(-5).
Vậy 77 chính là nghịch đảo của 6767 trong modulo 1212.

Demo

Comments

0/300

Leave name/email blank to comment anonymously

No comments yet. Be the first to comment!