- 締切済み
解読されにくい規則性のある十数桁の英数
十数桁の英数字(ID)をユーザーに与え、ユーザーがこのIDを使って ユーザー名やパスワードを登録するシステムを考えています。 IDを所有する者だけが登録できるようにしたいので、IDには ある規則性が必要だと思います。 イメージとしては、缶コーヒやペプシに付いているシールがそうです。 めちゃくちゃな番号を入力しても、「この番号は無効です。」とエラーになります。 このようなIDを発行する場合、どのような規則性を英数に持たせればいいでしょうか? 思いついたのは、 案1:偶数奇数の順を決めておく。 案2:あらかじめ不規則な英数をシステムに記憶しておき、ユーザーにその内どれかを与える。 他に何か良い案がありましたら教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Knotopolog
- ベストアンサー率50% (564/1107)
規則性を英数に持たせる 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: もし必要なら,チェックデジット の算出方法を新たに定義すればよい.(チェックデジットの算出法の定義は難しいかも知れない) 以上のような方法では,如何でしょうか?