有写过百度营销-商业开发者中心-PHP签名加密的吗?

有写过百度营销-商业开发者中心-PHP签名加密的吗?
官方文档地址
官方仅提供了 Java 的 AES 加密示例,PHP 版本的加密匹配不上 (如下);

有写过百度营销-商业开发者中心-PHP签名加密的吗?

有写过的吗?麻烦指导下,谢谢~

最佳答案

实际获取 access_token 不需要这一步,回调 url 会有 authCode ,userId

secretKey 可以在应用管理获取,通过这几个参数就可以获取到 access token

非要验签的话这个可以

$params = [
    'appId' => "",
  'authCode' => "",
  'userId' => "",
  'timestamp' => "",
  'state' => "",
];
ksort($params);
$bytes = base64_encode(json_encode($params));

$key = substr($secretKey, 0, 16);
$aec_offset = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
function encryptAES_CBC_NoPadding($source, $key, $iv): string
{
    $dataLength = strlen($source);
 if ($dataLength % 16 != 0) {
        $dataLength = $dataLength + (16 - ($dataLength % 16));
  }
    $source = str_pad($source, $dataLength, "\0", STR_PAD_RIGHT);
  $encrypted = openssl_encrypt($source, 'AES-128-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
 return strtoupper(bin2hex($encrypted));
}

echo encryptAES_CBC_NoPadding($bytes, $key, $aec_offset);
11个月前 评论
laravel-9528 (楼主) 11个月前
讨论数量: 8

没写过,试试 AES-256-ECB 呢

11个月前 评论
laravel-9528 (楼主) 11个月前

实际获取 access_token 不需要这一步,回调 url 会有 authCode ,userId

secretKey 可以在应用管理获取,通过这几个参数就可以获取到 access token

非要验签的话这个可以

$params = [
    'appId' => "",
  'authCode' => "",
  'userId' => "",
  'timestamp' => "",
  'state' => "",
];
ksort($params);
$bytes = base64_encode(json_encode($params));

$key = substr($secretKey, 0, 16);
$aec_offset = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
function encryptAES_CBC_NoPadding($source, $key, $iv): string
{
    $dataLength = strlen($source);
 if ($dataLength % 16 != 0) {
        $dataLength = $dataLength + (16 - ($dataLength % 16));
  }
    $source = str_pad($source, $dataLength, "\0", STR_PAD_RIGHT);
  $encrypted = openssl_encrypt($source, 'AES-128-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
 return strtoupper(bin2hex($encrypted));
}

echo encryptAES_CBC_NoPadding($bytes, $key, $aec_offset);
11个月前 评论
laravel-9528 (楼主) 11个月前

这文档写的,果然,世界都是一个大的草台班子

11个月前 评论
laravel-9528 (楼主) 11个月前

补码尽然是 zeropadding,第一次见不是用 pkcs7padding 的 :grin:
不过楼主的写法错误地方有些多啊:grinning:

11个月前 评论
laravel-9528 (楼主) 11个月前