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] Kiểm định và sinh khóa RSA an toàn

    Một chương trình sinh khóa RSA cần kiểm tra đầy đủ điều kiện trước khi phát hành khóa, thay vì tin tưởng mù quáng đầu vào. Cho ba số nguyên dương p,q,ep, q, ep,q,e (không đảm bảo p,qp, qp,q là số nguyên tố), hãy thực hiện tuần tự:

    1. Kiểm tra ppp và qqq có đều là số nguyên tố hay không, và p≠qp \ne qp=q. Nếu vi phạm, in INVALID.
    2. Với n=pqn = pqn=pq, φ(n)=(p−1)(q−1)\varphi(n) = (p-1)(q-1)φ(n)=(p−1)(q−1), kiểm tra 1<e<φ(n)1 < e < \varphi(n)1<e<φ(n) và gcd⁡(e,φ(n))=1\gcd(e, \varphi(n)) = 1gcd(e,φ(n))=1. Nếu vi phạm, in INVALID.
    3. Nếu mọi điều kiện thỏa, tính số mũ bí mật ddd (nghịch đảo của eee modulo φ(n)\varphi(n)φ(n)) và in ra VALID n phi(n) d.

    Ví dụ: p=61,q=53,e=17p=61, q=53, e=17p=61,q=53,e=17 đều thỏa mãn ⇒\Rightarrow⇒ in VALID 3233 3120 2753. Với p=4p=4p=4 (không phải số nguyên tố) ⇒\Rightarrow⇒ in INVALID.

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

      Một dòng gồm ba số nguyên p q ep\ q\ ep q e cách nhau bởi khoảng trắng (1≤p,q≤10121 \le p, q \le 10^{12}1≤p,q≤1012, 0≤e≤10120 \le e \le 10^{12}0≤e≤1012).

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

      Nếu điều kiện ở bước 1 hoặc bước 2 không thỏa, in ra đúng chuỗi INVALID. Ngược lại, in ra một dòng VALID n phi d (bốn giá trị cách nhau bởi khoảng trắng: chuỗi "VALID", rồi nnn, φ(n)\varphi(n)φ(n), ddd).

    Ví dụ:

    Đầu vào:

    61 53 17

    Đầu ra:

    VALID 3233 3120 2753
    

    Đầu vào:

    4 7 3

    Đầu ra:

    INVALID
    

    Đang tải editor...