cái bạn cần là chữ ký số (digital signature) chứ đâu phải mã hóa.
RSA có cặp key: public key (e,n) và private key d
Người sử dụng A lưu d bí mật, và thông bố (e,n) cho tất cả mọi người.
Nếu B muốn gửi thông điệp tới A, để cho an toàn, B mã hóa thông điệp M: B tính C = Me (mod n) rồi gửi C tới A. Bất kì ai nhận được C đều ko hiểu C chứa thông điệp gì, trừ A.
Để giải mã thông điệp, A tính M = Cd (mod n). Vì chỉ có mũ d mới ra lại thông điệp M ban đầu, nên chỉ có A là người có private key d mới giải mã được C.
đó là mã hóa thông điệp, nhưng RSA có cái bất lợi là thông điệp phải ngẫu nhiên thì mới an toàn, nên mã hóa RSA thường dùng để mã hóa key K là số ngẫu nhiên, sau đó key K này sẽ được dùng trong thuật toán mã hóa khác, vd AES.
còn cái bạn muốn là chữ ký số:
A tạo 1 thông điệp M, A muốn truyền M cho mọi người, và chứng minh M là do mình viết ra. Để chứng minh, A tính H = hash(M), với hash là 1 hàm băm nào đó, cần hash M trước vì RSA thông điệp ngẫu nhiên an toàn hơn thông điệp có ý nghĩa. Sau đó A tính S = Hd (mod n). Sau đó A gửi (M, hash, S) cho mọi người.
Mọi người ai cũng biết public key (e,n) của A, nên để xác nhận M là của A, mọi người tính: H = Se (mod n), và so sánh với hash(M). Nếu H == hash(M) thì M đúng là do A viết ra, vì chỉ có A mới có private key d tương ứng với public key (e,n).
trong chữ ký số thì thông điệp ban đầu M ko bị mã hóa, nên dù có mất private key d thì M đã được xác nhận từ trước vẫn có tính xác thực và đâu có bị mã hóa đâu mà cần giải mã…