PHP openssl_public_encrypt “paramètre clé n'est pas une clé valide”

J'ai cette clé publique RSA:

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtixUGzGpLXgZ7AV1HfmIHV/FEF+fww77FekRc2oLhUOd4HitwCPo76fjtdsQBEt8w9HZ3CXVphaAU2BA6MEZJ3ShVMsdAXb2ZA1C+lu7k1GV9M/BhucTg35HujSK647Sc5MwVLwFsN80dAnGsZF8gwb2TNUzXHwzbAb30T01zuqf8RCM75OwKZFYqzu7FOVrtk/w9mh92MOXG0l7WSqNIctu8Kxka/tEJJIA5nqMGNMocjwprXy66NS7FFy1GY+NnxfFLtODqq0tllc50UCDsnqSvNmj2wcnAcsCzNOoxPPgp7t8S+sQvOzgc5W3CDjIsYEiGD+vzSVNkGiRou577wIDAQAB

(Chaque touche, j'essaie donne la même erreur, trop)

et cette chaîne:

$str = "VOTE\n" .
"server-list\n" .
"$user\n" .
"$userip\n" .
time()."\n";

J'utilise ce code pour la chaîne de devenir exactement 256 octets, de sorte qu'il suit la norme pour cette application spécifique:

$leftover = (256 - strlen($str)) / 2;
while ($leftover > 0) {
    $str .= "\x0";
    $leftover--;
}

De formater la clé, je fais ceci:

    $key = wordwrap($key, 65, "\n", true);
    $key = <<<EOF
    -----BEGIN PUBLIC KEY-----
    $key
    -----END PUBLIC KEY-----
EOF;

Quand je fais openssl_public_encrypt($str, $encrypted, $key); je reçois le message d'avertissement suivant:

Warning: openssl_public_encrypt() function.openssl-public-encrypt: key parameter is not a valid public key in ...

Je ne suis pas sûr de savoir pourquoi cela se passe. C'est ce que la clé ressemble quand je l'écho:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtixUGzGpLXgZ7AV1HfmIH
V/FEF
fww77FekRc2oLhUOd4HitwCPo76fjtdsQBEt8w9HZ3CXVphaAU2BA6MEZJ3ShVMsd
AXb2ZA1C
lu7k1GV9M/BhucTg35HujSK647Sc5MwVLwFsN80dAnGsZF8gwb2TNUzXHwzbAb30T
01zuqf8RCM75OwKZFYqzu7FOVrtk/w9mh92MOXG0l7WSqNIctu8Kxka/tEJJIA5nq
MGNMocjwprXy66NS7FFy1GY
NnxfFLtODqq0tllc50UCDsnqSvNmj2wcnAcsCzNOoxPPgp7t8S
sQvOzgc5W3CDjIsYEiGD vzSVNkGiRou577wIDAQAB
-----END PUBLIC KEY-----

Toute aide serait appréciée!

Edit:
Un travail clé devrait ressembler à ceci:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmHzD76i8DA25nC+Qsswi
OM0lW+gViiQD4tEm7suxBc2BGibtdlrsprVIId92hSjQKx4x8+XVWU6k89T5vy8Y
txpXN759OWdGkDi8uvZuYclMjW9Rao+oqSvbXH37R7oSY287I+6uOHclGhniQN3q
RyoXBkbhDk0/FTI/i549q/gGk1UZYv449KLrDOqmtohRcIyAYVnvvWtD1kIzourq
hMtEIrPqwoBqTaUA9kOIXw1jMovao2TN52j48KgOg9KjqtdwUwD9e6n7hJd/subF
6woc8L7zjJFOHH5gacUC7vtiMpBpnSyLQpjFLepYYwftjsRmg4xLdh+Zvgw3xqi4
lwIDAQAB
-----END PUBLIC KEY-----
Ce qui est arrivé à la + signes dans votre clé? Ils sont partis dans la mise en forme de bloc.
Hmm.. je ne suis pas sûr. Et je ne sais vraiment pas si ils sont censés être là parce que j'ai franchement ne sais pas ce que je fais. Je suis en train de travailler avec le protocole de ceci: github.com/vexsoftware/votifier
Les signes + représentent octets autant que tous les autres personnages. Le codage Base64 utilise A-Ba-b0-9 et / & + pour encoder octets, et, éventuellement, la = caractère de remplissage de la dernière partie.
C'est probablement la wordwrap fonction, il semble destiné au fractionnement des chaînes sur les limites de word. Vous êtes mieux un simple comptage des caractères et de l'insertion des caractères de saut de ligne ( si je ne me trompe pas) manuellement.
Je ne suis pas sûr de la façon de le faire. o3o

OriginalL'auteur fruitcup | 2012-03-27