PHPプログラムに関する各種メモ書き

phpでパスワード等の可逆暗号を行う

● phpで可逆暗号を行う

phpで可逆暗号を行うには, mcrypt , OpenSSL , PEAR::Crypt_Blowfish などがありますが、
mcrypt は近い将来 php 7.2で削除されますし、PEAR::Crypt_Blowfishも古いライブラリーなので OpenSSL から共通鍵暗号を使用します。

※ PHP 7.1.x で推奨されなくなる機能

http://php.net/manual/ja/migration71.deprecated.php

mcrypt 拡張モジュールは十年近くにわたって放置されており、極めて使いづらいものです。 
そこで、この拡張モジュールを非推奨にしました。
かわりに OpenSSL を使いましょう。 mcryptは PHP 7.2 でコアから削除されて、PECL に移る予定です。

● PHPのopenssl_encrypt()を使って AES 256 CBC で暗号化・復号化する例

$data     = 'あいうえおかきくけこさしすせそ';
$password = 'my_password';

// 利用可能な暗号メソッド一覧
$ciphers = openssl_get_cipher_methods();
print_r($ciphers);

// 暗号化方式
$method = 'AES-256-CBC';

// IV(初期化ベクトル)に必要な長さを取得
$iv_length = openssl_cipher_iv_length($method);

// IV(初期化ベクトル)をランダム生成
$iv = openssl_random_pseudo_bytes($iv_length);

// OPENSSL_RAW_DATA と OPENSSL_ZERO_PADDING を指定可
$options = 0;

// 暗号化
$encrypted = openssl_encrypt($data, $method, $password, $options, $iv);
echo "暗号文:" .$encrypted . "\n";

// 復号
$decrypted = openssl_decrypt($encrypted, $method, $password, $options, $iv);
echo "平文:" .$decrypted ."\n";

引用 : http://php-archive.net/?p=977

No.1118
04/05 19:31

edit