Ваша схема работает, но нет необходимости иметь $r_p$.
Если вы удалите $r_p$, то важно заранее согласовать разрядность вашего коэффициента ослепления $r_s$ будет, так что обязательство не будет податливым, решив удалить или добавить биты в начало $Т$ при добавлении или удалении битов к тому, что вы позже называете значением вашего ослепляющего фактора $r_s$.
Затем Алиса отправляет $хэш(r_s\mathbin\| T)$ (куда $\mathbin\|$ означает конкатенацию), а позже раскрывает $r_s$ и $Т$. Просто используйте любой криптографически безопасный хэш с уровнем безопасности не менее 128 бит, например SHA256. Используйте не менее 128 бит для $r_s$ и убедитесь, что он равномерно случайный, чтобы предотвратить перебор значений Бобом $r_s$ узнать свой прогноз заранее.
Вы можете быть дополнительно обеспокоены тем, что Боб может создавать производные от обязательств Алисы, что возможно, если хэш уязвим для атак с расширением длины.
Сценарий таков: Алиса фиксирует прогноз и объявляет об этом, затем Боб немедленно объявляет об обязательстве, основанном на расширении длины, где что-то добавляется к прогнозу Алисы. Боб не может открыть свое обязательство, пока Алиса не откроет свое, раскрыв ослепляющий фактор. Появление дублирующего ослепляющего фактора будет подозрительным, но только если кто-то обратит на это внимание.
Вы можете избежать как этой угрозы, так и избежать необходимости заранее согласовывать битовую длину маскирующего фактора, используя один из следующих методов:
Рассчитайте обязательство как хеш (хеш (ослепляющий фактор) $\mathbin\|$ хэш (предсказание)).
Как указывает @kelalaka, используйте HMAC с ослепляющим фактором в качестве ключа. Следовательно, обязательство = HMAC-SHA256 (ослепляющий фактор, прогноз).