Đề án của bạn hoạt động, nhưng không cần phải có $r_p$.
Nếu bạn loại bỏ $r_p$, thì điều quan trọng là phải đồng ý trước độ dài bit của hệ số gây mù của bạn $r_s$ sẽ là, do đó cam kết không thể uốn nắn được bằng cách quyết định loại bỏ hoặc thêm các bit vào phần đầu của $T$ trong khi thêm hoặc bớt bit vào cái mà sau này bạn cho là giá trị của hệ số mù của bạn $r_s$.
Alice sau đó gửi $hash(r_s \mathbin\| T)$ (ở đâu $\mathbin\|$ có nghĩa là nối), và sau đó tiết lộ $r_s$ và $T$. Chỉ cần sử dụng bất kỳ hàm băm bảo mật bằng mật mã nào có mức bảo mật ít nhất là 128 bit, chẳng hạn như SHA256. Sử dụng ít nhất 128 bit cho $r_s$ và đảm bảo rằng nó ngẫu nhiên thống nhất, để ngăn Bob khỏi các giá trị cưỡng bức của $r_s$ để khám phá dự đoán của bạn trước.
Ngoài ra, bạn có thể lo ngại về việc Bob có thể tạo ra các dẫn xuất từ cam kết của Alice, điều này có thể xảy ra nếu hàm băm dễ bị tấn công kéo dài.
Kịch bản là: Alice cam kết dự đoán và thông báo cam kết, sau đó Bob ngay lập tức thông báo cam kết dựa trên cuộc tấn công kéo dài trong đó có điều gì đó được thêm vào dự đoán của Alice. Bob không thể mở cam kết của mình cho đến khi Alice mở cam kết của cô ấy bằng cách tiết lộ yếu tố mù quáng. Sự xuất hiện của một yếu tố mù trùng lặp sẽ đáng ngờ, nhưng chỉ khi ai đó chú ý.
Bạn có thể tránh cả mối đe dọa này và tránh phải đồng ý trước độ dài bit của hệ số làm mù bằng cách sử dụng một trong các phương pháp sau:
Tính toán cam kết dưới dạng hash(hash(blinding factor) $\mathbin\|$ băm (dự đoán)).
Như @kelalaka đã chỉ ra, hãy sử dụng HMAC, với yếu tố làm mù là chìa khóa. Do đó, cam kết = HMAC-SHA256(yếu tố mù quáng, dự đoán).