QJ603 - Giải mã RSA

Xem dưới dạng PDF

Gửi bài giải

Điểm: 100
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Kiểu bài tập

Đây là bài điền kết quả, bạn chỉ cần tính ra kết quả rồi dùng câu lệnh xuất trong code để in kết quả đó ra là được.

RSA là một thuật toán mã hóa kinh điển. Quá trình mã hóa cơ bản của nó như sau.

Đầu tiên sinh hai số nguyên tố $p,q$, đặt $n=p \cdot q$, chọn $d$ nguyên tố cùng nhau với $(p-1) \cdot (q-1)$, khi đó có thể tìm được $e$ sao cho $d \cdot e$ chia $(p-1) \cdot (q-1)$ dư $1$.

$n,d,e$ tạo thành khóa riêng tư, $n,d$ tạo thành khóa công khai.

Khi dùng khóa công khai để mã hóa một số nguyên $X$ (nhỏ hơn $n$), ta tính $C=X^d \bmod n$, thì $C$ là bản mã sau khi mã hóa.

Khi nhận được bản mã $C$, có thể dùng khóa riêng tư để giải mã, công thức tính là $X=C^e \bmod n$.

Ví dụ, khi $p=5,q=11,d=3$ thì $n=55,e=27$. Nếu mã hóa số $24$, ta được $24^3 \bmod 55=19$. Giải mã số $19$, ta được $19^{27} \bmod 55=24$.

Bây giờ bạn biết trong khóa công khai $n=1001733993063167141,d=212353$, đồng thời bạn chặn được bản mã người khác gửi là $C=20190324$. Hỏi bản gốc là bao nhiêu?

Dữ liệu vào

Không có

Dữ liệu ra

In ra một số nguyên là đáp án

Ví dụ

Input

Không có

Output

Không có

Nhận xét

Không có ý kiến tại thời điểm này.