suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php – Openssl_sign verwenden, um Inhalte zu verschlüsseln und verstümmelte Zeichen auszugeben

Bei der Verbindung mit der Drittanbieter-API muss der Inhalt zuerst mit Base64 verarbeitet werden, da der Drittanbieter Java-Verschlüsselung verwendet. Daher wird der übertragene Inhalt zuerst mit Base64 verarbeitet und dann mit OpenSSL_Sign verschlüsselt, der zurückgegebene Code ist jedoch verstümmelt.

$privary = file_get_contents('private_key.pem');
$pkeyid = openssl_pkey_get_private($privary);
$content = '<?xml version="1.0" encoding="UTF8"?><request><head><msgId>115454545454545hghghghgh5465ghghg</msgId><timeStamp>20160110103012304</timeStamp><session></session><userCode>a77b0ae7-af59-4</userCode></head><body><cityMsg><searchTxt>g</searchTxt><page>1</page><count>20</count></cityMsg></body></request>';

$content = base64_encode($content);
openssl_sign($content, $signature, $privary, "SHA256");

print $signature;

Hier ist die Ausgabe:

mm|†Ñ±ù¼®²OW®W‰EdŽáWѤ{†Q&3tÎtþù¹¤5ŸJYLß,@±½Qlî†ÓûñB=ÑF͵OPÔZaîöÃý¯s\^¼žFOôâåä6µµ¬Js¤våaãSchq üî*ªo³¢3<‹adÿ«˜Lí™q.è    &ÂW¬b+…Çênƒy·“KM`–GrìmÈà”è#\ÕQ"½H™Wßr-CB8Ä\ lÅŵü34½˜–þæw÷ w"xåívwѯÎÄ*꾈Ñd0ÉÿíbÉ‹#V+­Ï×úÚë$JÀ†J=C™‹ë)öó

Das korrekte Verschlüsselungsergebnis sollte so aussehen:

bW0TF3yG0bH5vK6yA09XrleJRWSO4VfDkaR7AIZRJjN0znT+FvkSuaQ1n0pZBkzfLI1Asb1RbAjuhtP78UI90UbNtU9Q1Fph7vbDH/2vc1xevJ5GT/Ti5eQ2tbWsSnPCpHblYQTjU39jaHEN/O4qqm+zoggzEjyLYWT/q5hM7ZlxLgvoDAkmwlcbrGIrhcfqFG6DeZC3k0tNYMKWR3LsbcjgjZToI1zVUSK9SJmBV99yLUMOQjjEXBsgbMXFtR78MzS9mJb+5nf3Co13Injl7XZ30a/OxCrqvojRZDDJ/+1iyYsjVisUAa3P1/qP2uskSsCGSj0UQ5mL650TKfbzFg==
typechotypecho2714 Tage vor2982

Antworte allen(1)Ich werde antworten

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-19 09:09:12

    不论是RSA,还是DESAES等加密算法,加密之后本质就是是ascii字符串(0x00-0xff),

    要可视化或者传输 可以 base64 encode

    解密需要先 base64 decode 然后解密

    Antwort
    0
  • StornierenAntwort