2014-11-18 4 views
0

phpseclib와 내 자신의 소수를 사용하여 PKCS # 1 형식으로 개인 키와 공개 키를 생성 할 수 있습니까? 나는 이미 pq을 가지고 있고 두 개의 키를 생성하고 싶습니다. 나는 이런 일을하려고 오전 :자신의 소수를 사용하는 phpseclib createKey()

$p = new Math_BigInteger(...); 
$q = new Math_BigInteger(...); 
$custom_primes = serialize(array('primes'=>array(1=>$p,2=>$q))); 
extract($rsa->createKey(512,10,$custom_primes)); 

을하지만이 나에게 치명적인 오류 제공 :

Fatal error: Call to a member function divide() on a non-object in /volume1/web/phpseclib/Crypt/RSA.php on line 705 

나는이 체크를하고는 분할하려고 : 분명히

list($temp) = $lcm['top']->divide($lcm['bottom']); 

내가 나는 두 개의 소수 만 가지고 있기 때문에 $ custom_primes 구조체에 lcm을 설정하지 않습니다. 그래서 질문은 phpseclib에서 가능합니까?

답변

0

phpseclib의 부분 키 기능을 사용하려는 것 같습니다. 문제는 단지 소수 이상을 기대한다는 것입니다. 예를 들어, 참조 :

return array(
    'privatekey' => '', 
    'publickey' => '', 
    'partialkey' => serialize(array(
     'primes' => $primes, 
     'coefficients' => $coefficients, 
     'lcm' => $lcm, 
     'exponents' => $exponents 
    )) 
); 

$의 LCM은 다음과 같이 초기에 정의됩니다

$lcm = array(
    'top' => $this->one->copy(), 
    'bottom' => false 
); 

그래서 아마 그뿐만 아니라 일을하려고합니다. phpseclib에서 계산 함수 을 제거하고 phpseclib에 $ partial을 전달하고 생성하려는 형식으로 키를 생성하도록 할 수 있습니다.