āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ†āĻ›ā§‡ - āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•ā§‡āĻ¨ā§āĻĻā§āĻ°ā§€āĻ­ā§‚āĻ¤ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻ¨āĻŽā§āĻŦāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ•āĻ āĻŋāĻ¨āĨ¤ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŦ āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻāĻ° āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ•ā§‹āĻ¨ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻ¨ā§‡āĻ‡, āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨āĻ¸ā§āĻŦā§€āĻ•āĻžāĻ°ā§āĻ¯ āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻ°āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦāĻ˛āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ—ā§‡āĻŽāĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°āĻĨāĻŽāĻŸāĻŋ āĻ›āĻŋāĻ˛ āĻ“āĻ¯āĻŧā§‡āĻ­āĻ¸ āĻ•ā§āĻ°āĻŋāĻ¸āĻŽāĻžāĻ¸ āĻŸā§āĻ°āĻŋ. āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹ āĻ¨āĻŽā§āĻŦāĻ° āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻŸāĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ›āĻŋāĻ˛āĨ¤

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦā§‡, āĻ†āĻŽāĻ°āĻž āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŽā§āĻŦāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻāĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ˛: āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻŸāĻŋ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§‡āĻŸ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ā§‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻŸāĻŋ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ¨āĻ¯āĻŧāĨ¤

āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻāĻ¸ā§‡āĻ›āĻŋ: āĻ•āĻŽāĻŋāĻŸ-āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ¸ā§āĻ•āĻŋāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ 1 āĻĨā§‡āĻ•ā§‡ 5 āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ…āĻ¨ā§āĻŽāĻžāĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡, āĻāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ˛āĻŦāĻŖ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻļ āĻ•āĻ°ā§‡āĻ›ā§‡ āĻ•ā§‡āĻ•āĻžāĻ• āĻĢāĻžāĻ‚āĻļāĻ¨. āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡āĻ‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻ¨āĻŽā§āĻŦāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻšā§āĻ›ā§‡ āĻ¯ā§‡ āĻ—ā§‡āĻŽāĻŸāĻŋ āĻšā§āĻ¯āĻžāĻļ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ˛ā§āĻ•āĻžāĻ¨ā§‹ āĻ¨āĻŽā§āĻŦāĻ°āĻŸāĻŋ āĻ…āĻ¨ā§āĻŽāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻ›ā§‡ āĻĢā§‹āĻŸā§‡āĨ¤

āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻœāĻŋ āĻ°ā§‡āĻ–ā§‡āĻ›āĻŋāĻ˛, āĻāĻŦāĻ‚ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻ˛ā§āĻ•āĻžāĻ¨ā§‹ āĻ¨āĻŽā§āĻŦāĻ° āĻāĻŦāĻ‚ "āĻ˛āĻŦāĻŖ" āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¸āĻšāĻœ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ, āĻ¤āĻŋāĻ¨āĻŋ āĻ•āĻžāĻ°ā§āĻĄāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨āĨ¤ āĻāĻ° āĻĒāĻ°ā§‡, āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¨āĻŽā§āĻŦāĻ°āĻ—ā§āĻ˛āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ¯āĻŧ āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻœāĻŋāĻ¤ā§‡āĻ›ā§‡ āĻŦāĻž āĻšā§‡āĻ°ā§‡āĻ›ā§‡ āĻ•āĻŋāĻ¨āĻžāĨ¤

āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŽā§āĻŦāĻ° āĻŦāĻž "āĻ˛āĻŦāĻŖ" āĻ¨āĻž āĻĒāĻžāĻ āĻžāĻ˛ā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻœāĻŋāĻ¤ā§‡āĻ›ā§‡āĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ—ā§‡āĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡āĻ‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ¤ā§‡ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻœāĻ¯āĻŧ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ›āĻŋāĻ˛āĨ¤ āĻāĻŸāĻŋ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ•, āĻ¸āĻŽāĻ¯āĻŧāĻ¸āĻžāĻĒā§‡āĻ•ā§āĻˇ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛ āĻŦāĻ˛ā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¤āĻ–āĻ¨ āĻ†āĻ° āĻ•ā§‹āĻ¨ā§‹ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ›āĻŋāĻ˛ āĻ¨āĻžāĨ¤

āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ, āĻŸā§āĻ°ā§āĻ¯āĻžāĻĄāĻŋāĻ¸āĻŋāĻ¸ āĻĻāĻ˛ āĻ“āĻ¯āĻŧā§‡āĻ­āĻ¸ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻ•āĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻ•āĻ°ā§‡āĻ›ā§‡ rsaVerify(). āĻāĻŸāĻŋ āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ•ā§€-āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ RSA āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻŦā§ˆāĻ§āĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§‡āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻŸāĻŋ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻ†āĻŽāĻ°āĻž āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻ—ā§‡āĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ: āĻĄāĻžāĻ‡āĻ¸ āĻ°ā§‹āĻ˛āĻžāĻ°, Coin Flip и āĻ°āĻžāĻ‡āĻĄ āĻ…āĻ¨ āĻ“āĻ¯āĻŧā§‡āĻ­āĻ¸. āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•ā§‡ āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻāĻŸāĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ•āĨ¤

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

āĻ†āĻ¸ā§āĻ¨ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ°āĻžāĻ‡āĻĄ āĻ…āĻ¨ āĻ“āĻ¯āĻŧā§‡āĻ­āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻĻā§‡āĻ–āĻŋāĨ¤ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡ āĻāĻ–āĻžāĻ¨ā§‡.

āĻŸā§āĻ¯āĻžāĻŦā§‡ āĻ¯āĻžāĻ¨ āĻ˛āĻŋāĻĒāĻŋ āĻāĻŦāĻ‚ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻĄāĻŋāĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻĄ. āĻ†āĻĒāĻ¨āĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ•ā§‹āĻĄ (āĻ“āĻ°āĻĢā§‡ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ) āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻŦā§‡āĻ¨āĨ¤

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻ•āĻ¨ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸ āĻ•ā§‹āĻĄā§‡ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻĨāĻžāĻ•ā§‡āĨ¤ @Callable āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ†āĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨. āĻ†āĻŽāĻ°āĻž āĻĻā§āĻŸāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ†āĻ—ā§āĻ°āĻšā§€: āĻŦāĻžāĻœāĻŋ и āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻšāĻžāĻ°:

  • func āĻŦāĻžāĻœāĻŋ (āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧ āĻšāĻ¯āĻŧā§‡āĻ¸)
  • func āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻšāĻžāĻ° (gameId,rsaSign)

1. āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¸ā§‡āĻ—āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻĻā§ˆāĻ°ā§āĻ˜ā§āĻ¯ āĻāĻŦāĻ‚ āĻŦāĻžāĻœāĻŋāĻ° āĻ†āĻ•āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

2. āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻœāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ›āĻŦāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻž āĻšāĻŦā§‡ āĻŦāĻžāĻœāĻŋ ("50").

3. āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻ•āĻ¨ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻĄā§āĻ°ā§‡āĻ¸ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¨āĻ­ā§‹āĻ•ā§‡āĻļāĻ¨ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻĒāĻžāĻ āĻžāĻ¯āĻŧ (āĻ¸āĻŽā§āĻĒā§āĻ°āĻšāĻžāĻ° InvocationTx)āĨ¤ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡ āĻ•āĻ˛ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦāĻžāĻœāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ āĻ¯ā§‡ āĻ‡āĻ¨āĻ­ā§‹āĻ•ā§‡āĻļāĻ¨ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ¤ā§‡ āĻŦāĻžāĻœāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ (āĻĒāĻ›āĻ¨ā§āĻĻ: āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚) āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻŸā§āĻ°āĻŋāĻ—āĻžāĻ° āĻ•āĻ°ā§‡āĨ¤

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

4. āĻŦāĻžāĻœāĻŋ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°ā§āĻ¨:

@Callable(i)
func bet (playerChoice) = {
    let newGameNum = IncrementGameNum()
    let gameId = toBase58String(i.transactionId)
    let pmt = extract(i.payment)
    let betNotInWaves = isDefined(pmt.assetId)
    let feeNotInWaves = isDefined(pmt.assetId)
    let winAmt = ValidateBetAndDefineWinAmt(pmt.amount, playerChoice)
    let txIdUsed = isDefined(getString(this, gameId))
    if (betNotInWaves)
        then throw ("Bet amount must be in Waves")
        else if (feeNotInWaves)
            then throw ("Transaction's fee must be in Waves")
            else if (txIdUsed)
                then throw ("Passed txId had been used before. Game aborted.")
                else {
                    let playerPubKey58 = toBase58String(i.callerPublicKey)
                    let gameDataStr = FormatGameDataStr(STATESUBMITTED, playerChoice, playerPubKey58, height, winAmt, "")
                    ScriptResult(WriteSet(cons(DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), cons(DataEntry(GAMESCOUNTERKEY, newGameNum), cons(DataEntry(gameId, gameDataStr), nil)))), TransferSet(cons(ScriptTransfer(SERVER, COMMISSION, unit), nil)))
                    }
    }

āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ—ā§‡āĻŽ āĻ˛ā§‡āĻ–ā§‡āĨ¤ āĻ¯āĻĨāĻž:

  • āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ—ā§‡āĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€ (āĻ–ā§‡āĻ˛āĻžāĻ° āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻ°āĻŖ āĻ¨āĻŽā§āĻŦāĻ°)
  • āĻ–ā§‡āĻ˛āĻžāĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻž = āĻœāĻŽāĻž āĻĻā§‡āĻ“āĻ¯āĻŧāĻž
  • āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧā§‡āĻ° āĻĒāĻ›āĻ¨ā§āĻĻ (āĻ¸ā§‡āĻ—āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻĻā§ˆāĻ°ā§āĻ˜ā§āĻ¯ 50)
  • āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻ•ā§€
  • āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻœāĻ¯āĻŧ (āĻ–ā§‡āĻ˛ā§‹āĻ¯āĻŧāĻžāĻĄāĻŧā§‡āĻ° āĻŦāĻžāĻœāĻŋāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡)

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻāĻ°āĻ•āĻŽāĻ‡ āĻšāĻ¯āĻŧ (āĻ•ā§€-āĻŽāĻžāĻ¨):

{
    "type": "string",
    "value": "03WON_0283_448t8Jn9P3717UnXFEVD5VWjfeGE5gBNeWg58H2aJeQEgJ_06574069_09116020000_0229",
    "key": "2GKTX6NLTgUrE4iy9HtpSSHpZ3G8W4cMfdjyvvnc21dx"
  }

"āĻ•ā§€" (āĻ•ā§€) - āĻ–ā§‡āĻ˛āĻžāĻ° āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻ°āĻŖ āĻ¨āĻŽā§āĻŦāĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ–ā§‡āĻ˛āĻž. āĻ…āĻŦāĻļāĻŋāĻˇā§āĻŸ āĻĄā§‡āĻŸāĻž "āĻŽāĻžāĻ¨" āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ‡ āĻāĻ¨ā§āĻŸā§āĻ°āĻŋ āĻŸā§āĻ¯āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ‰āĻĒāĻžāĻ¤ā§āĻ¤ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ:

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

5. āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻŸāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻ•āĻ¨ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ "āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ" āĻāĻŦāĻ‚ āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻāĻĒāĻŋāĻ†āĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°ā§‡āĻ°āĻŋāĻ¤ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ (āĻ¨āĻ¤ā§āĻ¨ āĻ—ā§‡āĻŽ) āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ¯āĻŧāĨ¤ āĻ¨āĻ¤ā§āĻ¨ āĻ—ā§‡āĻŽā§‡āĻ° āĻ—ā§‡āĻŽ āĻ†āĻ‡āĻĄāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ā§‡ āĻāĻŸāĻŋ āĻ†āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻŦāĻž āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻž

6. āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻšāĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ (gameId, rsaSign)āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ‡ āĻŽāĻ¤:

withdraw ("FwsuaaShC6DMWdSWQ5osGWtYkVbTEZrsnxqDbVx5oUpq", "base64:Gy69dKdmXUEsAmUrpoWxDLTQOGj5/qO8COA+QjyPVYTAjxXYvEESJbSiCSBRRCOAliqCWwaS161nWqoTL/TltiIvw3nKyd4RJIBNSIgEWGM1tEtNwwnRwSVHs7ToNfZ2Dvk/GgPUqLFDSjnRQpTHdHUPj9mQ8erWw0r6cJXrzfcagKg3yY/0wJ6AyIrflR35mUCK4cO7KumdvC9Mx0hr/ojlHhN732nuG8ps4CUlRw3CkNjNIajBUlyKQwpBKmmiy3yJa/QM5PLxqdppmfFS9y0sxgSlfLOgZ51xRDYuS8NViOA7c1JssH48ZtDbBT5yqzRJXs3RnmZcMDr/q0x6Bg==")

7. āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ†āĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻĒāĻžāĻ āĻžāĻ¯āĻŧ (āĻ¸āĻŽā§āĻĒā§āĻ°āĻšāĻžāĻ° InvocationTx)āĨ¤ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡ āĻ—āĻ āĻŋāĻ¤ āĻ‰āĻ‡āĻĨāĻĄā§āĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻ˛ āĻĨāĻžāĻ•ā§‡ (gameId, rsaSign):

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡ āĻ–ā§‡āĻ˛āĻžāĻ° āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻ°āĻŖ āĻ¨āĻŽā§āĻŦāĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ—ā§‡āĻŽ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ•ā§€ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€āĻ¤ā§‡ RSA āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ•āĻ°āĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ā§ˇ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ…āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤.

āĻāĻ‡ āĻ…āĻ°ā§āĻĨ āĻ•āĻŋ?

āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻ‡ āĻŽāĻžāĻ¨ (āĻ—ā§‡āĻŽ āĻ†āĻ‡āĻĄāĻŋ) āĻ¨āĻŋāĻ‡ āĻāĻŦāĻ‚ āĻāĻ¤ā§‡ RSA āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻŋāĨ¤ āĻ†āĻŽāĻ°āĻž āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻāĻ•āĻ‡ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§‡āĻ¤ā§‡ āĻšāĻŦā§‡. āĻāĻ‡āĻ­āĻžāĻŦā§‡ RSA āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ¨āĻŽā§āĻŦāĻ°āĻŸāĻŋ āĻšā§‡āĻ°āĻĢā§‡āĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻž, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ—ā§‡āĻŽ āĻ†āĻ‡āĻĄāĻŋ āĻāĻŦāĻ‚ RSA āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ—ā§‡āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻœāĻžāĻ¨āĻž āĻ¨ā§‡āĻ‡āĨ¤ āĻ¨āĻŽā§āĻŦāĻ° āĻŦāĻžāĻ›āĻžāĻ‡ āĻ•āĻ°āĻžāĻ“ āĻ…āĻ°ā§āĻĨāĻšā§€āĻ¨āĨ¤

8. āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻ‰āĻ‡āĻĨāĻĄā§āĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ āĻšāĻžāĻ˛āĻžāĻ¯āĻŧ (gameId, rsaSign)

9. āĻ‰āĻ‡āĻĨāĻĄā§āĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡, āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻšāĻžāĻ° āĻ˜āĻŸā§‡ āĻ°ā§‡āĻ¨ā§āĻĄāĻ‡āĻ¨ā§āĻŸ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ (gameId, rsaSign)āĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻ¨āĻŽā§āĻŦāĻ° āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻŸāĻ°

# @return 1 ... 100
func GenerateRandInt (gameId,rsaSign) = {
   	# verify RSA signature to proof random
    let rsaSigValid = rsaVerify (SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)
    if (rsaSigValid)
        then {
            let rand = (toInt(sha256(rsaSign)) % 100)
            if ((0 > rand))
                then ((-1 * rand) + 1)
                else (rand + 1)
            }
        else throw ("Invalid RSA signature")
    }

āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄā§ - āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ†āĻ›ā§‡.

āĻĒā§āĻ°āĻĨāĻŽā§‡, āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚āĻŸāĻŋ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž RSA āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ–ā§‡āĻ˛āĻžāĻ° āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻ°āĻŖ āĻ¨āĻŽā§āĻŦāĻ° āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ•ā§€ (rsaāĻ¸āĻžāĻ‡āĻ¨) āĻ¤āĻžāĻ°āĻĒāĻ° SHA-256 āĻĻāĻŋāĻ¯āĻŧā§‡ āĻšā§āĻ¯āĻžāĻļ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ (sha256(rsaSign)).

āĻ†āĻŽāĻ°āĻž āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻāĻŦāĻ‚ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻšā§āĻ¯āĻžāĻļāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ā§‡āĻ° āĻĒā§‚āĻ°ā§āĻŦāĻžāĻ­āĻžāĻ¸ āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻžāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻœāĻ¨ā§āĻŽāĻ•ā§‡ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°āĻž āĻ…āĻ¸āĻŽā§āĻ­āĻŦāĨ¤ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĒāĻ°āĻŋāĻ¸āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻĒā§‡āĻ¤ā§‡ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, 1 āĻĨā§‡āĻ•ā§‡ 100 āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤), toInt āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ āĻāĻŦāĻ‚ %100 (āĻāĻ° āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨ āĻŦāĻŋāĻ°ā§āĻĻā§āĻ§ā§‡).

āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ†āĻŽāĻ°āĻž āĻĢāĻžāĻ‚āĻļāĻ¨āĻŸāĻŋ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°ā§‡āĻ›āĻŋ rsaVerify(), āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ā§‡āĻ° āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ•ā§€ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ RSA āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻŦā§ˆāĻ§āĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧā§ˇ āĻāĻ–āĻžāĻ¨ā§‡ GenerateRandInt(gameId,rsaSign) āĻ…āĻ‚āĻļ āĻ†āĻ›ā§‡:

rsaVerify (SHA256, toBytes(gameId), rsaSign, RSAPUBLIC)

āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻ•ā§€ RSAPUBLIC āĻāĻŦāĻ‚ rsaSign āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ‡āĻ¨āĻĒā§āĻŸā§‡ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧāĨ¤ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻŦā§ˆāĻ§āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻšā§‡āĻ• āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ. āĻšā§‡āĻ• āĻ¸āĻĢāĻ˛ āĻšāĻ˛ā§‡ āĻ¨āĻŽā§āĻŦāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ¯āĻŧāĨ¤ āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°ā§‡ āĻ¯ā§‡ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°āĻŸāĻŋ āĻŦā§ˆāĻ§ āĻ¨āĻ¯āĻŧ (āĻ…āĻŦā§ˆāĻ§ RSA āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°)āĨ¤

āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°āĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ•ā§€ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ—ā§‡āĻŽ āĻ†āĻ‡āĻĄāĻŋāĻ¤ā§‡ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ 2880 āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦā§ˆāĻ§ Rsa āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ•āĻŋāĻ›ā§ āĻ¨āĻž āĻ˜āĻŸāĻ˛ā§‡, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻœāĻ¯āĻŧā§€ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻĒā§āĻ°āĻ¸ā§āĻ•āĻžāĻ°āĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻ¯āĻŧ āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻšā§āĻ›ā§‡ āĻ¯ā§‡ āĻāĻŸāĻŋ "āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¤āĻžāĻ°āĻŖāĻž āĻ•āĻ°āĻž āĻ˛āĻžāĻ­āĻœāĻ¨āĻ• āĻ¨āĻ¯āĻŧ", āĻ•āĻžāĻ°āĻŖ āĻāĻŸāĻŋ āĻ•ā§āĻˇāĻ¤āĻŋāĻ° āĻĻāĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻ•āĻ°ā§‡āĨ¤ āĻ¨ā§€āĻšā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ.

āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ RSA āĻāĻ˛ā§‹āĻŽā§‡āĻ˛ā§‹

āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ–ā§‡āĻ˛āĻ›ā§‡ āĻĄāĻžāĻ‡āĻ¸ āĻ°ā§‹āĻ˛āĻžāĻ°. āĻ†āĻŽāĻŋ āĻ˜āĻ¨āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° 2 āĻĒāĻ•ā§āĻˇā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ 6āĻŸāĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ, āĻŦāĻžāĻœāĻŋ āĻšāĻ˛ 14āĻŸāĻŋ āĻ¤āĻ°āĻ™ā§āĻ—ā§ˇ āĻ¯āĻĻāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦā§ˆāĻ§ RSA āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ¨āĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧ (2880 āĻŦā§āĻ˛āĻ•), āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ 34.44 āĻ“āĻ¯āĻŧā§‡āĻ­āĻ¸ āĻ¨ā§‡āĻŦā§‡āĨ¤

āĻ—ā§‡āĻŽāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ“āĻ°āĻžāĻ•āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ - āĻāĻ•āĻŸāĻŋ āĻŦāĻšāĻŋāĻ°āĻžāĻ—āĻ¤, āĻ¨āĻ¨-āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ¨ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĨ¤ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ—ā§‡āĻŽ āĻ†āĻ‡āĻĄāĻŋāĻ° āĻāĻ•āĻŸāĻŋ RSA āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ°ā§‡āĻ° āĻŦā§ˆāĻ§āĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻŦāĻŋāĻœāĻ¯āĻŧā§€ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ•āĻŋāĻ›ā§ āĻ¨āĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻœāĻ¯āĻŧā§€ āĻšāĻ¯āĻŧāĨ¤

āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸ā§Ž āĻĒā§āĻ°āĻœāĻ¨ā§āĻŽā§‡āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻ•āĻžāĻ°āĻŖ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤āĻ­āĻžāĻŦā§‡ āĻ…āĻ¸āĻŽā§āĻ­āĻŦāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ Tradisys āĻ—ā§‡āĻŽ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ­āĻžāĻŦā§‡āĻ‡ āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ āĻ—ā§‡āĻŽ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§āĻ‡ āĻ¸ā§āĻŦāĻšā§āĻ› āĻāĻŦāĻ‚ āĻ¯āĻžāĻšāĻžāĻ‡āĻ¯ā§‹āĻ—ā§āĻ¯āĨ¤ āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ā§‹ āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ•ā§‹āĻ¨ā§‹ āĻ…ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻ— āĻ¨ā§‡āĻ‡āĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨ā§āĻ¯āĻžāĻ¯ā§āĻ¯ āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ.

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨