ТаблаPearl

Зарове, които можеш да провериш

Провери заровете на игра

Когато играта или мачът свърши, натисни печата на картата с резултата, после „Провери заровете“. Тази страница се отваря с всичко попълнено и твоят браузър изчислява наново печата и всяко хвърляне, без да изпраща никъде данните от играта.

Екранът със заровете в приложението го показва, когато играта свърши (в мач, когато свърши мачът). Докосни го там, за да го копираш. Дотогава остава затворено нарочно.
Остави полето празно и страницата ще покаже печата на семето по-горе.
В реда, в който ги показва екранът със заровете. Срещу компютъра без интернет е само твоето.
Хвърлянията се номерират от 1 за целия мач. Началните хвърляния също се броят, а в мач броенето продължава от игра на игра.
Хвърлянията, както ги показва екранът със заровете, със или без номерата им. Постави ги и всяко хвърляне ще бъде сравнено, а не само показано.

Как се изчислява едно хвърляне

Един и същ код работи в приложението и на сървъра; тази страница е негово копие. Всяко хвърляне в мача идва от един HMAC:

mac    = HMAC-SHA256(ключ = байтовете на семето на сървъра,
                     съобщение = семеТелефон1 ":" семеТелефон2 ":" номерХвърляне)
байт   = първият байт на mac, по-малък от 252
v      = байт mod 36
зарове = (floor(v / 6) + 1,  v mod 6 + 1)

252 е 7 × 36, така че всяко от 36-те подредени хвърляния е еднакво вероятно. Байтовете от 252 до 255 се пропускат, защото иначе първите четири хвърляния биха се падали малко по-често. Ако нито един от 32-та байта не е по-малък от 252 (вероятност около 2-192: твърде рядко, за да се очаква), към частта със семената на телефоните се добавя + и MAC се изчислява отново: семеТелефон1:семеТелефон2+:номерХвърляне, после ++ и така нататък.

Печатът, показан преди първото хвърляне, е SHA-256(байтовете на семето на сървъра) в шестнайсетичен запис. Семето на сървъра е от 16 до 64 байта; играта използва 32. Семето на телефона е от 1 до 128 знака: букви, цифри, _ и -; приложението създава 32 шестнайсетични знака.

Защо това работи

Печатът е на масата преди първото хвърляне, така че сървърът не може да смени семето си, след като види как върви играта: печатът също би се сменил. Телефонът ти създава своето семе, след като печатът е показан, така че сървърът не може да избере семе, което да му пасва. Всяко хвърляне зависи и от двете, а у теб е всичко нужно, за да ги изчислиш наново.

Ако страницата покаже хвърляне, различно от това, което видя на дъската, или печат, който не съвпада, запази линка и пиши на [email protected]. Искаме да знаем.

Линк към тази страница

Бутонът „Провери заровете“ в приложението отваря тази страница с всичко, което стои след # в линка. Тази част браузърът ти никога не изпраща към сървър: /bg/check/#v=1&s=…&c=…&p=a,b&r=6344…&g=52,48. s е семето на сървъра, c е печатът, p са семената на телефоните по реда на местата, r е всяко хвърляне като две цифри по реда на хвърлянията, а g, при мач от няколко игри, е колко хвърляния е имала всяка игра.