0968ゲーム開発会社社員
2018/10/23(火) 08:26:35.57ID:BZKEIbB+967さん
色々な方法がありますが、基本を説明します。
判りやすいように
・体力120(最大値999)
・腕力56(最大値99)
・知力33(最大値99)
・「あいうえおかきくけこ」だけで復活の呪文を作るとします。
パラメータの数字を羅列すると 1205633 になります。
↓
あを0、いを1、‥‥こを9とすると、この数字は「いうあかきええ」となります。
↓
このままでは適当に呪文を入力しても数値に変換できるので、チェックサムというものを用意します。
この例では
1+2+0+5+6+3+3 = 20 の1の位の数字 0 をチェックサムとします。0はあです。
↓
「いうあかきええ」+「あ」で「いうあかきええあ」が復活の呪文になります。
数字に戻すには逆の手順を踏みます。
そしてユーザーが適当に入力していないかをチェックサムで調べます。
「いうあかきええ」を数字にし、それら全てを足した値の1桁目が「あ」つまり0でなければ、呪文を間違えたか、適当に入力したわけです。
この例のチェックサムは10分の1の確率で破られます。
最初の10文字を適当に入れ、最後のチェックサムに「あ」〜「こ」まで順に試していけば、どれか当たってしまいます。
ですので、実際にはチェックサムはもう少し破られにくい値にします。
それから聞くたびに呪文を変化させるには“乱数”で文字列をずらす、あるいは元の数字をずらすことを行います。
その乱数の値も呪文の中に入れておき、数字に戻す時、ちゃんと元の値になるように計算します。