こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESSでモジュールに記入したパスワードを暗号化するには

VBAの標準モジュールへconstでパスワードを記述しており平文のままです。
自分以外の第3者が利用するとパスワードが丸見えになってしまいます。

暗号化をするにはどうしたら良いでしょうか。

投稿日時 - 2007-04-19 13:08:53

QNo.2933200

すぐに回答ほしいです

質問者が選んだベストアンサー

>第3者が利用するとパスワードが丸見えになってしまいます。
それはプログラムを利用していて(例えばログイン画面であらかじめ値がセットされているから)丸見えなのか、
ソースコード中に
private Const PassWord ="Hoge"
とか書いているから丸見えなのかどちらでしょう?

前者であれば表示しているテキストボックス(仮定)の表示を"*"で表示するように設定を変えればよいですし、
後者であればVBEにパスワード認証を設ければよいのでは?
また、Accessファイルを開くときにパスワード認証をする事も可能です。

パスワードは『歯ブラシとパスワードはこまめに変えろ』が常識ですから、固定値にすること自体好ましくないです。
コーディングできない人間が管理することを想定しているなら、なおのことプログラム中に埋め込むのはどうかと思いますよ。
テーブルにでも格納しておく(+ Accessのパスワード認証)のがよいのでは?

投稿日時 - 2007-05-01 13:48:15

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.7

私が言いたかったのは
個人のパスワードの文字列を管理者が見れるという状況が望ましくない場合、それをハッシュ化したものをパスワードとして扱うという方法をNo1の方が提示されているということです。 ユーザーがフォーム上にパスワードを入れた後、認証する際にハッシュ化を行い、保存されている(すでにハッシュ化した)パスワードと比べ合致するかどうかの確認を行うということです。 管理者はユーザーがどんな文字列をパスワードとして入力しているのかはわかりません。 しかしこの方法は実際のパスワードを隠しているわけではないので、コード上に書かれている文字列を隠すのには役に立たないと思ったしだいです。
コードにじかに書きたくないなら、拡張子をかえた外部ファイルとしておいておくか、DLLにしてしまうとか、レジストリに格納してしまうとか、方法はあると思います。 しかし、どれもコードが見える段階では(実際にパスワードの取り出し方をコーディングしなければならないので)あまり意味がないと思いました。 そのようなわけで、コードは見せないという案を提案したわけです。 
 

投稿日時 - 2007-04-23 18:29:30

ANo.6

No2です。他人の話に首を突っ込むのはマナー違反かもしれませんが、
No1の方の回答は、管理者に知られたくないパスワード等をどのように管理するべきなのかという問題に対する回答です。 どのようにコードを暗号化するのかということは別問題です。 
文字列をどんなに複雑化して巧妙に隠したところで、VBコードに触れることができる人に対しては、debug.print 一行でばれてしまいます。  
また、アクセス自体、セキュリティに関しては非常に弱い部分があると思います。 最新のアクセスのセキュリティについては詳しく知りませんが、過去の経験からするとデータベースパスワードをクラックするのは結構簡単にできると思います。 アクセス自体のセキュリティをあまり当てにしてはいけません。

守りたいものがあるなら、コードは見せないというのが原則です。

投稿日時 - 2007-04-23 09:45:44

補足

老婆心ながら管理者はパスワードを知っている必要があります。
(管理者以外と仰られたかったのだと思いますが)
管理者以外には知られたくないです。
MD5は双方向でなく不可逆ですがばれるんでしょうか?
accessですから当然小規模な開発であり、パスワードを簡単にクラックできるような望まない管理者以外が触れるような環境まで考える必要はありません。
プログラムが良く分からない管理者以外が触れることを想定しています。
先方の回答は専門的ですばらしいですが、No.1の方の回答も要領の良い的を得た回答だと判断しております。
ただ、パスワードをプログラムから利用したいのでMDE化するしかないかと考えております。

投稿日時 - 2007-04-23 12:28:33

ANo.5

COM? OLEでAccessを呼び出すのでしょうか?

投稿日時 - 2007-04-19 17:18:57

補足

端折ってしまいすみません。
AccessからAPIを呼び出しパスワードを渡します。

投稿日時 - 2007-04-20 16:12:55

ANo.4

>不可逆なのでパスワードを表示したい場合
表示できたらセキュリティが確保できません。パスワードを復旧(表示)する事は不可能です。

投稿日時 - 2007-04-19 14:26:40

補足

表現が適切でなくすみません。
例えばパスワードをCOMで利用するとしたらどうでしょう?

投稿日時 - 2007-04-19 14:41:41

ANo.3

No2です。

mdeはコードの改変ができませんので、現在開発中なのであれば
フロントエンドとデータ部分を分けておいたほうが便利です。

参考URL:http://oshiete1.goo.ne.jp/qa188513.html

投稿日時 - 2007-04-19 14:13:41

ANo.2

モジュールがさわれる時点でセキュリティは
ないと思ったほうがよいでしょう。
他者に利用していただく分をMDEにするしかないのでは?

投稿日時 - 2007-04-19 13:57:33

お礼

ありがとうございます。
その通りですね。
MDEのやり方がわからないのですが、参考になるHPなどありましたでしょうか。

投稿日時 - 2007-04-19 14:00:01

ANo.1

constで記述しないで、テーブルを作成してそのテーブルに格納するようにしたらどうでしょうか?
パスワードを入れる項目をテキスト型にして定型入力を”パスワード”にすればテーブルを表示してもパスワードはわかりません。
参考:http://www.accessclub.jp/bbs5/0015/vba4329.html

投稿日時 - 2007-04-19 13:24:04

補足

コメント後ですみませんが、リンク先はMD5で暗号化とあります。
不可逆なのでパスワードを表示したい場合はどうすればよいでしょうか?

投稿日時 - 2007-04-19 13:57:57

お礼

ありがとうございます。
大変助かりました。

投稿日時 - 2007-04-19 13:56:34

あなたにオススメの質問