- - PR -
PHPのCRYPT関数をVB6にて実装する方法について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-13 11:19
何時もお世話になります。
現在VB6にて開発を行っているのですが下記が実現 出来るかどうか調べているのですがなかなか見つかり ません。 @PHPのCRYPT関数?にて暗号化された結果を取得する 作業をVB6にて行いたい。 PHP: AAA をキー BBB にて暗号化 結果CCC というふうになるのであればVB6でも同じように AAAという文字とキーBBBから暗号化されたCCCを 取得したいと思っています。 インターネットにてcryptのサンプル等(vb6用)等あったの ですが、それで暗号化した結果はPHPにて暗号化した結果と はまったく異なったものになってしまいます。 何かが根本的に違うのでしょうか? わかる方がおられましたら宜しくお願いします。 | ||||||||
|
投稿日時: 2007-11-13 12:15
同じ方法(DES or MD5)で暗号化してる? 同じsaltを使用してる? | ||||||||
|
投稿日時: 2007-11-13 17:28
かずさんお返事ありがとうございます。
あれから色々調べました結果以下のことがわかりました。 暗号化の方法は Standard DES PHPには echo 'Standard DES: ' . crypt('abc', 'oioi') . "\n"; で出力して、結果としては oiOIbn0Mtj63o が帰ってきています。 今後はVBの方ですがこれを出力するのによさそうなサンプル がいまだ見つかっていません。 上記情報にて何かわかる事があれば宜しくお願いします。 引き続き調査してみます。 | ||||||||
|
投稿日時: 2007-11-13 18:14
crypt() は結果が必ず文字列になるように加工したりしているので、単純に DES をすればいいってものでもないです。
PHP のソースを見て、crypt() が何をしているかを確認してそのロジックを再実装することになるのではないでしょうか。(おそらく、PHP はその OS 上の libc の crypt() を呼んでいるだけでしょうから、実際は libc のソースを見ることになる) | ||||||||
|
投稿日時: 2007-11-13 18:47
その「まったく異なったもの」というのはどういう内容なんでしょう?
どうやって比較したんだろう・・と思ってしまうのですが。 | ||||||||
|
投稿日時: 2007-11-14 08:46
みなさんお返事ありがとうございます。
>PHP はその OS 上の libc の crypt() を呼んでいるだけでしょうから 現在使用のOSはwindows2000なのですがVB6.0からでも libcのcryptを呼び出して値を返してもらうことは可能 でしょうか? 宜しくお願いします。 | ||||||||
|
投稿日時: 2007-11-14 10:59
Windowsなんですね。でしたら「libc の crypt()」なんてありませんから、やっぱり PHP のソースを見て何をしているのかを調べるのが最初のステップです。
| ||||||||
|
投稿日時: 2007-11-14 11:06
スフレさんお返事ありがとうございます。
何度も質問して申し訳ないのですがPHPのソースを 見て何をしているのかを調べるといのうは、PHPの 関数のcrypt()の中身を調べるということでしょうか? もしそうならその方法はどのようにすればよいので しょうか? ちなみにPHP側のソースは以下のようになってます。 <html> <body> <? echo '<p>ボタンがクリックされました。</p>'; if (CRYPT_STD_DES == 1) { echo 'Standard DES: ' . crypt('abc', 'oioi') . "\n"; } if (CRYPT_EXT_DES == 1) { echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n"; } if (CRYPT_MD5 == 1) { echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n"; } if (CRYPT_BLOWFISH == 1) { echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$rasmuslerd...........$') . "\n"; } ?> </body> </html> としています。 宜しくお願いします。 |