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