またまた誰も得しないPGPで暗号化テキスト作ってメールするメモ
某案件で使ったんですけど、もう一回使えない?といわれて探してみたら結構見つからなくて。危うくコードロストする所だったのでメモ書きです。
メール云々の所は解説しません。
コード
<?php $body = '暗号化するテキスト'; //相手がWindowsなので $body = preg_replace("/\n/","\r\n", $body); $body = mb_convert_encoding($body, 'SJIS-win', 'UTF-8'); $to = 'to@mail.addr'; $subject = 'メールタイトル'; $pubkey = "-----BEGIN PGP PUBLIC KEY BLOCK----- ※省略(公開鍵) -----END PGP PUBLIC KEY BLOCK-----"; $encryptkey = '暗号化キー指定'; try{ putenv("GNUPGHOME=/tmp"); $res = gnupg_init(); gnupg_import($res, $pubkey); gnupg_addencryptkey($res, $encryptkey); $enc = gnupg_encrypt($res, $body); }catch( Exception $e ){ echo "例外キャッチ:", $e->getMessage(); } mb_send_mail($to,$subject,$enc);
おい、なんだこのメール送信周りのコードは、SJISってなめてんのか
これは自動的に解読されるわけじゃなくて、
暗号化されたメール本文をコピペして、ツールに喰わせて非暗号化する物なのです。
そしてお客様はWindowsをお使いだったのです。
なので、別にUTF-8でもいいけど、お客さんから「文字化けしてるぞ!」ってクレームがくるかもしれない。
暗号化キーってなんぞ?
インポートされている公開鍵を指定するID(fingrprint)です。
調べ方?gpg --fingerprintとか。
インポートって一回でいいんじゃないの?
そうですね。まあでも毎回入れても取り合えず動きますよ。
この例外処理って必要・有用なの?
PHPerなので、参考にしたコードをそのまま使ってるのですよ!