- PR -

MD5の暗号化コードの復元について

1
投稿者投稿内容
まっきまき
会議室デビュー日: 2006/10/27
投稿数: 11
投稿日時: 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
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2007-03-15 20:43
NAL-6295です。

参考にされたページにも書いてありますので、
そちらを良く読んでいただければと思いますが、
MD5はハッシュ値を生成するわけで、不可逆なため、
元に戻すことはできません。


[ メッセージ編集済み 編集者: NAL-6295 編集日時 2007-03-15 20:44 ]
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2007-03-15 20:47
参照元の記事をキチンと読んでいるのでしょうか?

引用:

MD5は暗号化に使用される手法の一つで次のような特徴を持っています。

・不可逆暗号化である
・結果は固定長である
・RFCに定義され標準化している



md5よりもビット長が短いことが保障されていれば、ブルートフォースで
復号化できるかもしれませんが、コリジョン問題もあることですし
100%導けるかは謎です。

1234なら短い時間でみつかるかもしれませんが1234は少しだけ時間
がかかりそうですね。

[ メッセージ編集済み 編集者: 末記人 編集日時 2007-03-15 20:49 ]
加納正和
ぬし
会議室デビュー日: 2004/01/28
投稿数: 332
お住まい・勤務地: 首都圏
投稿日時: 2007-03-15 23:07
引用:

末記人さんの書き込み (2007-03-15 20:47) より:

引用:

MD5は暗号化に使用される手法の一つで次のような特徴を持っています。

・不可逆暗号化である
・結果は固定長である
・RFCに定義され標準化している






こういう誤解をする人が居るから、「暗号化」というのは反対なのだが。。。
#もちろん末記人さんが言ってるとは思ってません。
#参照元に言ってます。

ちなみに、PHPのパスワードの暗号化にMD5を使うのは、逆にしなくていいからです。
"1234"が来たら、その時にMD5に変換して文字列比較(81DC...)すればいいからです。

だから復号の必要はありません。本来は。暗号化してるのはサーバ側です。
要するに、通信路の暗号化とは関係ありません。

おそらく、VBとPHPの間の通信路の「パスワード」を暗号化しようとしてMD5を
使ったと推測しますが、それは無理があります。通信路の暗号化はSSLの方が無難です。

引用:

●VB.netで暗号化したコードは0が消えてしまうのですが、対策はありますか?
VB(1234)=81DC9BDB52D04DC2036DBD8313ED055
PHP(1234)= 81dc9bdb52d04dc20036dbd8313ed055



16バイトなので32文字です。(当然)VBのコーディングが間違ってる可能性が高いと
思いますけど。中身はさすがに分かりません。文字列の結合を間違ってませんか。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-03-16 00:41
引用:

まっきまきさんの書き込み (2007-03-15 20:32) より:
VBでMD5を使うのは、http://itpro.nikkeibp.co.jp/article/COLUMN/20070123/259318/?ST=develop
を使用させていただきました。


バグってますね。

しかし、暗号化っていえば普通復号できるものを指すと思うのに、
なんでわざわざ不可逆な暗号化なんて言い方するんでしょうね。

--追記
ちょっと変ですね、
暗号化っていえば普通復号できるものしか言わないと思うのに、
って感じですね。


[ メッセージ編集済み 編集者: なちゃ 編集日時 2007-03-16 08:35 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-03-16 00:47
追記
Hex(BytData.ToString)

BytData.ToString("x2")
とかでいいのかな?
※確認してません、あしからず。
1

スキルアップ/キャリアアップ(JOB@IT)