get('pubkey'); if (empty($pubkey)) return errjson('请填写公钥'); $sign = $post->get('sign'); if (empty($sign)) return errjson('请填写签名'); $hash = $post->get('hash'); if (empty($hash)) return errjson('请填写hash'); $signbin = hex2bin($sign); if ($signbin === false) return errjson('签名格式错误'); $hashbin = hex2bin($hash); if ($hashbin === false) return errjson('hash格式错误'); $signKey = $pubkey; if (strpos($signKey, '-----BEGIN RSA PUBLIC KEY-----') === false && strpos($signKey, '-----BEGIN PUBLIC KEY-----') === false) $signKey = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($signKey, 64, "\n") . "\n-----END PUBLIC KEY-----"; $result = openssl_verify($hashbin, $signbin, $signKey, OPENSSL_ALGO_SHA256); if ($result === 0) $ret['msg'] = '验签失败'; else if ($result === 1) $ret['msg'] = '验签成功'; else return errjson('验签错误:' . openssl_error_string()); return succjson($ret); } public static function json_signrsa() { $post = new \ciy\post(); $prikey = $post->get('prikey'); if (empty($prikey)) return errjson('请填写私钥'); $hash = $post->get('hash'); if (empty($hash)) return errjson('请填写hash'); $hashbin = hex2bin($hash); if ($hashbin === false) return errjson('hash格式错误'); $privateKey = $prikey; if (strpos($privateKey, '-----BEGIN RSA PRIVATE KEY-----') === false && strpos($privateKey, '-----BEGIN PRIVATE KEY-----') === false) $privateKey = "-----BEGIN PRIVATE KEY-----\n" . wordwrap($privateKey, 64, "\n", true) . "\n-----END PRIVATE KEY-----"; $result = openssl_sign($hashbin, $signbin, $privateKey, OPENSSL_ALGO_SHA256); if ($result !== true) return errjson('签名错误:' . openssl_error_string()); $ret['sign'] = bin2hex($signbin); $ret['from'] = 'php'; return succjson($ret); } }