ホームページ  >  記事  >  バックエンド開発  >  PHP での署名と検証

PHP での署名と検証

WBOY
WBOYオリジナル
2023-05-23 16:10:521753ブラウズ

インターネット技術の発展に伴い、セキュリティ、特にインターネット アプリケーションで送信されるデータのセキュリティがますます重要な問題になっています。署名と署名検証テクノロジは、データのセキュリティを確保するための重要な手段となっています。一般的なインターネット プログラミング言語である PHP も、署名と署名検証に関連する関数を提供しています。この記事では、PHP の署名と署名検証について紹介します。

1. 署名と署名検証の概念

署名とは、データを暗号化してデジタル署名アルゴリズムに基づいて特定の文字列を生成することを指します。この文字列を使用すると、データの完全性と信頼性を検証し、データの改ざんや偽造を防ぐことができます。署名検証とは、署名された文字列を復号化して、復号化されたデータの信頼性と整合性を検証することを指します。

2. PHP の署名関数

PHP では、署名関数には主に hash_hmac 関数と openssl_sign 関数が含まれます。

  1. hash_hmac 関数

hash_hmac 関数は、PHP に付属するハッシュ暗号化関数で、MD5、SHA-1、SHA-256 wait などの複数のハッシュ アルゴリズムをサポートします。この関数を使用して署名する手順は次のとおりです。

$algorithm = "sha256"; // 签名算法
$key = "abcdefg"; // 签名的密钥
$data = "hello world"; // 待签名的数据
$signature = hash_hmac($algorithm, $data, $key); // 签名结果

上記のコードでは、$algorithm はアルゴリズムのタイプを指定し、$key は署名用のキー、$data は署名されるデータ、および $ Signature は、署名後に取得された値です。

  1. openssl_sign 関数

openssl_sign 関数は、PHP の openssl 拡張関数です。複数の暗号化アルゴリズムをサポートしています。署名にこの関数を使用する手順は次のとおりです:

$algorithm = "sha256"; // 签名算法
$key = "abcdefg"; // 签名的密钥
$data = "hello world"; // 待签名的数据
openssl_sign($data, $signature, $key, $algorithm); // 签名结果

上記のコードでは、$algorithm はアルゴリズムの種類、$key は署名キー、$data は署名されるデータ、$signature は署名後に取得される文字列を指定します。

3. PHP の署名検証関数

PHP の署名検証関数には、主に hash_hmac 関数と openssl_verify 関数が含まれます。

  1. hash_hmac 関数

hash_hmac 関数を使用して署名されたデータの場合、それを署名検証に使用する手順は次のとおりです。

$algorithm = "sha256"; // 签名算法
$key = "abcdefg"; // 签名的密钥
$data = "hello world"; // 待签名的数据
$signature = hash_hmac($algorithm, $data, $key); // 签名结果

// 验证签名
if (hash_equals($signature, hash_hmac($algorithm, $data, $key))) {
    echo "验签成功!";
} else {
    echo "验签失败!";
}

上記ではコードでは、まず hash_hmac 関数を使用してデータに署名し、署名文字列を取得します。次に、hash_equals 関数を使用して署名結果が同じかどうかを確認し、署名検証が成功したかどうかを判断します。

  1. openssl_verify 関数

openssl_sign 関数を使用して署名されたデータの場合、それを署名検証に使用する手順は次のとおりです。

$algorithm = "sha256"; // 签名算法
$key = "abcdefg"; // 签名的密钥
$data = "hello world"; // 待签名的数据
openssl_sign($data, $signature, $key, $algorithm); // 签名结果

// 验证签名
if (openssl_verify($data, $signature, $key, $algorithm) === 1) {
    echo "验签成功!";
} else {
    echo "验签失败!";
}

上記のコードでは, まず、openssl_sign 関数を使用してデータに署名し、署名文字列を取得します。次に、openssl_verify 関数を使用して署名結果が正しいかどうかを確認し、署名検証が成功したかどうかを判断します。

4. 概要

この記事の導入部を通じて、PHP における署名と署名検証の基本概念と関連関数の使用方法について学びました。実際のインターネットアプリケーションでは、署名と署名検証技術がデータのセキュリティを確保するための重要な手段となっており、PHP の署名と署名検証技術を理解することで、データのセキュリティをより確実に確保することができます。

以上がPHP での署名と検証の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。