久々にPHPネタです。今回はOpenSSL関数の暗号と復元についてご紹介します。
PHPの5.3からほぼ標準で付いている関数です。なんとなーく名前から公開鍵暗号方式っぽいけど今回方法だと共通鍵暗号方式です。
因みに最近知りました。この関数系かなりあるので試しに使ってみてはいかがでしょうか?
可逆化暗号っ以前紹介したPEARのblowfishぐらいなので標準関数でできるのは良いですね。
公開鍵暗号などもできるのでかなり便利に使えそうですね。
スポンサーリンク
$value = 'OpenSSLだぜぇ~、すげ~ぜぇ~';
$password = sha1(uniqid(mt_rand(),true));
// 乱数でパスワード生成
$iv = openssl_random_pseudo_bytes(16);
// ここの数はメソッドに依存します。openssl_cipher_iv_length() で確認できます。
// aesは16なので疑似乱数のバイト文字列を16生成しています。
$raw_output = false;
// trueに設定すると未加工の出力データとして返します。
// falseはbase64 エンコードされた値を返します。
$method = 'aes256';
// 使えるメソッドはopenssl_get_cipher_methods()で確認できます。
$encode = openssl_encrypt($value, $method, $password, $raw_output, $iv);
// 暗号化
$decode = openssl_decrypt($encode, $method, $password, $raw_output, $iv);
// 復元化
var_dump($encode, $decode);
デモサイトありますので確認してみてください。