Мы пишем для проверки пользовательских данных с помощью API. Для проверки правильности, мне нужно передать две переменные в вызове метода post, и две переменные являются данными и сигнатурой. Итак, цифровая подпись данных в формате PKCS7 с кодировкой base 64.
Для шифрования они дали файл pem для шифрования данных, чтобы сгенерировать подпись в формате PKCS7 с кодировкой base 64.
Поэтому, пожалуйста, посоветуйте мне, как сделать это шифрование, и я делаю этот проект на PHP.
Также я попытался с помощью следующего кода, но без результатов
$data = 'Test Data';
$key = file_get_contents("certificate.pem");
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,[]);
Выход:
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"Content-Transfer-Encoding: base64
MIICCgYJKoZIhvcNAQcDoIIB+zCCAfcCAQAxggG1MIIBsQIBADCBmDCBkDELMAkG
A1UEBhMCSU4xKjAoBgNVBAoTIWVNdWRocmEgQ29uc3VtZXIgU2VydmljZXMgTGlt
aXRlZDEdMBsGA1UECxMUQ2VydGlmeWluZyBBdXRob3JpdHkxNjA0BgNVBAMTLWUt
TXVkaHJhIFN1YiBDQSBmb3IgQ2xhc3MgMyBPcmdhbmlzYXRpb24gMjAxNAIDI2nL
MA0GCSqGSIb3DQEBAQUABIIBAEoKNU5O/NSlM62cVyq1CJ2qN6VA0kDRJaJVrUze
Tbd8OJZdzdcn3T+ZNh2myDRliW3B8Q+u4qZN8NZ1GM9e5OkmdxgWPD0wDhUZyMhu
796XOIdlZVLlyaNDr/QGYb4XxFrsJAqMXYFh3QPIATHhpaBGTnlB2fvFwtLSHocv
TzGT/UgL9aS3BiDh/S7sULsOXZoMNlHP4rnzRnjRsU+QJogtYnKBXGcKuzxeXRDL
dd7OxHTDgf4MFJcBdwdk6xwtbrVfyNCnIwzzFC4UwR5I/w6js+sBTg+EXAcCZqtG
rouNxu+SBkYMh63r+5LX0C8rL6xp6jzt49dgttKxh8Q+xc0wOQYJKoZIhvcNAQcB
MBoGCCqGSIb3DQMCMA4CAgCgBAiKcFDFzN93RIAQprj+fHrW8KA1XSSEY0fH3Q==
Но это не принято из удаленного. пожалуйста, помогите мне
Спасибо
Мне кажется, что ваш pem-файл содержит сертификат + закрытый ключ, и вам нужно сделать подпись, а не шифровать данные.
Используйте поэтому openssl_pkcs7_sign()
вместо шифрования.
Других решений пока нет …