首頁 >後端開發 >php教程 >使用PHP程式碼實作百度文心一言API介面的請求簽章與驗簽

使用PHP程式碼實作百度文心一言API介面的請求簽章與驗簽

WBOY
WBOY原創
2023-08-27 10:46:44719瀏覽

使用PHP程式碼實作百度文心一言API介面的請求簽章與驗簽

使用PHP程式碼實作百度文心一言API介面的請求簽章與驗簽

一、請求簽章

##在使用百度文心一言API介面時,為了確保請求的安全性,需要對請求進行簽名,以防止請求被惡意竄改。以下是使用PHP程式碼實作百度文心一言API介面的請求簽章的範例:

<?php

// 请求参数
$params = [
    'appid' => 'your_appid',
    'salt' => 'your_salt',
    'from' => 'zh',
    'to' => 'en',
    'q' => '你好',
];

// 将参数按照字母顺序排序
ksort($params);

// 拼接参数字符串
$paramStr = '';
foreach ($params as $key => $value) {
    $paramStr .= $key . '=' . $value;
}

// 加上密钥
$paramStr .= 'your_secret';

// 计算签名
$sign = md5($paramStr);

// 添加签名到参数列表
$params['sign'] = $sign;

// 发送请求
// ...
?>

以上程式碼中,

$params為請求參數數組,其中包含了appid 應用ID、salt隨機字串、from原始語言、to目標語言、q查詢字串等參數。首先使用ksort()函數依照參數名稱​​的字母順序對參數進行排序。然後將參數依照key=value的形式拼接成字串,並在最後加上上金鑰。最後使用md5()函數對拼接後的字串進行簽章計算,得到簽章值。最後將簽章值加入參數陣列中的sign鍵中,即完成了請求簽章的過程。

二、驗簽

在接收到百度文心一言API介面傳回的資料時,我們需要對傳回的資料進行驗簽,以確保傳回的資料沒有被竄改。以下是使用PHP程式碼實作百度文心一言API介面的驗簽的範例:

<?php

// 接收到的返回数据
$responseData = [
    'code' => '0',
    'msg' => 'success',
    'data' => [
        'result' => 'Hello',
    ],
    'sign' => 'xxx',
];

// 移除sign参数
$sign = $responseData['sign'];
unset($responseData['sign']);

// 将接收到的参数按照字母顺序排序
ksort($responseData);

// 拼接参数字符串
$paramStr = '';
foreach ($responseData as $key => $value) {
    $paramStr .= $key . '=' . $value;
}

// 加上密钥
$paramStr .= 'your_secret';

// 计算签名
$calculatedSign = md5($paramStr);

// 验证签名
if ($calculatedSign === $sign) {
    // 验签通过,可以使用返回的数据
    echo '验签通过';
} else {
    // 验签失败
    echo '验签失败';
}
?>

以上程式碼中,

$responseData為接收到的回傳數據,包含了傳回的codemsgdata等參數,以及傳回的簽章sign。首先將簽名值儲存到變數$sign中,並從返回資料中移除sign參數。

接著,將接收到的參數依照字母順序排序,然後將參數依照

key=value的形式拼接成字串,並在最後加上密鑰。最後使用md5()函數對拼接後的字串進行簽章計算,得到計算得到的簽章值$calculatedSign

最後,將計算得到的簽章值與接收的簽章值進行比對,如果兩者相等,則驗簽通過;如果不相等,則驗簽失敗。

完成了傳回資料的驗簽過程。

透過上述程式碼範例,我們可以在使用百度文心一言API介面時,使用PHP程式碼實作請求簽章和驗簽功能,確保請求的安全性和資料的完整性。

以上是使用PHP程式碼實作百度文心一言API介面的請求簽章與驗簽的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn