تاسهایی که میشود بررسی کرد
بررسی تاسهای یک بازی
وقتی دست یا مسابقه تمام شد، در کارت پایان بازی روی مهر بزنید، بعد «بررسی این تاسها» را. این صفحه با همهٔ اطلاعات پرشده باز میشود و مرورگر شما مهر و همهٔ تاسها را از نو حساب میکند و مقدارهای بازی را به هیچ جا نمیفرستد.
یک تاس چطور حساب میشود
همین کد در برنامه و روی سرور اجرا میشود؛ این صفحه نسخهای از آن است. هر تاسِ یک مسابقه از یک HMAC به دست میآید:
mac = HMAC-SHA256(key = server seed bytes,
message = phoneSeed1 ":" phoneSeed2 ":" rollNumber)
byte = the first byte of mac that is below 252
v = byte mod 36
dice = (floor(v / 6) + 1, v mod 6 + 1)
در این فرمول، key بایتهای کلید سرور است، message کلیدهای گوشی و شمارهٔ تاس که با دونقطه به هم وصل شدهاند، و byte نخستین بایتِ mac که کمتر از ۲۵۲ باشد. عدد ۲۵۲ برابر ۷ × ۳۶ است، پس هر یک از ۳۶ حالت تاس (با در نظر گرفتن ترتیب دو تاس) احتمال برابر دارد. بایتهای ۲۵۲ تا ۲۵۵ کنار گذاشته میشوند، چون نگه داشتنشان چهار حالت اول را کمی پرشانستر میکرد. اگر هیچکدام از ۳۲ بایت کمتر از ۲۵۲ نباشد (احتمالش حدود ۲-۱۹۲ است؛ آنقدر کم که نمیشود انتظارش را داشت)، یک + به بخش کلیدهای گوشی اضافه میشود و MAC دوباره حساب میشود: phoneSeed1:phoneSeed2+:rollNumber، بعد ++، و همینطور تا آخر.
مهری که پیش از اولین تاس نشان داده میشود، SHA-256(server seed bytes) به صورت هگز است. کلید سرور ۱۶ تا ۶۴ بایت است؛ بازی ۳۲ بایت به کار میبرد. کلید گوشی ۱ تا ۱۲۸ نویسه از حروف، ارقام، _ و - است؛ برنامه ۳۲ نویسهٔ هگز میسازد.
چرا این روش کار میکند
مهر پیش از اولین تاس روی میز است، پس سرور نمیتواند پس از دیدن روند بازی کلیدش را عوض کند: مهر هم عوض میشد. گوشی شما کلید خودش را پس از نمایش مهر میسازد، پس سرور نمیتواند کلیدی انتخاب کند که به آن بخورد. هر پرتاب به هر دو کلید بستگی دارد، و هر چه برای حساب دوباره لازم است در دست شماست.
اگر صفحه تاسی نشان داد که با آنچه روی تخته دیدید فرق دارد، یا مهری که نمیخواند، پیوند را نگه دارید و به [email protected] بنویسید. میخواهیم بدانیم.
پیوند به این صفحه
دکمهٔ «بررسی این تاسها» در برنامه این صفحه را با همهٔ آنچه در پیوند بعد از # میآید باز میکند؛ بخشی که مرورگر شما هرگز به هیچ سروری نمیفرستد: /fa/check/#v=1&s=…&c=…&p=a,b&r=6344…&g=52,48. s کلید سرور است، c مهر، p کلیدهای گوشی به ترتیب جای بازیکنان، r همهٔ تاسها به ترتیب، هر کدام با دو رقم، و g، برای مسابقهای با چند دست، تعداد تاسهای هر دست.