PHP RSA получить открытый ключ из файла Pem - PullRequest
2 голосов
/ 10 января 2011

Как я могу получить publickey из файла pem, который создан на основе RSA 364. установленная библиотека crypt (RSA.php) все еще получает ошибку ниже

Неустранимая ошибка: вызов неопределенного метода Crypt_RSA :: loadKey () в C: \ Program Files \ Apache Software Foundation \ Apache2.2 \ htdocs \ rsa.php

$file = "C:\key_file.pem"; 
$keypair = Crypt_RSA_KeyPair::fromPEMString(file_get_contents($file));
$public_key = $keypair->getPublicKey(); 
$rsa_pub_key = Crypt_RSA_Key::fromString($public_key->toString()); 
$rsa_obj = new Crypt_RSA; 
$verify_status = $rsa_obj->validateSign($text,$recieved_signed_sign, $rsa_pub_key) ? 'valid' : 'invalid'; 

получение ошибки как Неустранимая ошибка: вызов неопределенного метода PEAR_Error :: getPublicKey () в C: \ Program Files \ xxxx \ rsa.php

Пробовал тоже самое openssl_verify. Подтвердить возвращается 0 Попытка проверить знак, полученный с помощью base64_encode с ключом 384 rsa.

**$base64DecodedStr = base64_decode("A1a0o8JzF7q12Sr4gJvYjslhg5XVA2fWy28.JyohJ05uyiZGyBpqazqb");
$status = openssl_verify($msg,$base64DecodedStr,$pub_key);**

Пожалуйста, помогите мне решить эту проблему. Большое спасибо.

Ответы [ 2 ]

1 голос
/ 10 января 2011

Согласно документации Crypt_RSA , класс Crypt_RSA не имеет метода loadKey (). Вы передаете открытый ключ конструктору как часть ассоциативного массива параметров:

$rsa_obj = new Crypt_RSA(array('public_key' => $publickey));
0 голосов
/ 11 января 2011

Моя рекомендация: не используйте Crypt_RSA от PEAR, а Crypt_RSA от phpseclib.

PEAR Crypt_RSA не соответствует PKCS # 1, что означает, что сигнатуры или ciphertexst, сгенерированные с его помощью, не будут взаимодействовать с другими языками, не поддерживают секретные ключи и не поддерживаются в течение многих лет.

Дополнительная информация о phpseclib:

http://phpseclib.sourceforge.net/

...