パスワード認証

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ネットスカイ@

パスワード認証

#1 投稿記事 by ネットスカイ@ »

Window A のEditBox1の入力されたパスワードを認証しあっていれば
Window B に進めるようなソースコードを教えてください。
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

Re: パスワード認証

#2 投稿記事 by hira »

単純な認証であれば、EditBox1に入力された文字列を正しいパスワードと比較し、正しければ進むようにすればよいでしょう。

コード: 全て選択

Dim Buf As String,BufLen As Long
BufLen=GetWindowTextLength(GetDlgItem(hWindowA,EditBox1))+1
Buf=ZeroString(BufLen)
GetDlgItemText(hWindowA,EditBox1,Buf,BufLen)
If lstrcmp(Buf,"12345")=0 Then
    '正しいパスワード
    DialogBox(hWindowA,"WindowB")
Else
    '間違ったパスワード
    MsgBox hWindowA,"パスワードが間違っています。"
End If
↑状況に応じてコードは適宜変更してください。

まあ、このままだと生成したEXEをバイナリエディタで開いたときに正しいパスワードが丸見えになりますので、単純な用途で使うとき以外はパスワードに暗号化を施す必要があります(できればハッシュ関数のように一方向性のものが望ましいです)。
そのときの手順は
1. 正しいパスワードを暗号化したときのデータをあらかじめ作成する。
2. パスワードを入力してもらう。
3. そのパスワードを同じ関数で暗号化し、暗号化された正しいパスワードと比較する。
これである程度安全になるはずです。
※ハッシュ関数では、実は完全な認証にならないことがあります。違うパスワードについて同じデータを返す可能性がわずかながらあるからです。
とはいっても、一方向性であれば逆変換はできないようになっていますから、偶然違うパスワードで入れてしまう可能性は限りなく0に近いでしょうが(但し0ではありません)。
パスワードがある程度短い場合は、完全ハッシュ関数も検討するとよいでしょう。
返信する