ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >   

random を使った乱数でパスワードを作る 

更新 : 2010/05/11

 



解説:
パスワードはあまりにも多くの場面で必要になり、その都度どのような英数字にしたら良いのか
考えるのがけっこう大変です。そこで乱数を利用して英文字と数字をランダムに生成して、パスワードとして利用してみます。
本来は管理上、固定文字列を挿入したり、自分独自の構成にするのが望ましいのですが、数字3 文字+英文字というシンプルな形式で作成してみます。

プログラムで生成するのは擬似乱数(※)ですが、ここでは乱数と呼んでおきます。乱数に関しては、色を自由に作成する計算ソフトを作るなども参考にしてください。

※擬似乱数は、一定の計算式で算出されたものなので、真の乱数(次に出る数字が予測できない数値)ではありません。一通り乱数値を生成し終わると、また同じ順番で同じ数値を生成します。

使用例:
数字 3 文字の乱数と英文字の乱数の組み合わせからパスワードを生成します。

コンポーネントは、 Edit と Button をひとつづつ適当に配置します。

コーディングは、まず必要なヘッダーファイルをインクルードしておき、コンストラクタで乱数発生ルーチンを初期化します。通常 randomize はアプリケーションの起動時に一度呼ぶだけで十分です。
Button の OnClick では、文字数を 3 桁に固定した数字の乱数を生成します。random は 0 から (num-1) の間の乱数を返します。
次に英文字の乱数を生成します(ここでは大文字だけに対応)。'A' のASCII コードは 65 になります。
最後に英文字と組み合わせて Edit1 に表示しています。

数字と英文字の位置指定や、固定の文字列挿入を可能にしたり、全体の桁数を増やしたり、実用に耐えるように工夫してみてください。

#include <stdlib.h> // 追加

//-------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner))
{
    randomize();
}
//-------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int num;
    do {
        // 乱数発生ルーチン
        num = random(1000);
    } while (num < 100);

    // 大文字
    int ascii1 = 65 + random(26); // A〜Z

    // パスワード作成
    AnsiString password = IntToStr(num) + (char)ascii1;
    Edit1->Text = password;
}
//-------------------------------------------------------------------



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.