Tôi là sinh viên ngành khoa học máy tính hiện đang giải quyết một vấn đề đặt ra trong mật mã (bài toán thực tế nhưng bị kẹt ở phần toán học).
Về cơ bản, giả sử chúng tôi nhận được một tin nhắn đã được mã hóa bằng hệ thống mật mã của ElGamal và mục tiêu của chúng tôi là giải mã và khôi phục hoàn toàn tin nhắn.
Bản rõ ban đầu là một dãy $p_1p_2\ldots p_m$. Chúng tôi được cung cấp một phiên bản băm của khóa công khai SHA256$(g^s)$ (Vì thế $s$ là khóa riêng và $g^s$ công cộng). Đối với mã hóa, người ta nói rằng một $r_1$ giá trị được lấy mẫu thống nhất một cách ngẫu nhiên và sau đó cho một số giá trị nhất định $u\in\mathbb{Z}_q$, $r_i=u^{i-1}r_1$ cho tất cả những người còn lại $i$'S. Văn bản mật mã sau đó là $c_i=(g^{r_i},p_ig^{r_is})_{i\in[m]}$.
Nhìn chung, chúng tôi được cho $p$, $q$, $g$, $u$, khóa công khai đã băm $H$ và bản mã $c_i$ như một tuple.
Vấn đề tôi gặp phải là tôi không thực sự thấy chúng ta phải tính toán những gì để khôi phục toàn bộ chuỗi ban đầu. Một trong những trợ lý nói với tôi để tìm một số $p_i$'s và sau đó sử dụng chúng để giải mã mật mã nhưng tôi không thấy điều đó đưa tôi đến đâu.
Các $r$'s là chưa biết và ngay cả khi chúng ta biết $g^{r_i}$, vì chúng tôi được cung cấp các giá trị khá lớn, chúng tôi không thể tính toán nhật ký.
Thành thật mà nói, tôi hơi lạc lõng ở đây (tôi không có kiến thức cơ bản về đại số) vì vậy nếu ai đó có một số lời khuyên về những gì tôi nên làm, tôi sẽ thực sự đánh giá cao điều đó.
Cảm ơn :)