-PR-
解決済み

パスワードの暗号化について

  • すぐに回答を!
  • 質問No.82217
  • 閲覧数1175
  • ありがとう数4
  • 気になる数0
  • 回答数8
  • コメント数0

お礼率 50% (183/364)

こんにちわ!

どうぞ、ご存知の方はなんでもOKですので、宜しくお願い致します。(^c^;)

現在、Javaを使ってWeb取引を作っています。はい。
そこでお客さまから、パスワードを暗号化して欲しいとの要望がありました。

基本的には、DBを直接見ても、わけのわからん暗号化された文字列が入っていれば、宜しいかと思っておりますが、
一般的に、皆様、どのような方法を使って、暗号化&解読を行っているのでしょうか????

ど素人的な質問で、大変に恐縮ですが、時間的にも余裕がないため、質問をさせて頂くことと致しました。
ちなみに、DBの桁数は既に決定しているため、暗号化時に桁数の増減がない方法がうれしいです。

本当に、困っております。本当に。。。。 <(>。<;)>
そんなこと今更いわないでぇぇぇぇ~って心境でございます。。。。

どうぞ、宜しく宜しくお願い致します。
通報する
  • 回答数8
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.8
レベル10

ベストアンサー率 37% (64/169)

Javaで作っているのなら MD5 が簡単でしょう。
java.security.*パッケージを使えば簡単です。

ちなみに復号化する必要はないと思います。
・DBにはMD5で暗号化した文字列を格納しておきます。
・画面から入力された文字列をMD5で暗号化
・その暗号化文字列とDB内の暗号化文字列が一致していればパスワード認証OK

これだけです。
-PR-
-PR-

その他の回答 (全7件)

  • 回答No.6
レベル11

ベストアンサー率 43% (133/306)

3台のDBサーバで同一のIDとパスワードの管理との事ですが、私の様なところではどれか1台にIDとパスワードの管理を任せ、認証専用のデーモンを走らせソケット也でセッションを張るなどして、個々に持たさない様に設計します。

これらはサードパーティ製品のパッケージでも古くから多々ありますし、実現手段としては極めて簡単で有る為に自身で設計してしまっても良いかと思いますよ。
お礼コメント
nsakurako

お礼率 50% (183/364)

またも、ご回答ありがとーございます。
なるほど、色々な方法があるのですね。
それは知りませんでした。。。。。。。。。。。。。

でも、もー、1次はリリースしてしまったんですよね。。。。 あっはっは!(^c^;)
だって、だって、ID・パスワードを一括管理するなんて言ってなかったのに。。。。
ばらばらでよいって言ってたのに。。。。。 くっすん。(T。T;)
なので、持たせている表の項目等に相当の違いがありますです。はい。。。

しかも、各サイトは、別々のチームが設計&製造しているため、Weblogic.Propatiesだって違います。  あっはっは! (TcT;)お笑いです。はい。

どうか、見捨てずに宜しくお願い致しまする。
新しい情報、どしどし、募集中です!!!!!!!!!!!!!!!!!!!!
投稿日時 - 2001-05-28 16:38:09


  • 回答No.1
レベル14

ベストアンサー率 40% (900/2202)

ごくごく簡単なものとしては、「文字をずらす」という
方法があります。

例えば、「hello」という文字列があった場合、各文字を
アルファベットにおける一つ先のものに置き換えて
「ifmmp」とする、など。
もちろん、これでは単純過ぎますから、奇数番目の文字は
一つ先、偶数番目の文字は二つ後…というようにより複雑
なルールを決めます(この場合は「icmkp」と変換されま
す)。
仮に「a」や「z」を飛び越えてしまうような場合には、
例えば「a」の二つ後は「y」、「z」の三つ先は「c」と
する…というように、ループさせる方法で対応可能です。
  • 回答No.2
レベル11

ベストアンサー率 43% (133/306)

そうですね。
単にDB内のレコードが暗号化されていれば良いのであればcrimson氏と同等な事をすればクライアントも納得してくれるかもしれません。
似た手段として、乱数マップを用意して一対一で文字を照らし合わせるというの方法もあります。
そしてフォームから送られてきたパスワード文字列をJavaServletでデコードすれば良いでしょう。

ただし、当然にHTTPプロトコル通信上でのパケット内にはフォームで入力された素のパスワード文字列がそのまま乗っかる事になるので、パケット内も暗号化したいのであればSSL通信を利用する事をお勧め致します。
  • 回答No.3
レベル14

ベストアンサー率 24% (612/2465)

サーバーとの通信上は暗号化されているのでしょうか?
そこのところを言われているのかもしれません。
暗号化するための簡単な方法はHTTPS(SSL通信)を行えば問題ありませんが、認証局に登録する必要があり、費用がかかります。
下記URLは、Verisign社のものです。

別にバイト数を変えずに暗号化する方法ですが、A-Z、0-9などのパスワードに利用できる文字をランダムにテーブルに並べます。それと、ユーザデータテーブルの登録日などを利用し、パスワードをパスワードテーブルを用いて指定バイトずつずらします。

例)
テーブル[zxcv5bnm3lkj4hgf2dsa0qw8e9rt7yu1i6op]
登録日[20010323]
パスワードが[nsakura01]
だった場合に
登録日のyy[01]mm[03]dd[23]を取り出し、順番に「n」に対応するテーブルを探し、
そのテーブルのyyバイト分後ろにあるデータ(m)をパスワード保存ファイルとする。
「s」に対してはmmバイト後ろ(q)
「a」に対してはddバイト後ろ(n)
「k」に対してはyyバイト後ろ(j)
・・・と繰り返していくと。
「mqnj6h08s」と一見して、文字をずらすことができます。また、元に戻すときは逆の処理をすればよいのです。当然テーブルにはパスワードでは入力不可のアスキーコードが入っていても問題ありませんが、同じ文字を重複して利用してはいけません。テーブルの最後まできたときは、先頭に戻って数えます。
お礼コメント
nsakurako

お礼率 50% (183/364)

皆様。早速の回答を本当にありがとうございました。
(すいません、ここで、皆様へのお礼とさせて頂きます。お許し下さい。)

わたくしも、少々調べてみましたが、暗号化&復号化って難しいですね。はい。

ここでは補足&訂正もさせて頂きますね。
本当は、質問時にすることなのですが、またまたどうぞお許し下さいませ。。。

現在、1次リリースでは、SSLは既に対応済です。
パスワードの暗号化は、2次のリリース版での対応となります。

って、ことは、1次リリースのパスワード関係のAPは当然作り直しです。はい。
またしても、今更でしょう?っと愚痴ってしまいそうです。はい。

また、パスワードの桁数ですが、やはりセキュリティをあげるためには、
(その為の暗号化なんですもんね!? (A^^;)必要ではないかと考え直しました。
どっちにしろ、パスワード関係は作り直しですし。はい。

そこで、改めて、質問です。
皆様どのような方式を使って実際にパスワードの暗号化&復号化を実現していらっしゃるのでしょうか???

DESやMD5といった方法も耳に致しますが、ふぅぅぅぅぅ~!HPあさって読んでいますが、
むむ難しい。。。。(>。<;)oh Noーー!

また、更に補足で御座いますが。。。。
(至らない質問の仕方で、本当に申し訳ないです。。。)

今回のシステムでは、DBが複数のサーバに乗っかっております。
何故かと言いますと、同一のID・パスワードで、複数のサイトを使用出来るようにしているためです。
(あぁぁぁ~! だからと言って何故?っとは聞かないで下さい。。。)

ちなみに、現在は、3つDB内に同一のID・パスワードを持って降ります。
上記の関係から、出来ることなら、鍵を持たない暗号化&復号化を望んで降ります。

また、パスワードの参照機能なんかも1次でリリースされているため、復号化も可能がBESTで御座います。
MD5が良いかと思ったのですが、どこかのHPでは、復号化が不可とありました。
こちらは、本当でしょうか??? 

あぁぁ~! 本当に困って降ります。
お前なんかで、本当に暗号化&復号化をやるつもりかとお思いとは思いますが、
出来る限りはがんばろうと思っている次第でありますので、どうか見捨てずに、
参考になるHPの紹介だけでも結構ですので、良きアドバイスを宜しくお願い致します。。。。

皆様のご好意を、切にお待ち申し上げて降ります。
投稿日時 - 2001-05-28 13:31:29
  • 回答No.4
レベル10

ベストアンサー率 18% (35/185)

一般的に複合化できる暗号はパスワードには用いません。
理由についてはcryptか、単方向ハッシュで検索をかければいくらでも
出てくるのでおいといて。
通常よくやられる方法としてはMD5という単方向ハッシュのアルゴリズムを
用いて(多くの言語ではライブラリで出回っている)乱数でシードを選び
クライアントがわでそのシードを用いてハッシュをかけ、サーバがわで
保存されている元パスワードに同じシードをかけて同じになれば 
パスワードが一致してるといえます。これは、通信回線が盗聴されることを
考えての行為です。

また、元パスワードの方はシステムで不変のシードをつかってパスワードを
暗号化します。これにより、万が一そのパスワードDBが盗まれても
そのパスワードを使って他のサイトなんかでも同じパスワードをつかってる
ことを期待してのクラックという2次災害をふせげます。
これは、パスワードの元を盗まれたときの対策です。
  • 回答No.5
レベル10

ベストアンサー率 18% (35/185)

ちなみに、複数サイトでの同一パスワードの使用はzodiaxのような
セッションゲートウェイをつかってやるってのもてかも・・・・
まぁzodiaxにかぎらず、そのようなソフトはいっぱい売ってありますよ。
お礼コメント
nsakurako

お礼率 50% (183/364)

なるほど、なるほど、色々な情報をありがとございます。

やはり、通常ならば、パスワードの復号化なんてしませんよね!
やはり、MD5では復号化が無理ならばパスワードの参照機能は、お客さまに再度ご検討頂く必要がありそうですね。。。。
しかし、何故良く調べもせずに、パスワードの暗号化&復号化OKなんて言うのでしょうか??> MY 上司

そして、暗号化はMD5が一般的なんですかね。 ふむふむ。
そして、やはり製品を購入でしょうか。。。。。。。。。

上司は、他のソフトの使用を考えていません。はい。
MD5の何か技術的なことを公開しているHPをご存知でしたら教えて下さい!!!
また、Javaで作成しているのですが、Javaさんは暗号化&復号化なんて機能を提供していないのでしょうか。。。。
甘い?? あぁ~! やはり。。。。

宜しくお願い致しまする。。。。。 (>。<;) どうぞ愛の手を!!!!!!!
投稿日時 - 2001-05-28 16:24:00
  • 回答No.7
レベル14

ベストアンサー率 24% (612/2465)

パスワードの復号化を行う意図がいまいちわかりません。
UNIX等のOSでは、パスワードはcryptを利用します。セキュリティ上は若干弱いです。
cryptであれば、Cでの関数も要されていると思います。
もしほかのを方式を利用するにしても、基本的には暗号化したファイルを保持し、次に入力されたパスワードと比較する場合は、入力のたびに認証のプロセスで暗号化し、保持されている情報と比較します。
もし、簡単にパスワード情報が複号化できるのであれば、パスワードロックをかける必要がありません。

ひょっとして、パスワード忘れた時のための対応なのでしょうか???
せれではセキュリティの意味がありません。...

使用OSがわかりませんが、参考になりそうなのをいくつかあげてみます。
http://www.lares.dti.ne.jp/~seiki/des.html
http://info.pos.to/member/domain/cgi/crypt.html
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ