2014-11-17 1 views
0

phpseclib0.3.9.zip을 다운로드했습니다. 이 코드를 실행하면 아래 오류가 발생합니다. 나는 이유가 무엇인지 모른다.createKey를 실행할 때 RSA를 사용하면 항상 멈추고 오류 보고서가 표시됩니다.

  Call Stack 
# Time Memory Function Location 
1 0.0020 131696 {main}() ..\test1.php:0 
2 0.0290 1276184 Crypt_RSA->createKey(???, ???, ???) ..\test1.php:7 
3 27.4046 1356352 Math_BigInteger->randomPrime(object(Math_BigInteger)[8], object(Math_BigInteger)[10], bool) ..\RSA.php:662 

도움말 감사 할 : 여기

<?php 
set_include_path(get_include_path() . PATH_SEPARATOR . 'E:/software/PHPRSA'); 

include 'Crypt/RSA.php'; 

$rsa = new Crypt_RSA(); 
extract($rsa->createKey()); 

$plaintext = 'terrafrost'; 

$rsa->loadKey($privatekey); 
$ciphertext = $rsa->encrypt($plaintext); 

$rsa->loadKey($publickey); 
echo $rsa->decrypt($ciphertext); 
?> 

오류 보고서입니다.

답변

1

시간이 초과되었습니다.

RSA 키 쌍을 생성하는 것은 시간이 많이 소요되는 작업입니다. 특히 두 개의 소수를 생성 할 때 수많은 난수를 생성하고 소수를 찾을 때까지 각각을 테스트합니다.

bcmath 또는 gmp 또는 심지어 openssl을 사용하면 작업 속도가 빨라집니다.

당신이 일을 빠르게 할 수있는 몇 가지 다른 것들 ...

  1. define('CRYPT_RSA_SMALLEST_PRIME', 256) 도움이 있었다. 그러면 phpseclib에서 다중 프라임 RSA를 사용하게됩니다. 각 키는 512 비트 대신 256 비트가되므로 소수를 생성하는 것이 더 빠릅니다. 반대로 귀하의 키가 다른 RSA 구현과의 상호 운용성이 좋지 않을 가능성이 있습니다.

  2. timeout 매개 변수와 AJAX를 사용하여 시간이 오래 걸릴 수 있습니다. 더 많은 정보 : http://phpseclib.sourceforge.net/rsa/examples.html#timeout

관련 문제