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
参考サイト
関連記事
-
-
Shift_JISでカタカナのソを出力するとエラー
先に結論として5C問題とかいうみたいで仕様らしい。 ■参考サイト http:// ...
-
-
ブラウザから動画ファイル名を確認できないようにPHPで動画を出力する方法
Webページ上で動画ファイルを再生したい場合、通常だとブラウザのソースコード上に ...
-
-
Codeigniter4でエラーログ設定、出力及び確認方法
Codeigniter4.4.4でエラーログの設定を行い特定のファイルに出力させ ...
-
-
PHPで外部ファイルから配列を取得
やりたかった事。 ①管理画面で必要項目を入力すると、aaa.phpが 生成される ...
-
-
formにGoogle reCAPTCHA v3を組み込み、PHPでスコア判定する方法
だいぶ前にGoogle reCAPTCHA v2をformに組み込むという記事を ...