応募券のシリアルコードには「適当に入力して当選」を避ける仕組みがある

チェックディジットと呼ばれる。

» 2019年04月20日 11時30分 公開
[QuizKnockねとらぼ]

 CDについているシリアルコードで、ライブのチケットに応募することがしばしばある。いくつかコードを打ち込むうち、魔が差してこんなことを考えてしまう。「適当に打ち込んだら通ったりしないかな……」と。


応募券のイメージ

 本当に通ったら一大事なので、このような仕組みを設計する段階でどうにかして防いでいる訳だが、どのようにやっているのだろう。その防止策の1つに「チェックディジット」というものがある。


まず、完全にランダムな文字列にすると困る

 あなたがライブを主催することになり、0〜9の数字からなる16桁のシリアルコードで抽選を行うとしよう。あなたならどのようにコードを作るだろうか?

 単純に考えれば、16個の枠それぞれに0〜9の数字を1つずつランダムに選べばいい(つまり、0〜9の乱数を16個並べればいい)のだが、完全にランダムだと不都合が多い。例えば、ランダムだと限りなく似ているコードが生成される可能性がある。



 つまり、

  • 1234 5678 9012 3456
  • 1234 5678 0012 3456

 のような、1カ所しか変わらない2つのシリアルコードが生まれ得る。1つ目のシリアルコードを持っている人が、うっかり数字を1つ打ち間違えたり、あるいは狙って数字を変えたりして、2つ目が受理されてしまう、という事態が考えられる。

 異なる箇所が少ないほどこういう事故は起こりやすい、というのは直感的に分かるだろう。これを防ぐためには、シリアルコード同士が、どんなに運の悪い乱数を引いても最低nカ所以上は異なる、という状態が望ましい。

 それを作るために、チェックディジットが登場する。


誤りを見つける仕組み「チェックディジット」

 チェックディジットとは、符号の誤りを検査(チェック)するための桁(ディジット)のこと。

 今回の例でいえば、最初から16桁をランダムに生成する代わりに、15桁だけランダムに生成することにして、残りの1桁をチェックディジットに割り当てることにする。チェックディジットの計算方法はいろいろあるが、ここでは「15桁の数字を足し合わせて10で割った余り」をチェックディジット(つまり16桁目の数字)としよう。



 まず、15桁のコードとしてランダムに

 1234 5678 9012 345

 が生成されたとする。1+2+3+……+3+4+5=60なので、10で割ると余りは0。この0をチェックディジットである16桁目とすれば

 1234 5678 9012 3450

 というシリアルコードができる。

 このようにすると何がいいかというと、シリアルコード同士が必ず2桁以上異なることが担保されるのだ。



 例えば、この中から1桁だけ変えた

 1234 5678 0012 3450

 は絶対に当たりのコードではない。なぜなら、末尾以外の15桁を足し合わせると51なので、チェックディジットは1であるはず。

 1234 5678 0012 3451

 はあり得ても、上の末尾が0のコードは生まれないのだ。

 このように、チェックディジットを1桁設けることで、シリアルコードが互いに2カ所以上異なるようにできる。また、適当に打ち込まれたコードならば、チェックディジットを確認することで用意したシリアルコードを検索するまでもなく間違いだと判定できる。

 チェックディジットが1桁だと「何かが間違っている」ことしか分からないが、桁を増やし、計算方法を工夫することで、具体的に「○桁目が間違っている」まで判別することもできる。そのようなチェックディジットは、通信やQRコードのように、必ず正確に読み取れるとは限らないが確実に中身を伝えたい暗号化でよく用いられている。


事故を防ぐための仕組み。悪用はしない

 チェックディジットは、コードが正しく作られたものであることを証明し、間違ったコードを正しいと見なしてしまう事故を防ぐ役割を持つ。原理を知れば、適当に勘で打ち込むのはやめておこう、と思うはずだ。

制作協力

QuizKnock


Copyright © ITmedia, Inc. All Rights Reserved.

先週の総合アクセスTOP10
  1. 小1娘、ペンギンの卵を楽しみに育ててみたら…… 期待を裏切る生き物の爆誕に「声出して笑ってしまったw」「反応がめちゃくちゃ可愛い」
  2. 富山県警のX投稿に登場の女性白バイ隊員に過去一注目集まる「可愛い過ぎて、取締り情報が入ってこない」
  3. 2カ月赤ちゃん、おばあちゃんに少々強引な寝かしつけをされると…… コントのようなオチに「爆笑!」「可愛すぎて無事昇天」
  4. 異世界転生したローソン出現 ラスボスに挑む前のショップみたいで「合成かと思った」「日本にあるんだ」
  5. 【今日の計算】「8+9÷3−5」を計算せよ
  6. 21歳の無名アイドル、ビジュアル拡散で「あの頃の橋本環奈すぎる」とSNS騒然 「実物の方が可愛い」「見つかっちゃったなー」の声も
  7. 1歳赤ちゃん、寝る時間に現れないと思ったら…… 思わぬお仲間連れとご紹介が「めっちゃくちゃ可愛い」と220万再生
  8. 業務スーパーで買ったアサリに豆乳を与えて育てたら…… 数日後の摩訶不思議な変化に「面白い」「ちゃんと豆乳を食べてた?」
  9. 祖母から継いだ築80年の古家で「謎の箱」を発見→開けてみると…… 驚きの中身に「うわー!スゴッ」「かなり高価だと思いますよ!」
  10. 「ゆるキャン△」のイメージビジュアルそのまま? 工事の看板イラストが登場キャラにしか見えない 工事担当者「狙いました」
先月の総合アクセスTOP10
  1. フワちゃん、弟の結婚式で卑劣な行為に「席次見て名前覚えたからな」 めでたい場でのひんしゅく行為に「プライベート守ろうよ!」の声
  2. 親が「絶対たぬき」「賭けてもいい」と言い張る動物を、保護して育ててみた結果…… 驚愕の正体が230万表示「こんなん噴くわ!」
  3. 水道検針員から直筆の手紙、驚き確認すると…… メーターボックスで起きた珍事が300万再生「これはびっくり」「生命の逞しさ」
  4. フワちゃん、収録中に見えてはいけない“部位”が映る まさかの露出に「拡大しちゃったじゃん」「またか」の声
  5. スーパーで売れ残っていた半額のカニを水槽に入れてみたら…… 220万再生された涙の結末に「切なくなった」「凄く感動」
  6. 桐朋高等学校、78期卒業生の答辞に賛辞やまず 「只者ではない」「感動のあまり泣いて10回読み直した」
  7. 「これは悲劇」 ヤマザキ“春のパンまつり”シールを集めていたはずなのに…… 途中で気づいたまさかの現実
  8. 「ふざけんな」 宿泊施設に「キャンセル料金を払わなくする方法」が物議 宿泊施設「大目に見てきたが厳格化する」
  9. がん闘病中の見栄晴、20回以上の放射線治療を受け変化が…… 「痛がゆくなって来ました」
  10. 食べ終わったパイナップルの葉を土に植えたら…… 3年半後、目を疑う結果に「もう、ただただ感動です」「ちょっと泣きそう」