ホームページ > バックエンド開発 > PHPチュートリアル > PHP コードを使用して、Baidu Wenxin Yiyan API インターフェイスのリクエスト署名と署名検証を実装します。

PHP コードを使用して、Baidu Wenxin Yiyan API インターフェイスのリクエスト署名と署名検証を実装します。

WBOY
リリース: 2023-08-27 10:48:01
オリジナル
733 人が閲覧しました

PHP コードを使用して、Baidu Wenxin Yiyan API インターフェイスのリクエスト署名と署名検証を実装します。

PHP コードを使用して、Baidu Wenxin Yiyan API インターフェイスのリクエスト署名と署名検証を実装します。

1. リクエスト署名

Baidu Wenxin を使用する場合作成時API インターフェイスでは、リクエストのセキュリティを確保するために、リクエストが悪意を持って改ざんされるのを防ぐためにリクエストに署名する必要があります。以下は、PHP コードを使用して、Baidu Wenxin Yiyan 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 キーに追加され、署名を要求するプロセスが完了します。

2. 署名の検証

Baidu Wenxin Yiyan API インターフェイスから返されたデータを受信するとき、返されたデータが改ざんされていないことを確認するために、返されたデータの署名を検証する必要があります。 。以下は、PHP コードを使用して、Baidu Wenxin Yiyan 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 を取得します。 最後に、計算した署名値と受信した署名値を比較し、等しければ署名検証に合格し、等しくない場合は署名検証に失敗します。

返されたデータの署名検証プロセスが完了しました。

上記のコード例を通じて、Baidu Wenxin Yiyan API インターフェイスを使用する場合、PHP コードを使用してリクエストの署名と検証機能を実装し、リクエストのセキュリティとデータの整合性を確保できます。

以上がPHP コードを使用して、Baidu Wenxin Yiyan API インターフェイスのリクエスト署名と署名検証を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート