- - PR -
JAVAでの暗号化について
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-03-22 15:30
PHPが主体のWEBシステムで、PHPの暗号化でログインのパスワードを
保存して、チェックをしています。 (ちなみに、PHPのcrypt()関数です。) これを、JAVAで同じようにチェックを行いたいのですが、 どの暗号化を見ても、同様のものが見当たりません。 どなたが、ご存知の方がいらっしゃいましたら、 教えていただけないでしょうか? 反対に、JAVAの暗号化で、PHPのcrypt()関数以外に 対応する暗号化関数があれば、それでも結構です。 |
|
投稿日時: 2004-03-22 16:19
java.security.MessageDigest
を使われてはどうですか? |
|
投稿日時: 2004-03-22 16:20
PHP の crypt() 関数を知らないので、ハズしていたらごめんなさい。
以下は、JDK が 1.4 以上を前提にしています。 Des 等の秘密暗号鍵方式の暗号を扱いたいのでしたら、 Cipher クラスです。 Cipher (Blowfish) の例 [ メッセージ編集済み 編集者: でゅうく 編集日時 2004-03-22 16:23 ] |
|
投稿日時: 2004-03-22 19:58
crypt() はperlにもありますね。
以前、2chのトリップ機能を調べてたときに C言語のソースで同じ関数が 作られているものをインターネットのどこかで見たことがあります。 (手元にそのときのソースがあるのですが、でどこを覚えていないので ちょっと著作権上、勝手に掲載するわけにいきません。) アルゴリズムが公開されているはずですから、自作可能だと思います。 crypt、拡大型転置、縮約型転置、内部鍵、共通鍵、暗号あたりで 検索かけたら情報を得られると思います。 |
|
投稿日時: 2004-03-22 20:05
いわゆる「UNIX crypt」ですね。
「UNIX crypt java」で検索してみましょう。 |
|
投稿日時: 2004-03-23 11:06
JDK1.4でコアAPIにバンドルされたJCA(暗号化アーキテクチャの拡張API)は、
JDK1.2、1.3でも使用することが可能です。 http://java.sun.com/products/jce/index.jsp ということで。 |
|
投稿日時: 2004-03-23 13:23
皆様、お返事ありがとうございます。
PHPのcrypt()関数についての説明が足らなかったと思います。 この関数は、Unix 標準の DES 暗号を使って文字列を暗号化するもので、 使用方法は、 A = crypt("文字列"); これで、文字列がDESによって暗号化されて、A に代入されます。 ただし、その時に、暗号化のベースとなる 2 文字の'salt' 文字列を 指定するのですが、これが、通常無指定のことがあって、 無指定だと、出力の最初の2文字をsalt として使用します。 こういう、暗号鍵を使ったJAVAの関数が見当たらなくて、 java.security javax.crypto javax.crypto.spec 等を使って、SecretKeySpec で試してみたのですが、同じではないようです。 鍵の部分で、どういう指定をすれば、このPHPの暗号化と同じ、 鍵の指定が出来るのかが、わからない状態です。 また何か情報がありましたら、お願いいたします。 |
|
投稿日時: 2004-03-23 14:58
UNIX crypt について本当に調べられましたか ?
暗号時: salt が指定されていないときはランダムに 2文字生成して salt として暗号に使用します。 復号時: 暗号済み文字列の頭 2文字を salt として復号します。 質問が暗号時のものでしたら「PHP と同じ乱数生成プログラムを用意しない限り不可能です」(というか、そういうこと(同じ暗号文字列を作成すること)は意味がない)。 復号時のものでしたら「上記の通り復号には問題ありません」。 となります。 [追記] 勘違いしてました。復号はできませんね。 実際の使用方法は次の発言に書きました。 [ メッセージ編集済み 編集者: びしばし 編集日時 2004-03-23 16:56 ] |
