<?php
/**
 * 此页面用来生成易宝签名
 * 由于易宝只支持GBK
 * 而本程序全部都是UTF-8
 * 因此产生得签名会对不上
 * 所以在这里单独弄个地址用来产生签名
 */
$key = trim($_GET['k']);
$string = urldecode($_GET['s']);
echo getHmac($string, $key);

/**
 * 对字符串进行 HMAC-MD5 编码
 * @param mixed $string
 * @param string $key
 * @return string
 */
function getHmac($data, $key)
{
    # 处理编码
    $key = iconv("GBK", "UTF-8", $key);

    # 算法开始
    $b = 64;
    if (strlen($key) > $b)
    {
        $key = pack('H*', md5($key));
    }
    $key = str_pad($key, $b, chr(0x00));
    $ipad = str_pad('', $b, chr(0x36));
    $opad = str_pad('', $b, chr(0x5c));
    $k_ipad = $key ^ $ipad;
    $k_opad = $key ^ $opad;

    return md5($k_opad . pack('H*', md5($k_ipad . $data)));
}