Tôi có RSA public key này:PHP openssl_public_encrypt "thông số quan trọng không phải là một chìa khóa hợp lệ"
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtixUGzGpLXgZ7AV1HfmIHV/FEF+fww77FekRc2oLhUOd4HitwCPo76fjtdsQBEt8w9HZ3CXVphaAU2BA6MEZJ3ShVMsdAXb2ZA1C+lu7k1GV9M/BhucTg35HujSK647Sc5MwVLwFsN80dAnGsZF8gwb2TNUzXHwzbAb30T01zuqf8RCM75OwKZFYqzu7FOVrtk/w9mh92MOXG0l7WSqNIctu8Kxka/tEJJIA5nqMGNMocjwprXy66NS7FFy1GY+NnxfFLtODqq0tllc50UCDsnqSvNmj2wcnAcsCzNOoxPPgp7t8S+sQvOzgc5W3CDjIsYEiGD+vzSVNkGiRou577wIDAQAB
(Mỗi chủ chốt khác tôi cố gắng cung cấp cho các lỗi tương tự, quá)
và chuỗi này:
$str = "VOTE\n" .
"server-list\n" .
"$user\n" .
"$userip\n" .
time()."\n";
tôi sử dụng mã này để làm cho chuỗi trở thành chính xác 256 byte để nó theo tiêu chuẩn cho các ứng dụng cụ thể này:
$leftover = (256 - strlen($str))/2;
while ($leftover > 0) {
$str .= "\x0";
$leftover--;
}
Để định dạng chìa khóa, tôi làm điều này:
$key = wordwrap($key, 65, "\n", true);
$key = <<<EOF
-----BEGIN PUBLIC KEY-----
$key
-----END PUBLIC KEY-----
EOF;
Khi tôi làm openssl_public_encrypt($str, $encrypted, $key);
tôi nhận được cảnh báo sau đây:
Warning: openssl_public_encrypt() function.openssl-public-encrypt: key parameter is not a valid public key in ...
Tôi không chắc chắn lý do tại sao điều này xảy ra. Đây là hình thức của khóa khi tôi lặp lại:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtixUGzGpLXgZ7AV1HfmIH
V/FEF
fww77FekRc2oLhUOd4HitwCPo76fjtdsQBEt8w9HZ3CXVphaAU2BA6MEZJ3ShVMsd
AXb2ZA1C
lu7k1GV9M/BhucTg35HujSK647Sc5MwVLwFsN80dAnGsZF8gwb2TNUzXHwzbAb30T
01zuqf8RCM75OwKZFYqzu7FOVrtk/w9mh92MOXG0l7WSqNIctu8Kxka/tEJJIA5nq
MGNMocjwprXy66NS7FFy1GY
NnxfFLtODqq0tllc50UCDsnqSvNmj2wcnAcsCzNOoxPPgp7t8S
sQvOzgc5W3CDjIsYEiGD vzSVNkGiRou577wIDAQAB
-----END PUBLIC KEY-----
Mọi trợ giúp sẽ được đánh giá cao!
Edit: Một khóa làm việc sẽ giống như sau:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmHzD76i8DA25nC+Qsswi
OM0lW+gViiQD4tEm7suxBc2BGibtdlrsprVIId92hSjQKx4x8+XVWU6k89T5vy8Y
txpXN759OWdGkDi8uvZuYclMjW9Rao+oqSvbXH37R7oSY287I+6uOHclGhniQN3q
RyoXBkbhDk0/FTI/i549q/gGk1UZYv449KLrDOqmtohRcIyAYVnvvWtD1kIzourq
hMtEIrPqwoBqTaUA9kOIXw1jMovao2TN52j48KgOg9KjqtdwUwD9e6n7hJd/subF
6woc8L7zjJFOHH5gacUC7vtiMpBpnSyLQpjFLepYYwftjsRmg4xLdh+Zvgw3xqi4
lwIDAQAB
-----END PUBLIC KEY-----
Điều gì đã xảy ra với ký hiệu '+' trong khóa của bạn? Họ đang đi trong khối định dạng. – sarnold
Hmm .. Tôi không chắc chắn. Và tôi thực sự không biết liệu họ có phải ở đó không vì tôi thực sự không biết mình đang làm gì. Tôi đang cố gắng để làm việc với các giao thức này: https://github.com/vexsoftware/votifier – fruitcup
Các dấu hiệu + đại diện cho byte nhiều như tất cả các nhân vật khác. Mã hóa Base64 sử dụng 'A-Ba-b0-9' và'/'&' + 'để mã hóa byte và có thể là ký tự' = 'cho phần đệm cuối cùng. –