- PR -

PHPのCRYPT関数をVB6にて実装する方法について

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2007-11-13 11:19
何時もお世話になります。

現在VB6にて開発を行っているのですが下記が実現
出来るかどうか調べているのですがなかなか見つかり
ません。

@PHPのCRYPT関数?にて暗号化された結果を取得する
 作業をVB6にて行いたい。

 PHP: AAA をキー BBB にて暗号化 結果CCC

というふうになるのであればVB6でも同じように
AAAという文字とキーBBBから暗号化されたCCCを
 取得したいと思っています。

インターネットにてcryptのサンプル等(vb6用)等あったの
ですが、それで暗号化した結果はPHPにて暗号化した結果と
はまったく異なったものになってしまいます。

何かが根本的に違うのでしょうか?

わかる方がおられましたら宜しくお願いします。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-11-13 12:15
引用:

未記入さんの書き込み (2007-11-13 11:19) より:
何時もお世話になります。

現在VB6にて開発を行っているのですが下記が実現
出来るかどうか調べているのですがなかなか見つかり
ません。


同じ方法(DES or MD5)で暗号化してる?
同じsaltを使用してる?
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2007-11-13 17:28
かずさんお返事ありがとうございます。

あれから色々調べました結果以下のことがわかりました。

暗号化の方法は
Standard DES

PHPには
echo 'Standard DES: ' . crypt('abc', 'oioi') . "\n";

で出力して、結果としては
oiOIbn0Mtj63o

が帰ってきています。

今後はVBの方ですがこれを出力するのによさそうなサンプル
がいまだ見つかっていません。

上記情報にて何かわかる事があれば宜しくお願いします。
引き続き調査してみます。
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2007-11-13 18:14
crypt() は結果が必ず文字列になるように加工したりしているので、単純に DES をすればいいってものでもないです。

PHP のソースを見て、crypt() が何をしているかを確認してそのロジックを再実装することになるのではないでしょうか。(おそらく、PHP はその OS 上の libc の crypt() を呼んでいるだけでしょうから、実際は libc のソースを見ることになる)
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-11-13 18:47
引用:

インターネットにてcryptのサンプル等(vb6用)等あったの
ですが、それで暗号化した結果はPHPにて暗号化した結果と
はまったく異なったものになってしまいます。


その「まったく異なったもの」というのはどういう内容なんでしょう?
引用:

今後はVBの方ですがこれを出力するのによさそうなサンプル
がいまだ見つかっていません。


どうやって比較したんだろう・・と思ってしまうのですが。
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2007-11-14 08:46
みなさんお返事ありがとうございます。

>PHP はその OS 上の libc の crypt() を呼んでいるだけでしょうから

現在使用のOSはwindows2000なのですがVB6.0からでも
libcのcryptを呼び出して値を返してもらうことは可能
でしょうか?

宜しくお願いします。
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2007-11-14 10:59
Windowsなんですね。でしたら「libc の crypt()」なんてありませんから、やっぱり PHP のソースを見て何をしているのかを調べるのが最初のステップです。
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 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>

としています。

宜しくお願いします。

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