QJ603 - Giải mã RSA
Xem dưới dạng PDFĐâ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