PHP中使用OpenSSL下openssl_verify验证签名案例详解编程语言

使用OpenSSL那么需要先了解一下http://www.cnblogs.com/wt645631686/p/8390936.html

<?php 
//demo    
$json = '{"sign":"myYCvJqsDJUNX67qJnklrVY025oSQmm4D4bIVdHZQzihV+G8G848MmAAatAxCDuCmJbenI0jRZk7p22HjFT0nRykEeSmTExiT+Jx7//2GQn5grEA3qd7i9gCPz//E7+n9mleukLuJoXeceVp626c4gLZTKiPPcmbsJIfwfNexCBZXb2B7OmcgvPqRYki8b8aZy3E//DDdFABOyXr+OEuswooYzz1ivdL+8tfWXhejs54UaeS0IscoWBYXj2Bws8lPpCzC3OCGZV1bErlM7VekfpoNMO//KOpJpPp8kA838EBp7uD//QMKJxf0KeS4qta7E3aWzrwwj97OUKkJOWA2CBFcfA==","pay_data":"{/"amount/":/"200/",/"pay_time/":/"1529975466/",/"appOrderId/":/"31801806260910429835893414/",/"orderId/":/"1000180626057312701/",/"uId/":/"2/",/"appGoodsId/":/"1/",/"test_id/":/"1/"}"}'; 
 
 
/** 
* 验证签名 
*/ 
private function _verify_code($json = '') { 
        $sign         = $json['sign']; 
        $data         = $json['data']; 
        $data_arr     = json_decode($data, true); 
        $test_id     = intval($date_arr['test_id']); 
        if ($test_id == 1) { 
            $publicKey = <<<EOF 
-----BEGIN PUBLIC KEY-----  
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2hcmCgXI9zZXJKWvkWZa 
F/3kuDahyjHud+hmAN1/JA86GMDK64hEPV4CTHYT+WLZu3uT21f/b8IiDpXUvnwf 
OVW+QCk7b4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaP/qAjutxByIcJyuy1JS/CuU2D 
tvMVQ/pfV4r+99kRZ4pu+ZduD/yq5cEXZniQMnmtJI3TW389ESMyFaOzqclraDci 
M1zBkm4rbcwUDJpm+Te6zoqSEy06Z0RR4HL2aOuBIDaCN7sodSmIpcA4xlI6n0z2 
2Jq6K/yyOBGyj7unAbpS5iFuwEV5ICrAt9JezvgJ7wJIXWwxaXs4v+M/a87QiNZw 
FQIDAQAB 
-----END PUBLIC KEY----- 
EOF; 
        }else { 
            $publicKey = <<<EOF 
EOF; 
        } 
        $res = openssl_get_publickey($publicKey); 
        $result = (bool)openssl_verify($data, base64_decode($sign), $res); 
        openssl_free_key($res); 
        return $result;  //bool 
    }

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17152.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论