- PR -

PHPでencrypt暗号化したい場合

投稿者投稿内容
太郎
会議室デビュー日: 2005/02/09
投稿数: 11
投稿日時: 2005-04-14 02:24
バージョンPHP 4.3.10

現在、PHPからデータベースMySQLに暗号化して保存するプログラムを作っています。

MySQLで暗号化する場合は、encrypt関数を使い保存しました。

これと同じよう値になるように、PHPから暗号化したい場合どのような

命令をしたら良いでしょうか?

参考になるページがあれば教えてください。

よろしくお願いします。
hidemaru
常連さん
会議室デビュー日: 2004/03/22
投稿数: 44
投稿日時: 2005-04-14 10:52
hidemaru です。
MySQLのencrypt関数は、UNIXの crypt システムコールで暗号化するものでしたよね。
それならば、PHPでは、crypt関数を使います。

http://jp2.php.net/manual/ja/function.crypt.php

ここに使い方など載っています。
太郎
会議室デビュー日: 2005/02/09
投稿数: 11
投稿日時: 2005-04-14 12:42
hidemaruさん、回答ありがとうございます。

$cpassword = crypt($password);

と指定すして暗号化して保存する事ができました。

動作試験も正常に行う事ができました。

しかし、わからない所がありMySQLとPHPでは、暗号化した文字列数が違います。

MySQLだと13文字でPHPだと34文字?で保存しているみたいです。

文字数を合わせたい場合は、どのようになるのでしょうか?

よろしくお願いします。
hidemaru
常連さん
会議室デビュー日: 2004/03/22
投稿数: 44
投稿日時: 2005-04-14 13:19
hidemaru です。
PHPで34文字ですか?
当方の環境では、通常の13文字で暗号化されるのですが、
34文字というのは、経験がないですね。
この関数は、salt を指定する以外は、特に何も無いので、
どこかで文字数のカウントを間違っていないでしょうか?
暗号化後、保存する前に表示してみるとかで、再確認してみてください。
太郎
会議室デビュー日: 2005/02/09
投稿数: 11
投稿日時: 2005-04-14 14:34
hidemaruさん、回答ありがとうございます。

気になる点は、php.iniで設定をcrypt設定をしていないからかもしれません・・・。

もう少し調べてみます。

ありがとうございました。
太郎
会議室デビュー日: 2005/02/09
投稿数: 11
投稿日時: 2005-04-14 15:01
追記:

$cpassword = crypt($password);

$passwordは入力されたパスワード(文字数制限なし)です。

暗号化した場合$cpasswordは、$1$から始まるパスワードとなっています。

平文パスワード:te
暗号化した文字:$1$rO8pG2Dy$BFMTw6uxz4Et29YR9GA.m.

PHPは、13文字で表示されていません。MySQLは13文字なのですが・・・。

よろしくお願いします。

[ メッセージ編集済み 編集者: 太郎 編集日時 2005-04-14 17:30 ]
hidemaru
常連さん
会議室デビュー日: 2004/03/22
投稿数: 44
投稿日時: 2005-04-16 13:19
hidemaruです。

$1$ から始まるというのは変ですね。
PHP は、シェルのようにコマンドラインからも実行できるので、
次のソースを参考にして、きちんと実行されているか確認してみてください。

#!/usr/local/bin/php ←ここは環境で変更して下さい。
<?php
$string1 = "te";
$string2 = crypt($string1);
echo "元の文字列:" . $string1 . "\n";
echo "crypt値:" . $string2 . "\n";
?>

これを、test.php 等の名前のファイルにして、実行権を与えて、
実行すれば、結果がわかります。

後、php.ini は関係ないと思います。
当方も、特に指定はしていません。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-16 13:44
PHPマニュアルのcryptによると、複数種類の暗号化があるようですね。
Linux glibcのcrypt関数のGNU拡張の説明も参考になるのではないでしょうか。
# Linuxの /etc/shadow では、“$1$”で始まる暗号化パスワードを良くみかけます。

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