有写过百度营销-商业开发者中心-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);
10个月前 评论
laravel-9528 (楼主) 10个月前
讨论数量: 8

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

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

实际获取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);
10个月前 评论
laravel-9528 (楼主) 10个月前

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

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

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

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

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!