- - PR -
PHPでencrypt暗号化したい場合
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-04-14 02:24
バージョンPHP 4.3.10
現在、PHPからデータベースMySQLに暗号化して保存するプログラムを作っています。 MySQLで暗号化する場合は、encrypt関数を使い保存しました。 これと同じよう値になるように、PHPから暗号化したい場合どのような 命令をしたら良いでしょうか? 参考になるページがあれば教えてください。 よろしくお願いします。 |
|
投稿日時: 2005-04-14 10:52
hidemaru です。
MySQLのencrypt関数は、UNIXの crypt システムコールで暗号化するものでしたよね。 それならば、PHPでは、crypt関数を使います。 http://jp2.php.net/manual/ja/function.crypt.php ここに使い方など載っています。 |
|
投稿日時: 2005-04-14 12:42
hidemaruさん、回答ありがとうございます。
$cpassword = crypt($password); と指定すして暗号化して保存する事ができました。 動作試験も正常に行う事ができました。 しかし、わからない所がありMySQLとPHPでは、暗号化した文字列数が違います。 MySQLだと13文字でPHPだと34文字?で保存しているみたいです。 文字数を合わせたい場合は、どのようになるのでしょうか? よろしくお願いします。 |
|
投稿日時: 2005-04-14 13:19
hidemaru です。
PHPで34文字ですか? 当方の環境では、通常の13文字で暗号化されるのですが、 34文字というのは、経験がないですね。 この関数は、salt を指定する以外は、特に何も無いので、 どこかで文字数のカウントを間違っていないでしょうか? 暗号化後、保存する前に表示してみるとかで、再確認してみてください。 |
|
投稿日時: 2005-04-14 14:34
hidemaruさん、回答ありがとうございます。
気になる点は、php.iniで設定をcrypt設定をしていないからかもしれません・・・。 もう少し調べてみます。 ありがとうございました。 |
|
投稿日時: 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 ] |
|
投稿日時: 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 は関係ないと思います。 当方も、特に指定はしていません。 |
|
投稿日時: 2005-04-16 13:44
PHPマニュアルのcryptによると、複数種類の暗号化があるようですね。
Linux glibcのcrypt関数のGNU拡張の説明も参考になるのではないでしょうか。 # Linuxの /etc/shadow では、“$1$”で始まる暗号化パスワードを良くみかけます。 |