ラボ > PHP:セキュリティ関連

暗号化と復元(openssl_〇〇〇())

formのパスワードだったり、重要なデータなどを送るときと受け取るとき。

作成日:2019-03-11, 更新日:2022-09-22

他サイトから引用

詳細は未調査。

暗号化

//POSTされた値
$post_str = '東京都港区南青山2丁目';

//暗号化・復元用のソルトを指定します。これは漏れたらダメなやつです
$passphrase = 'HONDARA 271'; 

//暗号化・復元用のIVキーを作成

//暗号化用のメソッドを指定
$method = 'AES-256-CBC';
//利用可能な暗号メソッドの一覧を取得するには openssl_get_cipher_methods() を使用;
/*
$ciphers = openssl_get_cipher_methods();
var_dump($ciphers);
*/

//暗号初期化ベクトル (iv) の長さを取得
$iv_size = openssl_cipher_iv_length($method);  

//暗号モードに対するIVの長さに合わせたキーを生成します
$iv = openssl_random_pseudo_bytes($iv_size);

//暗号化を実施
$options = OPENSSL_RAW_DATA;
$encrypted = openssl_encrypt($post_str, $method, $passphrase, $options, $iv);

//DB保存用にIVキーと暗号化したデータをBace64でエンコードする
$base64_iv = base64_encode($iv);
$base64_encrypted = base64_encode($encrypted);

復元

//復元したいデータとそのIVキーをデータベースから引き出してBase64でデコードする
$iv = base64_decode($base64_iv);
$encrypted = base64_decode($base64_encrypted);

//暗号化したときのソルトを指定。これは漏れたらダメなやつです
$passphrase = 'HONDA RA271';

//暗号化用のメソッドを指定
$method = 'AES-256-CBC';

//復元を実施
$options = OPENSSL_RAW_DATA;
$decrypted = openssl_decrypt($encrypted, $method, $passphrase, $options, $iv);

[PHP]重要な文字列を暗号化して保管し、利用するときは復元する方法(OpenSSL使用)

関連項目