Протокол COINFLIP-ALTER-1.0

Протокол с использованием односторонней функции.
Инициатор информационного обмена для каждой итерации - B.
После выдачи одной из сторон сообщения типа ошибка, связь разрывается.
t - число подбрасываний монеты.
Окончание строки кодируется 0x(опциональный 0D)0A.
Итерация A B Комментарий
1 OK | $ошибка (строка <= 256 байт) название протокола (строка <= 32 байт) Символ '|' означает 'или'
2 OK | $ошибка (строка <= 256 байт) $t ( t из диапазона [1; 2**32 - 1 ] ) (строка <= 10 байт)  
3 OK | $ошибка (строка <= 256 байт) имя односторонней функции {MD5,RIPEMD5,SHA-1} (строка <= 32 байт)  
бит (строка из одного символа) значение односторонней функции от случайного числа в 16-тиричном виде (Размер строки зависит от односторонней функции. 32 для MD5) для B: если принятый бит совпал с загаданным, то выпала решка(0), в противном случае орёл(1).
  то случайное число, которое подверглось одностороннему хешированию (256 бит в сыром виде) для A: если отправленное значение совпало с принятым % mod 2, то выпала решка(0), в противном случае орёл(1).
Последние две итерации выполняются t раз.
После выполнения этого протокола у A и B будет по t одинаковых значений выпадений монетки.

Пример:

Итерация A B
1 OK COINFLIP-ALTER-1.0
2 OK 32
3 OK MD5
0 de32270b4f473f869aa1aba52fb20b5b
  сырые данные