手軽に文字列を暗号化・復号化する

セキュリティー

PHPでは日本語を含む文字列を簡単に暗号化・復号化する関数があります。

この記事ではサンプルを例に暗号化・復号化の手順を説明します。

必要なモジュール

暗号化・復号化にはPHPのOpenssl関数を利用します。

最新のバージョンでは標準で利用できますが、お使いのPHPのバージョンが5.3.3以上でない場合はOpenssl関数が利用できない場合があります。

文字列を暗号化する

以下が暗号化のサンプルになります。

<?php $secret_key = '0123456789ABCDEF'; $default_str = '〇×△□壱弐参あかさたなアカサタナ';  $encode_str = openssl_encrypt($str, 'AES-128-CBC', $key);  echo "初期の文字列:".$default_str."<br/>";
echo "暗号化文字列:".$encode_str."<br />";
?>

実行結果

説明

サンプルの暗号化は、openssl_encrypt関数を使用しております。
$secret_key は暗号化する為の鍵となるデータになり暗号化したデータを複合する際のこの鍵が必要となり、$defaulr_str の文字列は、$secret_keyのデータによって暗号化し、その結果を$encode_strへ返すという内容になります。

暗号化したデータを 復号 する

以下にようにさきほど作成したサンプルに復号化するプログラムを追記します。

・・・省略 echo "暗号化文字列:".$encode_str."<br/>";
// 以下の2行を追記
$decode_str = openssl_decrypt($encode_str, 'AES-128-CBC', $secret_key);
echo "複合化文字列:".$decode_str."<br />";

実行結果

説明

暗号化で使用した$secret_keyを使用して復号化しているのが確認できます。

復号できないパターンを確認する

試しに以下にように複合に使用する$secret_keyに文字列を追加する形で変更してみます。

// $secret_keyの先頭に、abcを追加
$decode_str = openssl_decrypt($encode_str, 'AES-128-CBC', "abc".$secret_key);

実行結果

復号に失敗した為、復号化文字列が表示されていない事が確認できます。

まとめ

暗号化は、このサンプルのように手軽に利用する事ができますが、暗号化する為の鍵データの扱いは厳重に管理し外部に漏れないようにする必要があるといえます。

コメント

タイトルとURLをコピーしました