Hai người dùng dùng chung một môđun RSA n nhưng có số mũ công khai khác nhau e1,e2 với gcd(e1,e2)=1. Cùng một bản rõ m được gửi mã hóa tới cả hai: c1=me1modn, c2=me2modn.
Kẻ tấn công biết n,e1,c1,e2,c2 (không biết khóa bí mật) có thể khôi phục m: dùng thuật toán Euclid mở rộng tìm cặp số nguyên a,b sao cho
a⋅e1+b⋅e2=1,
khi đó m=c1a⋅c2bmodn. Vì gcd(e1,e2)=1 nên chắc chắn tìm được đúng một cặp (a,b) như vậy (theo thuật toán Euclid mở rộng chuẩn); nếu a hoặc b âm, dùng nghịch đảo modulo của c1 hoặc c2 theo n để tính lũy thừa âm.
Cho n,e1,c1,e2,c2 (đảm bảo gcd(e1,e2)=1 và gcd(m,n)=1), hãy khôi phục m.
Ví dụ: n=3233,e1=17,c1=2790,e2=23,c2=1320 thì m=65.
Một dòng gồm 5 số nguyên n e1 c1 e2 c2 cách nhau bởi khoảng trắng (2≤n<1025, 1≤e1,e2<n, gcd(e1,e2)=1, 0≤c1,c2<n).
In ra duy nhất số nguyên m (0≤m<n).
Ví dụ:
Đầu vào:
3233 17 2790 23 1320
Đầu ra:
65
Đầu vào:
3233 17 1 23 1
Đầu ra:
1
Đang tải editor...