PHPサンプル
UPDATE:2018年12月17日
PHP 文字列を暗号化したい
PHP4 PHP5 PHP7
openssl_encrypt()
openssl_decrypt()
書式 暗号化
暗号化された文字列 = openssl_encrypt(暗号化する文字列 ,暗号化メソッド, キー);
※メソッドは var_dump(openssl_get_cipher_methods()); で表示
※キーは長い方が良い
暗号化された文字列 = openssl_encrypt(暗号化する文字列 ,暗号化メソッド, キー);
※メソッドは var_dump(openssl_get_cipher_methods()); で表示
※キーは長い方が良い
書式 復号化
復号化された文字列 = openssl_decrypt(暗号化された文字列 ,暗号化メソッド, キー);
※メソッドは暗号化時と合わせる
サンプル
1 2 3 4 5 | <?php $password = 'ユーザーの入力したパスワード!'; $encString = openssl_encrypt($password, 'AES-128-CBC', 'ペットの名前'); $decString = openssl_decrypt($encString, 'AES-128-CBC', 'ペットの名前'); ?> |
文字列の暗号化 openssl_encrypt() openssl_decrypt()
openssl_encrypt() は、指定した文字列を指定したキーと暗号化メソッドでエンコードされた文字列を返します。暗号化された文字列は openssl_decrypt() で復号化できます。
書式
書式 暗号化
暗号化された文字列 = openssl_encrypt(暗号化する文字列 ,暗号化メソッド, キー);
※メソッドは var_dump(openssl_get_cipher_methods()); で表示
※キーは長い方が良い
暗号化された文字列 = openssl_encrypt(暗号化する文字列 ,暗号化メソッド, キー);
※メソッドは var_dump(openssl_get_cipher_methods()); で表示
※キーは長い方が良い
書式 復号化
復号化された文字列 = openssl_decrypt(暗号化された文字列 ,暗号化メソッド, キー);
※メソッドは暗号化時と合わせる
暗号化メソッドは、var_dump(openssl_get_cipher_methods()); で確認できます。キーはなるべく長くした方が安全性が高まります。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <!-- サンプルコード --> <h3>文字列の暗号化と復号化</h3> <?php //キー(任意の文字列) $key = ' 0APS5Yh8jL9vIyWelYiypXKtYgFD267MbScQCggbXDEQE+5X/sC4AI/ss7pabqJh z99iUWa8kIaOakQtvRBkF2f0MwGolwJe56N/y472hgeXo60uoiKIO3nmksg0DrXl pUoHbREwOo8oc2fcH32QICIw6TqEGs4MiHjkKJh0YyVp3xjyXNBoJ8gJJKWw6Pl6 sm/y4kMWZey9bfIbqmkCVCGUCxtjdxMA3IjJeCiD4DxxNErvZAXNUnpQtQJ72FaH SozwRKcUDYHgUo8Txilbvqfx+fhdpSMrnvAxDE0DGujiQoru6mLKvkxzKgx7mbUr 2e/h9zvqw91dwU3H+rbbxtMCX0QINhHV5R2jIjnxAc3dQ2umPOXYZzJkOUDpPhnk tUfwsllyilR8CAv36pcllKzeC1BDylg4kn7b2b2tmVP8ToCj8Wjl+k9qc9GCj6LO QXFiHYWnXur8ihDZp+CC3DGYJDIA+Zm82Sq+s24jUoMcfMksBbcrtYWXWtf+O7yI gLfpzxjMaDgM26pJoHb5/NMDv7yWaztuHBOB3saukT/yA+pcUEZIyfBbW+0k8rvA E+xzm3Q06n/TTpBPx8Vt2Blc7YPVkj+4+U1HjydKCh/Fg2I8YTjgk7DaH9iQdzv0 mtGGNSCknjBL9L2w4fAsTmveX/oFBxw6CG70X0HkO9zXyIQYOTd6fwSuRvHSRInW w/pqL/wOqpcVD6kPdSSCSwecEXEYiU9fm/BJJhc8pp59/jOmIZkumWccOdcBnQfM Bezh8WfKWEKm4+o3TFgKHkWjwsjDZq4810713vQMaByJdtfF4bc8OrUTVbEbaVsD e73RnfPrnDelkiqk0DpRM3pSZqMB/oUJSYsp4W6UaKNPcatGzwsWruvkiYLaZQRv GO09HAGSeDUwFRlOJ3X1amg4Vkgte55Eo6ojnvkb2VqweIzzDpn2OrFbsl9IQ41w PLaMX0TueDOrRvYqd0tufAo64h1MgY/R6lmqcFd4/nIw1M/TWgPwioTSPd9YSYEk IVq1QEJFAtRyvzk0Zg+7p2GBrPcSydHi3/Es/Vf0/KXSa9aBD7Ogeqzl8OorrRdn KEWw63TnqjgXQYyRTywxAOmdWuydE0RUaM6p8es99IOUQZGDpC3HZMWU+4Ab5Ny3 JA8+/Q37iTIvZm5ohjuRHPfXb5FHLNIHYZcJDLtJdxpfZMK+y5tfZNvMt0ZyntKP kLstbSYzV3uJBFTzGnDXh0T0YrouG62gonyM7pZ1BSTJNUhwGjmAQloZRCrEseI2 yEhrqp2K6wIWdhKEJxsTJDzM40qzmTPm9p3JKXD1+DPf4RzOXzJX7zoSvpeC33ad oQ50K61IhfseShdx+dysHUfAiKH1AS3aFV07inkBPochUFHMnxuIeMKfNQRctcZB JxExlgyvdXy0uL1XjhCiGNeQvMDZ6RmkfY/Hps1H26qSs7lU/pFkGENJNj9H+XBD B7ceuKJLR7d7ahe2pUlows+tH65rgf6UqPvTRvZzeJbWa19Q1tqTksGR/RPLbXN1 b4Ak5TObm8WF8uA5EprePAaVn+ZtGdkQKKGRymxnwConwKw+L8ScmGjXGjlI+IkG '; //暗号化文字列 $string = '暗号化する文字列です。'; //暗号化メソッド $method = 'AES-128-CBC'; //※メソッドの確認 var_dump(openssl_get_cipher_methods()); //暗号化と復号化 openssl $encString = openssl_encrypt($string, $method, $key); $decString = openssl_decrypt($encString, $method, $key); echo "元の文字列:{$string }<br>\n"; echo "暗号化した文字列:{$encString}<br>\n"; echo "復号化した文字列:{$decString}<br>\n"; ?> |
実行結果
文字列の暗号化と復号化
元の文字列:暗号化する文字列です。
暗号化した文字列:PlkDztCxuf2zUBJ2vVx8wuHJ/QcNftbKv7yh3rWjwkVsoDc8kx3VVejXjsFvRboZ
復号化した文字列:暗号化する文字列です。
元の文字列:暗号化する文字列です。
暗号化した文字列:PlkDztCxuf2zUBJ2vVx8wuHJ/QcNftbKv7yh3rWjwkVsoDc8kx3VVejXjsFvRboZ
復号化した文字列:暗号化する文字列です。
ハッシュ値の作成 ハッシュ関数 crypt() md5() hash() sha1
ハッシュ値はハッシュ関数で生成される要約値(短く纏められた値)です。要約値を比較確認等することで、元のデータが正しいかなどの検証が可能です。ハッシュ値は検索の高速化などにも利用されます。
書式
ハッシュした文字列 = crypt('ハッシュしたい文字列');
※パスワード推奨
ハッシュした文字列 = hash('アルゴリズム', 'ハッシュしたい文字列');
※パスワード推奨
アルゴリズム:print_r(hash_algos());
md5ハッシュした文字列 = md5('ハッシュしたい文字列');
※返り値は32文字の16進数
sha1ハッシュした文字列 = sha1('ハッシュしたい文字列');
※返り値は40文字の16進数
例:
1 2 3 4 5 6 7 8 9 10 11 | <!-- サンプルコード --> <?php echo $crypt = crypt('input');//パスワード推奨 echo "<br>\n"; echo $hash = hash('ripemd160', 'input');//パスワード推奨 echo "<br>\n"; echo $md5 = md5('input'); echo "<br>\n"; echo $sha1 = sha1('input'); echo "<br>\n"; ?> |
結果は
$1$IA0XzSAv$aeEoacXAYyt8d86MzsA9E/
6bd154870d9fae5e31feb5033d78d9777b2db909
a43c1b0aa53a0c908810c06ab1ff3967
140f86aae51ab9e1cda9b4254fe98a74eb54c1a1
6bd154870d9fae5e31feb5033d78d9777b2db909
a43c1b0aa53a0c908810c06ab1ff3967
140f86aae51ab9e1cda9b4254fe98a74eb54c1a1
となります。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <!-- サンプルコード --> <h3>文字列の暗号化「crypt()」※パスワードハッシュ推奨</h3> <?php //入力文字列 $sUserInput = 'passwordstring'; //文字列の暗号化 $sPassword = crypt('passwordstring'); //出力 echo '暗号化された文字列:[ '.$sPassword.' ]<br>'; //比較 if(crypt($sUserInput, $sPassword) === $sPassword){ echo 'ユーザーが入力したパスワードは正しいです。'; } //cryptの第2引数のsalt(追加データ)にハッシュ化されたパスワードを渡す。cryptは適切なsaltとして使用してくれる。 ?> <h3>文字列の暗号化「hash()」※パスワードハッシュ推奨</h3> <?php //文字列の暗号化 $sHash = hash('ripemd160', 'input'); //出力 echo '暗号化された文字列:[ '.$sHash.' ]<br>'; //比較 if(hash('ripemd160', 'input') === '6bd154870d9fae5e31feb5033d78d9777b2db909'){ echo '値は等しいです。'; } ?> <h3>文字列の暗号化「md5()」</h3> <?php //文字列の暗号化 $sHash = md5('input'); //出力 echo '暗号化された文字列:[ '.$sHash.' ]<br>'; //比較 if(md5('input') === 'a43c1b0aa53a0c908810c06ab1ff3967'){ echo '値は等しいです。'; } ?> <h3>文字列の暗号化「sha1()」</h3> <?php //文字列の暗号化 $sHash = sha1('input'); //出力 echo '暗号化された文字列:[ '.$sHash.' ]<br>'; //比較 if(sha1('input') === '140f86aae51ab9e1cda9b4254fe98a74eb54c1a1'){ echo '値は等しいです。'; } ?> |
実行結果
文字列の暗号化「crypt()」※パスワードハッシュ推奨
暗号化された文字列:[ $1$eVL1mOz3$2LrikCRBaO5aIuLjU5nDE. ]
ユーザーが入力したパスワードは正しいです。
暗号化された文字列:[ $1$eVL1mOz3$2LrikCRBaO5aIuLjU5nDE. ]
ユーザーが入力したパスワードは正しいです。
文字列の暗号化「hash()」※パスワードハッシュ推奨
暗号化された文字列:[ 6bd154870d9fae5e31feb5033d78d9777b2db909 ]
値は等しいです。
文字列の暗号化「md5()」
暗号化された文字列:[ a43c1b0aa53a0c908810c06ab1ff3967 ]
値は等しいです。
文字列の暗号化「sha1()」
暗号化された文字列:[ 140f86aae51ab9e1cda9b4254fe98a74eb54c1a1 ]
値は等しいです。
タグ(=記事関連ワード)
日付
投稿日:2012年3月4日
最終更新日:2018年12月17日
最終更新日:2018年12月17日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpsample-string-encrypt/trackback/