Hỏi về thuật toán mã hóa Rabin
Chào mọi người.
Em đang học môn lý thuyết mật mã và được giao bài tập về mô phỏng hệ mật Rabin bằng một ngôn ngữ lập trình.
Em có đọc ở trang wikipedia: https://en.wikipedia.org/wiki/Rabin_cryptosystem
nhưng cái chỗ Decryption em không hiểu lắm, cụ thể:
Ở ví dụ: chọn p = 7, q = 11, n = p*q = 77.
Chọn bản rõ cần mã hóa là m = 20.
Mã hóa: c = m^2 mod n = 400 mod 77 = 15.
Giải mã: ở đây có 2 cách giải mã, một cách áp dụng khi (p mod 4 = 3) và (q mod 4 = 3), đây là trường hợp đặc biệt sẽ giúp tìm 4 căn bậc 2 của c mod n nhanh hơn. Cách còn lại là tính mp và mq, với mp = (căn bậc 2 của c) mod p, mq = (căn bậc 2 của c) mod q.
Ở ví dụ thì c = 15, nhưng em ko hiểu sao lịa tính ra được mp = 1 và mq = 9???
Mong mọi người giải thích hộ em, em cám ơn.
Chắc chỗ của bạn là cái này
q = 11 => s = 15 ^ 3 mod 11 = 9
Bạn xem thử cái này xem