プロが教えるわが家の防犯対策術!

十数桁の英数字(ID)をユーザーに与え、ユーザーがこのIDを使って
ユーザー名やパスワードを登録するシステムを考えています。
IDを所有する者だけが登録できるようにしたいので、IDには
ある規則性が必要だと思います。
イメージとしては、缶コーヒやペプシに付いているシールがそうです。
めちゃくちゃな番号を入力しても、「この番号は無効です。」とエラーになります。
このようなIDを発行する場合、どのような規則性を英数に持たせればいいでしょうか?

思いついたのは、
案1:偶数奇数の順を決めておく。
案2:あらかじめ不規則な英数をシステムに記憶しておき、ユーザーにその内どれかを与える。

他に何か良い案がありましたら教えてください。

A 回答 (3件)

規則性を英数に持たせる ID の作成は,幾らでも方法があります.



● 方法1: ユーザーへ ID を与える時の日時を暗号化する方法.

例A: 2011年9月9日,10時54分12秒に,ユーザーへ ID を与えるとします.

まず,数字0~9をアルファベット(英小文字)に対応させておきます.

0 → o, 1 → a, 2 → b, 3 → c, 4 → d,
5 → e, 6 → f, 7 → g, 8 → h, 9→ i.

上記を使って,2011年9月9日,10時54分12秒のユーザーには,

  boaaiiaoedab  の ID を与えます.

● 方法2: ユーザーへ ID を与える時の日時 2011年9月9日,10時54分12秒
に対して,平方根を用い,上記の数字 → アルファベット法により暗号化する方法.

例B: 2011年9月9日,10時54分12秒から,数字のみを並べると, 201199105412 です.この平方根は, 448552.232646 なので,これをアルファベットに翻訳すれば,

  ddheebbcbfdf  がユーザーの ID となります.

この他に方法は,幾らでもあります.上記の方法が,もし,不安ならば,ddheebbcbfdf の活字の間に,もう一度,abcdefghhik を入れて,

dadbhcedeebfbgchbhfidkf にすれば,なお調密な ID になります.

● 注意1: ユーザーに与える ID が絶対的にダブリがないようにするには,その時の日時を使うのが比較的簡単な方法です.

● 注意2: チェックデジット は,最後に計算して追加すればよい.

● 注意3: もし必要なら,チェックデジット の算出方法を新たに定義すればよい.(チェックデジットの算出法の定義は難しいかも知れない)

以上のような方法では,如何でしょうか?
    • good
    • 0

昔から常識的にチェックデジットを付ける物だと思っていましたが。


チェックデジットをつけられない訳でもありますか?
それとも、チェックデジット自体を知らないのでしょうか?
    • good
    • 0

誤り訂正符号を使用したら ?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!