作成したファイルを公開鍵暗号方式で暗号化し、渡してほしいとのことだったのでopensslにて暗号化する仕組みを調べていたのですが、どうやら通常の暗号化では鍵より容量の大きいサイズのファイルを暗号化できないようで、困っておりました。
↓PHPで実際に書いたソース
php
1openssl_public_encrypt($str, $crypted, $this->encrypt_key_str); 2// $strが大きいと$cryptedがNULLになってしまう!
参考)なぜ暗号化できないか仕組みを知った記事
http://qiita.com/kunichiko/items/3c0b1a2915e9dacbd4c1
...
そのため、共通鍵を作成し、共通鍵でファイルを暗号化したのち、共通鍵を公開鍵で暗号する方針を考えたのですが、ファイル受領側の復号の手間が増えるということで、案を練り直しました。
その際に、以下のようなコマンドで、容量の大きいファイルでも公開鍵暗号化方式で暗号化できることを知りました。
bash
1openssl smime -encrypt -aes256 -in infile.txt -binary -outform DEM -out outfile.txt public_key.pem
PHPでも似たようなコマンドがありました。
php
1openssl_pkcs7_encrypt($infile, $outfile, $this->encrypt_key_str,[]); 2// $infileが大きくてもと$outfileが作成できる!
これらはS/MIMEを利用しているとのことですが、
なぜ公開鍵暗号化方式で暗号化できているのでしょうか。
不勉強で申し訳ありません、調べてみたのですがあまりよくわからず。。
ご回答いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/24 15:19