PHP5 + OpenSSL + XML = not work

23i

Guest
PHP5 + OpenSSL + XML = not work

PHP:
$prkeyid = penssl_pkey_get_private"file://c:/CAkey.pem", '1111');
openssl_private_encrypt($res,$crypttext,$prkeyid);
openssl_sign($crypttext, $crypttext, $prkeyid);
если в $crypttext некая строка XML хотя 10000 символов, то результат openssl_private_encrypt - false
а если к примеру такая
PHP:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<d>
<dsd>ffffffffffffff</dsd>
</d>
то всё ок -результат openssl_private_encrypt - true.
что ему не нравится в xml string и как лечить?

-~{}~ 19.04.05 12:03:

есть подозрения что это баг в PHP. возможно?
 

tony2001

TeaM PHPClub
Таким образом работает RSA - для того, чтобы зашифровать бОльший объем данных, надо чтобы ключ был бОльшего размера.
Включи ошибки, он тебе об этом говорит.
 

23i

Guest
error_reporting(E_ALL);
касаемо ключа ничего не говорит....
PHP:
$res = OUT('ahml_import', $tc); // содержится XML порядка 10000 символов
$prkeyid = openssl_pkey_get_private("file://c:/client.pem", '111111');
while ($msg = openssl_error_string())
  echo $msg . "<br />\n" 		

openssl_private_encrypt($res,$crypttext,$prkeyid);
$fp = fopen ("c:/file.xml", "w+");
fwrite ($fp, $crypttext);
fclose ($fp);
файл пустой - PHP не говорит ни о каких пробелма.
я так понимаю надо попробовать увеличить ключ все равно.
до какоро размера чтобы можно было зашифровать рязом к примеру строку размером 300 000 и более?

-~{}~ 19.04.05 16:37:

только этим ключем в формате P12 виндовс 2003 сервер шифрует такие объемы, а пхп не может...
ну увеличивал ключ - все арвно больше 512 байт на выходе поулчить не реально......
помоему ошибка в пхп...
 

tony2001

TeaM PHPClub
>только этим ключем в формате P12 виндовс 2003 сервер шифрует такие объемы,
>а пхп не может...
потому, что винда делит данные на куски и шифрует по частям.

http://bugs.php.net/bug.php?id=26664 - последний комментарий от Wez'а.
 

23i

Guest
так значит на ошибки по размеру внимание не обращать.
какого примерно нужен объем ключа чтобы шифровать строку порядка 300 000 строк?
т.е. может пойти по тому же принципу что и винда бить строку на куски и куски шифровать, а далее просто их склеивать опять?
а подписать поулчится такой объем "склеенный"?
правильно ил я понимаю что openssl не корректно работает с большим объемом?

-~{}~ 19.04.05 16:57:

error:0406C06E:rsa routines:RSA_padding_add_PKCS1_type_1:data too large for key size
и подобная ошибка все равно есть хотя в бакрепорте написано что её очистили...

-~{}~ 19.04.05 18:57:

шифрую в два захода по 500 символов ключем в 8192. собираю в одно, и сохраняю в файл - всё ок.
попытка расшифровать -возврашает нулл и openssl_error_string() возврашает error:0406706C:rsa routines:RSA_EAY_PUBLIC_DECRYPT:data greater than mod len.
я не верю что не возможно работать с сколько то большим обемом.
 

23i

Guest
а с другой стороны смогут ли расшифровать всё сразу?
 
Сверху