[PCH]内部インタフェースの簡単な暗号化検証方式

3267 ワード

1.内部システム間の呼び出しがある場合、呼び出し元の検証も簡単に行う必要があり、簡単な内部インタフェース暗号化検証方式である.この暗号化方式にはapiアドレス、pinコード、entry識別の3つのパラメータが必要であり、pinとentryはインタフェース双方が約束した2つのパラメータである.
例:サービス_api="/1/service"pin="6879hsdhj4323nmn32j3jn23n44j"entry="entadmin"
2.GET要求:https://i.api.test.com/1/service?s2={sign}&entry={entry}&myname=taoshihan&uid=1
変数signの生成規則は、apiアドレスが「/1/service」argsパラメータがarray(「myname」=>'taoshihan'、「uid」=>1)である.s 2とentrymethodを含まない「GET」pinが「6879 hsdhj 4323 nmn 32 j 3 jn 23 n 44 j」
makeInternalApiSign($api, $args, $method, $pin) {
    ksort($args);
    $ls = array();
    foreach ($args as $k => $v) {
        if (is_array($v)) {
            $ak = sprintf('%s[]', $k);
            foreach ($v as $i) {
                $ls[] = sprintf("%s=%s", rawurlencode($ak), rawurlencode($i));
            }
        } else {
            $ls[] = sprintf('%s=%s', rawurlencode($k), rawurlencode($v));
        }
    }
    return hash_hmac('sha1', sprintf('%s:%s?%s', $method, $api, implode('&', $ls)), $pin);
}

 
この暗号化規則はインタフェースパラメータデータを有効に制約し,パラメータの改ざんを防止し,インタフェースアドレスの勝手な変更を防止する