当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2009年6月15日月曜日

ハッシュパスワード

デザイナーヘルプの@VerifyPasswordの説明を見ると
構文
@VerifyPassword( password ; password )
パラメータ
password
文字列。文字列式またはパスワードフィールド名を指定します。

と書いてあります。
でも、パラメータは2つあります。どちらのことを指しているのでしょうか?

正解は、
1つ目のpasswordは文字列、2つ目のpasswordはハッシュされた文字列を指すのです。
クロスリファレンスのNotesSessionクラスのVerifyPasswordメソッドの説明を見ると、それが正しいことが分かります。
構文
flag = notesSession.VerifyPassword( password$, hashedPassword$ )
パラメータ
password$
String 型。ハッシュされる文字列です。
hashedPassword$
String 型。ハッシュされた文字列です。

ですね。
でも、実際には違うものなので、同じ構文(パラメータの順序)かどうかは分かりません。

これも一種の不具合でしょう。でも、きっと直らないでしょうから、皆さんは気をつけて使ってください。

ということで、今回のサンプルです。
文字列を2回入力して、それが正しいかどうかを確認するものです。

実際の利用場面としては、ハッシュ化されたパスワードをノーツDBに格納しておいて、
それと入力された文字列を比較して正しいかどうかを確認するという所でしょう。

-------------------------------------------------------------------
tmpPassword := @HashPassword(@Prompt([OkCancelEdit];"パスワードの入力";"何か文字列を入力してください。";""));
comfirmPassword := @Prompt([OkCancelEdit];"パスワードの確認";"確認のため、再度文字列を入力してください。";"");

rem {@VerifyPasswordの引数の1つ目は文字列で、2つ目は@HashPasswordでエンコードされた文字列です。};
@If(@VerifyPassword(comfirmPassword;tmpPassword)=1;@Prompt([Ok];"パスワードの確認";"パスワードは正しいです。");@Prompt([Ok];"パスワードの確認";"入力されたパスワードが誤っています。"))


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: