- - PR -
MD5の暗号化コードの復元について
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-03-15 20:32
こんにちは
VB.netで(1234)をMD5: 81DC9BDB52D04DC2036DBD8313ED055となって、 PHPを使って(81DC9BDB52D04DC2036DBD8313ED055)を元の数字:1234にしたいです。その時に、以下の疑問があります。 ●VB.netで暗号化したコードは0が消えてしまうのですが、対策はありますか? VB(1234)=81DC9BDB52D04DC2036DBD8313ED055 PHP(1234)= 81dc9bdb52d04dc20036dbd8313ed055 ●本題である、暗号化したコードから1234は出す事はできますか? VBでMD5を使うのは、http://itpro.nikkeibp.co.jp/article/COLUMN/20070123/259318/?ST=develop を使用させていただきました。 PHP4.4.1 VB.net2005ExpressEdition | ||||||||||||
|
投稿日時: 2007-03-15 20:43
NAL-6295です。
参考にされたページにも書いてありますので、 そちらを良く読んでいただければと思いますが、 MD5はハッシュ値を生成するわけで、不可逆なため、 元に戻すことはできません。 [ メッセージ編集済み 編集者: NAL-6295 編集日時 2007-03-15 20:44 ] | ||||||||||||
|
投稿日時: 2007-03-15 20:47
参照元の記事をキチンと読んでいるのでしょうか?
md5よりもビット長が短いことが保障されていれば、ブルートフォースで 復号化できるかもしれませんが、コリジョン問題もあることですし 100%導けるかは謎です。 1234なら短い時間でみつかるかもしれませんが1234は少しだけ時間 がかかりそうですね。 [ メッセージ編集済み 編集者: 末記人 編集日時 2007-03-15 20:49 ] | ||||||||||||
|
投稿日時: 2007-03-15 23:07
こういう誤解をする人が居るから、「暗号化」というのは反対なのだが。。。 #もちろん末記人さんが言ってるとは思ってません。 #参照元に言ってます。 ちなみに、PHPのパスワードの暗号化にMD5を使うのは、逆にしなくていいからです。 "1234"が来たら、その時にMD5に変換して文字列比較(81DC...)すればいいからです。 だから復号の必要はありません。本来は。暗号化してるのはサーバ側です。 要するに、通信路の暗号化とは関係ありません。 おそらく、VBとPHPの間の通信路の「パスワード」を暗号化しようとしてMD5を 使ったと推測しますが、それは無理があります。通信路の暗号化はSSLの方が無難です。
16バイトなので32文字です。(当然)VBのコーディングが間違ってる可能性が高いと 思いますけど。中身はさすがに分かりません。文字列の結合を間違ってませんか。 | ||||||||||||
|
投稿日時: 2007-03-16 00:41
バグってますね。 しかし、暗号化っていえば普通復号できるものを指すと思うのに、 なんでわざわざ不可逆な暗号化なんて言い方するんでしょうね。 --追記 ちょっと変ですね、 暗号化っていえば普通復号できるものしか言わないと思うのに、 って感じですね。 [ メッセージ編集済み 編集者: なちゃ 編集日時 2007-03-16 08:35 ] | ||||||||||||
|
投稿日時: 2007-03-16 00:47
追記
Hex(BytData.ToString) ↓ BytData.ToString("x2") とかでいいのかな? ※確認してません、あしからず。 |
1