ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 02:39

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 
作成者 メッセージ
 記事の件名: パスワード認証
投稿記事Posted: 2006年2月24日(金) 18:37 
Window A のEditBox1の入力されたパスワードを認証しあっていれば
Window B に進めるようなソースコードを教えてください。


通報する
ページトップ
   
 記事の件名: Re: パスワード認証
投稿記事Posted: 2006年2月24日(金) 19:54 
オフライン

登録日時: 2005年5月31日(火) 20:14
記事: 203
お住まい: 兵庫県
単純な認証であれば、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ではありません)。
パスワードがある程度短い場合は、完全ハッシュ関数も検討するとよいでしょう。

_________________
[hira]
http://hira.hopto.org/


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Ahrefs [Bot] & ゲスト[34人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean