我曾用php实现过百度云域名操作域名解析代码
需要的话可以拿去参考
/**
* 生成签名 认证字符串
* ps: 可使用百度云签名计算工具进行校验
* @param [string] startUtc url
* @param [string] canonicalUri 请求数据
* @param [string] host 请求头
* @param [string] ak AccessKey
* @param [string] sk SecretKey
*/
function getBaiDuAuthorization($httpRequestMethod,$startUtc,$canonicalUri,$host,$ak,$sk,$signedHeaders='host')
{
// 签名有效期 (秒)
$validity = '1800';
// 代签名头域
//$signedHeaders = 'host';
// Host
$Host = "host:".$host;
// $startUtc = '2023-10-09T00:21:17Z'; // utc 时间
$BceDate = "x-bce-date:".UrlEncode($startUtc);
// http 方法
$getDatas ='';
if (strpos($canonicalUri, '?') !== false) {
$getUrls = explode('?', $canonicalUri);
$canonicalUri =$getUrls[0];
$getDatas = $getUrls[1];
}
if($httpRequestMethod == 'GET'){
if($getDatas!=''){
$canonicalRequest = $httpRequestMethod."\n" .$canonicalUri."\n" .$getDatas."\n" .$Host;
}else{
$canonicalRequest = $httpRequestMethod."\n" .$canonicalUri."\n" .$Host;
}
}
if($httpRequestMethod == 'POST'){
if($getDatas!=''){
$canonicalRequest = $httpRequestMethod."\n" .$canonicalUri."\n" .$getDatas."\n" .$Host."\n" .$BceDate;
}else{
$canonicalRequest = $httpRequestMethod."\n" .$canonicalUri."\n" .$Host."\n" .$BceDate;
}
}
// 前缀字符串 由除sk字段外的签名信息生成
$authStringPrefix = "bce-auth-v1/".$ak."/".$startUtc."/".$validity;
// 2: 派生签名密钥 signingKey signingKey = HMAC-SHA-256-HEX("sk", authStringPrefix)
$signingKey = bin2hex(hash_hmac('sha256', $authStringPrefix,$sk, true));
// 3: 签名摘要 signature signature = HMAC-SHA-256-HEX(signingKey, canonicalRequest)
$signature = bin2hex(hash_hmac('sha256', $canonicalRequest,$signingKey, true));
// 4: 认证字符串 authorization Authorization = authStringPrefix/signedHeaders/signature
$Authorization = $authStringPrefix.'/'.$signedHeaders.'/'.$signature;
//var_dump($Authorization);
return $Authorization;
}