0

コンテンツの暗号化と復号化にPHP Crypt_RSA ( http://pear.php.net/package/Crypt_RSA ) を使用しています。内容は1kbサイズです。結果は次のとおりです。


  1. キーの長さ = 1024
  2. 暗号化機能の所要時間: 225 秒

  1. キーの長さ = 2048
  2. 暗号化機能の所要時間: 115 秒

ほとんどのライブ Apache サーバーには実行時間の制限が 120 秒あるため、この実行時間を短縮する必要があります。この実行時間を短縮するにはどうすればよいですか? RSA アルゴリズムのドキュメントによると、1024 ~ 2048 個のキーのみが生成されます。実際、より大きなキーを生成しようとしましたが、常に実行タイムアウトが発生します。

暗号化と復号化の実行時間を短縮するにはどうすればよいですか?

ありがとう、ニラ

4

4 に答える 4

1

まず、phpseclib(純粋なPHPRSA実装)を使用することをお勧めします。PEARのCrypt_RSAの問題は、多くのキー形式をサポートしておらず、RSAブラインドを実行せず(したがって、タイミング攻撃に対して脆弱であるため)、OAEP/PSSをサポートしていないことです。

ZZ Coderは、PKCS#7の使用を推奨しています。次のURLは、軽量バージョンのPKCS#7でphpseclibを使用する方法について説明しています。

http://area51.phpbb.com/phpBB/viewtopic.php?f=84&t=33024

于 2011-05-02T19:07:42.643 に答える
1

キーを大きくしてください :) 数値によると、キーのサイズを 2 倍にすると時間が半分になります。エラーだと思います。

最初に行うことは、C の拡張機能である OpenSSL に切り替えることです。正しいビルドを使用すると、公開鍵の操作はアセンブリで行われるため、PHP コードよりもはるかに高速です。私の経験では、少なくとも 10 倍高速です。

2 番目に行うことは、PKCS#7 のような標準エンベロープを使用することです (OpenSSL はこれをサポートしています)。対称キーを使用して、公開キーを使用してキーを暗号化し、暗号化します。小さなメッセージには多くのオーバーヘッドがありますが、長期的にはメリットがあります。

于 2010-04-30T12:15:39.133 に答える
0

コンテンツの暗号化にRSAを使用しないでください。コンテンツの暗号化に使用される対称鍵の暗号化には、RSAを使用してください。

対称暗号AESは、256ビットのキー長(32バイト)を使用します。RSAを使用して暗号化/復号化するデータは、現在暗号化されているキロバイトのデータの約30分の1です。

したがって、115秒は3〜4秒に短縮され、AESに使用される暗号化/復号化時間はRSAよりもはるかに高速になります。

于 2010-04-30T09:10:41.947 に答える
0

暗号化/復号化のニーズに合わせて、代わりに mcrypt または openssl を使用することを検討してください。例については、openssl_public_encrypt を参照してください。これは、Crypt_* で行われる PHP の実装よりもはるかに高速です (bigint や gmp のような他の C の大きな整数の実装を使用している場合でも)。

于 2010-04-30T10:01:32.123 に答える