- - PR -
PHPでencrypt暗号化したい場合
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-04-16 15:31
hidemaruさん、angelさん 回答ありがとうございます。
色々調べてみたのですが、 $string2 = crypt($string1);で指定すれば、$1$・・・ と34文字くらいで表示されますが、$string2 = crypt($string1,$string1);と 引数(salt?)を指定すれば、13文字の暗号化して表示する事ができるみたいです。 色々な情報ありがとうございました。大変勉強になりました。 | ||||
|
投稿日時: 2005-04-16 15:50
1つ突っ込みです。
saltは、暗号化したデータから、元のデータの予測を困難にするために、ランダムなデータを使用すべきものです。 なおかつ、暗号化したデータには salt の情報が残ってしまいますから、暗号化対象のデータを salt として流用するのはお奨めできません。 …で、13文字になる暗号化(標準DES)では、salt に使用されるのは、指定した文字列の先頭2文字ですから、結局2文字だけランダムな文字を用意すれば良いはずです。 (文字の範囲は 0〜9 と a〜z と A〜Z と ./ の64文字) 以上、ご参考まで。 [ メッセージ編集済み 編集者: angel 編集日時 2005-04-16 16:09 ] | ||||
|
投稿日時: 2005-04-16 18:47
angelさんの情報で、
おそらく、PHP定数の、 CRYPT_MD5 が有効になっているため、 salt を指定しない状態で、 「 CRYPT_MD5 - $1$ で始まる12文字のSALTを有するMD5暗号」 となっているのだと思います。 define() 関数で、定数を変更して、調べてみてください。 CRYPT_MD5 を無効にするには、おそらく define("CRYPT_MD5",0); そして、「 CRYPT_STD_DES - 2文字 SALT の標準 DES 暗号」 を有効にするには、 define("CRYPT_STD_DES",1); でいいと思います。(0と1が逆だったらごめんなさい) | ||||
|
投稿日時: 2005-04-18 21:01
angelさん、hidemaruさん指摘とアドバイスありがとうございます。
hidemaruさんが教えていただいたプログラムですが define("CRYPT_MD5",0);などやってみましたが、変化が見れませんでした。 angelさんが指摘された$string2 = crypt($string1,$string1);を $string2 = crypt($string1,"it");として実行すると itjqrIPhMQ5WY という風に最初の2文字itと表示されるようになりました。 そこで質問ですが、このパスワードは他のコンピュータにデータを移行しても使えますか?(フォーマットした場合など) やはり、コンピュータが変わるとパスワードも再設定しなければならないのでしょうか? | ||||
|
投稿日時: 2005-04-18 22:48
それは問題無いと思いますよ。 データを載せる機器に関係なく、salt と元の文字列から一意に決まるデータですから。 | ||||
|
投稿日時: 2005-04-19 17:06
angelさん、回答ありがとうございます。
今回の件で、データの暗号化や移行もできそうです。 アドバイスありがとうございました。 |