Window A のEditBox1の入力されたパスワードを認証しあっていれば
Window B に進めるようなソースコードを教えてください。
パスワード認証
Re: パスワード認証
単純な認証であれば、EditBox1に入力された文字列を正しいパスワードと比較し、正しければ進むようにすればよいでしょう。
↑状況に応じてコードは適宜変更してください。
まあ、このままだと生成したEXEをバイナリエディタで開いたときに正しいパスワードが丸見えになりますので、単純な用途で使うとき以外はパスワードに暗号化を施す必要があります(できればハッシュ関数のように一方向性のものが望ましいです)。
そのときの手順は
1. 正しいパスワードを暗号化したときのデータをあらかじめ作成する。
2. パスワードを入力してもらう。
3. そのパスワードを同じ関数で暗号化し、暗号化された正しいパスワードと比較する。
これである程度安全になるはずです。
※ハッシュ関数では、実は完全な認証にならないことがあります。違うパスワードについて同じデータを返す可能性がわずかながらあるからです。
とはいっても、一方向性であれば逆変換はできないようになっていますから、偶然違うパスワードで入れてしまう可能性は限りなく0に近いでしょうが(但し0ではありません)。
パスワードがある程度短い場合は、完全ハッシュ関数も検討するとよいでしょう。
コード: 全て選択
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ではありません)。
パスワードがある程度短い場合は、完全ハッシュ関数も検討するとよいでしょう。
[hira]
http://hira.hopto.org/
http://hira.hopto.org/