PHPのopenssl_public_encrypt()を使用して、RSAを使用してデータを暗号化しています。ただし、特定のサイズを超えるデータは暗号化されません。
任意の長さのデータを暗号化するにはどうすればよいですか?
PHPのopenssl_public_encrypt()を使用して、RSAを使用してデータを暗号化しています。ただし、特定のサイズを超えるデータは暗号化されません。
任意の長さのデータを暗号化するにはどうすればよいですか?
PKCS1 パディングを使用する RSA では、キーの長さ (バイト単位) - 11 の文字列のみを実行できます。これは、OpenSSL または PHP の制限ではなく、RSA の制限です。
openssl_* 関数セットを使用してより長い文字列を実行する場合は、openssl_sealとopenssl_openを使用します。openssl_seal はランダムな文字列を生成し、RSA で暗号化してから、前述のランダムな文字列をキーとして使用して、実際に暗号化しようとしているデータを RC4 で暗号化します。
純粋な PHP RSA 実装である phpseclibは、異なるアプローチを採用しています。RSA キーよりも大きな文字列を暗号化することを主張する場合、その文字列を RSA が処理できる最大サイズのチャンクに分割し、結果を連結します。
phpseclib OpenSSL Interoperabilityページでは、phpseclib を使用して openssl_seal / openssl_open と同じことを行う方法について説明しています。
それが役立つことを願っています!
php.net ページには、この問題に対する優れたヒントがあります (いつものように) http://www.php.net/manual/en/function.openssl-public-encrypt.php#95307