主にWEB関係の話。

スポンサード リンク

PHPで可逆(復号化可)な暗号化を行う方法。

複数の方からツッコミを頂いたので修正中。


というわけで、PHPでOpenSSLを利用した可逆暗号化を実現する方法。
以下のようなしょっぼいclassを書いてみた。

class MyEncryption {
    private $publicKey = null;
    private $privateKey = null;

    function __construct($publicPath, $privatePath) {
        $this->publicKey = file_get_contents($publicPath);
        $this->privateKey = file_get_contents($privatePath);
    }

    function getEncryption($decryptStr) {
        openssl_public_encrypt($decryptStr, $encryptStr, $this->publicKey);
        return base64_encode($encryptStr);
    }

    function getDecryption($encryptStr) {
        openssl_private_decrypt(base64_decode($encryptStr), $decryptStr, $this->privateKey);
        return $decryptStr;
    }
}

この場合、保存するときは公開鍵(publickey)で、暗号化した情報を読み出すときは秘密鍵(privatekey)であるべきじゃないかな…。

というコメントを頂いていたので、修正しましたm(_ _)m

使い方
秘密鍵と公開鍵の生成

公開鍵と秘密鍵が必要なので、以下のようなコマンドで作成する。
(オプション等は省略している)

秘密鍵を生成

openssl genrsa -out 生成する秘密鍵のファイル名

秘密鍵から公開鍵を生成

openssl rsa -pubout -in 秘密鍵のファイル名 -out 出力する公開鍵のファイル名
暗号化・復号化してみる
//公開鍵と秘密鍵のパスを渡す
$myEncryption = new MyEncryption(公開鍵ファイルのパス, 秘密鍵ファイルのパス);

//暗号化する場合
$encryptionStr = $myEncryption->getEncryption('暗号化したい文字列');

//復号化する場合
$decryptionStr = $myEncryption->getDecryption('復号化したい文字列');

こんな感じで。

スポンサード リンク

人気記事

最近の投稿

カテゴリー

タグ