PHP7 / 8でBlowfishアルゴリズムを用いた暗号化と復号化方法
大分前にPHPでPearのCrypt_Blowfishパッケージを使用し、Blowfishアルゴリズムを用いた暗号化と復号化方法というのをメモしたが、PHP8の環境で使おうとするとエラーになる。どうもPHP7で非推奨になったみたい。そのため当該パッケージは使わずBlowfishアルゴリズムで暗号・復号化する方法をメモ。
対応方法
ソースコード
パスフレーズと初期化ベクトルは適宜変更すること。
<?php define('PASSPHRASE', 'xxxxxxxxxx'); //パスフレーズ define('VECROT', 'xxxxxxxxxx'); //初期化ベクトル define('CIPHER_ALGO', 'bf-cbc'); //暗号メソッド function passwordEncrypt($target){ if( $m = strlen($target) % 8){ $target .= str_repeat("\x00", 8 - $m); } $encrypt = openssl_encrypt( $target, CIPHER_ALGO, PASSPHRASE, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, VECROT, ); return base64_encode($encrypt); } function passwordDecrypt($target){ $decrypt = trim( openssl_decrypt( base64_decode($target), CIPHER_ALGO, PASSPHRASE, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, VECROT, ) ); return $decrypt; } $target = '暗号化したい文字列'; $test_encrypt = passwordEncrypt($target); var_dump($test_encrypt); //string(44) "ef79hQpAM4ufxg1VB9dfSoG5wEQMt2f95k2omAe1azk=" $test_decrypt = passwordDecrypt($test_encrypt); var_dump($test_decrypt); //string(27) "暗号化したい文字列"
リファレンス
openssl_encrypt
https://www.php.net/manual/ja/function.openssl-encrypt.php
openssl_decrypt
https://www.php.net/manual/ja/function.openssl-decrypt.php
参考サイト
関連記事
-
-
SortableJSを使ってデータの並べ替え&保存
あるシステムを拝見した際にtableタグ内に並んでいる項目をドラッグ&ド ...
-
-
フォームからアップロードした画像にPHPで任意のテキストを追加する方法
以前フォームから送られてきた画像に対してサイトロゴみたいなロゴ画像を追加する記事 ...
-
-
PHPで住所や名前のテキストをランダム生成するライブラリFakerPHPの使い方
PHPでランダムなデータを生成したい際に値段や点数等の数値やパスワード等のランダ ...
-
-
PukiWikiでバックアップを週一等スケジュール化して実行する方法
PukiWikiでバックアップを取りたかった。調べたらディレクトリごと保存すれば ...
-
-
ブログサービスの様にサブドメインを動的に生成する方法
ブログサービスの様に「hoge」というログインIDを作成した際「hoge.blo ...