Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Nhân vô hướng trên đường cong Elliptic

    Cho đường cong elliptic dạng Weierstrass trên trường hữu hạn Zp\mathbb{Z}_pZp​ (ppp là số nguyên tố lẻ):

    E:y2≡x3+ax+b(modp),4a3+27b2≢0(modp).E: y^2 \equiv x^3 + ax + b \pmod p, \qquad 4a^3 + 27b^2 \not\equiv 0 \pmod p.E:y2≡x3+ax+b(modp),4a3+27b2≡0(modp).

    Tập các điểm (x,y)(x, y)(x,y) thỏa mãn phương trình trên, cùng với một điểm đặc biệt gọi là điểm vô cực OOO (phần tử trung hòa), tạo thành một nhóm với phép cộng điểm được định nghĩa theo quy tắc hình học/đại số chuẩn:

    • O+P=P+O=PO + P = P + O = PO+P=P+O=P với mọi điểm PPP.
    • Nếu P=(x1,y1)P = (x_1, y_1)P=(x1​,y1​) và Q=(x2,y2)Q = (x_2, y_2)Q=(x2​,y2​) với x1=x2x_1 = x_2x1​=x2​ và y1+y2≡0y_1 + y_2 \equiv 0y1​+y2​≡0, thì P+Q=OP + Q = OP+Q=O (hai điểm đối nhau).
    • Nếu P≠QP \ne QP=Q (và không đối nhau): λ=y2−y1x2−x1 mod p\lambda = \dfrac{y_2 - y_1}{x_2 - x_1} \bmod pλ=x2​−x1​y2​−y1​​modp.
    • Nếu P=QP = QP=Q và y1≠0y_1 \ne 0y1​=0: λ=3x12+a2y1 mod p\lambda = \dfrac{3x_1^2 + a}{2y_1} \bmod pλ=2y1​3x12​+a​modp (nếu y1=0y_1 = 0y1​=0 thì 2P=O2P = O2P=O).
    • Khi đó x3=λ2−x1−x2 mod px_3 = \lambda^2 - x_1 - x_2 \bmod px3​=λ2−x1​−x2​modp, y3=λ(x1−x3)−y1 mod py_3 = \lambda(x_1 - x_3) - y_1 \bmod py3​=λ(x1​−x3​)−y1​modp.

    Cho điểm P=(xP,yP)P = (x_P, y_P)P=(xP​,yP​) trên đường cong và số nguyên k≥0k \ge 0k≥0, hãy tính điểm kP=P+P+⋯+P⏟kkP = \underbrace{P + P + \dots + P}_{k}kP=kP+P+⋯+P​​ (quy ước 0⋅P=O0 \cdot P = O0⋅P=O), sử dụng thuật toán nhân đôi-và-cộng (double-and-add).

    Ví dụ: với p=23,a=1,b=1p=23, a=1, b=1p=23,a=1,b=1, điểm P=(3,10)P=(3,10)P=(3,10) nằm trên đường cong (vì 102≡33+3+1≡8(mod23)10^2 \equiv 3^3+3+1 \equiv 8 \pmod{23}102≡33+3+1≡8(mod23)). Ta có 2P=(7,12)2P = (7, 12)2P=(7,12).

    • Định dạng đầu vào:

      Dòng đầu tiên chứa ba số nguyên p a bp\ a\ bp a b (ppp nguyên tố lẻ, 5≤p<1045 \le p < 10^{4}5≤p<104, 0≤a,b<p0 \le a, b < p0≤a,b<p, đảm bảo 4a3+27b2≢0(modp)4a^3+27b^2 \not\equiv 0 \pmod p4a3+27b2≡0(modp)). Dòng thứ hai chứa hai số nguyên xP yPx_P\ y_PxP​ yP​ (0≤xP,yP<p0 \le x_P, y_P < p0≤xP​,yP​<p), là tọa độ điểm PPP nằm trên đường cong. Dòng thứ ba chứa số nguyên kkk (0≤k≤1060 \le k \le 10^{6}0≤k≤106).

    • Định dạng đầu ra:

      Nếu kPkPkP là điểm vô cực, in ra chuỗi O (chữ O in hoa). Ngược lại, in ra hai số nguyên x yx\ yx y (tọa độ điểm kPkPkP) cách nhau bởi một khoảng trắng.

    Ví dụ:

    Đầu vào:

    23 1 1
    3 10
    0
    

    Đầu ra:

    O
    

    Đầu vào:

    23 1 1
    3 10
    1
    

    Đầu ra:

    3 10
    

    Đang tải editor...