1. 程式人生 > 其它 >api加密與校驗

api加密與校驗

一、函式程式碼

    /**
     * 校驗
     * @data   (請求的陣列)
     * @salt   (加密鹽)
     * */
    private function verify(array $data, $salt){
        $sign = $data['sign'] ?? null;
        if(!$sign) return false;
        unset($data['sign']);
        return $sign === hash('sha256', $this->serial($data) . $salt
); } /** * 生成簽名 * @data (請求的陣列) * @salt (加密鹽) * */ private function sign(array $data, $salt){ return hash('sha256', $this->serial($data) . $salt); } /** *生成一個經過 URL-encode 的請求字串 * @data (請求的陣列) * */ private function serial(array
$data){ ksort($data);//按照鍵名對陣列排序 return http_build_query($data); }

二、校驗方式

        $jsonData = file_get_contents("php://input");
        $postData = json_decode($jsonData,true);
        if(!$this->verify($postData["data"],$salt)){
            trace("簽名錯誤了!!!!!!!!!!!!!","ERROR");
            
return false; }

三、加密方式

        $retData = ['openlink' => "","timestamp" =>time()];
        $retData["sign"] = $this->sign($retData,$salt);
        $this->success('返回成功', $retData);