ホームページ  >  記事  >  バックエンド開発  >  PHP でトラステッド コンピューティングと暗号化を実行するにはどうすればよいですか?

PHP でトラステッド コンピューティングと暗号化を実行するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-05-27 12:51:06854ブラウズ

ネットワーク技術の継続的な発展により、データ伝送や情報処理にネットワークを使用することがますます一般的になってきています。ただし、その後はデータ セキュリティの問題があり、その中でもトラステッド コンピューティングと暗号化テクノロジが最も重要です。 PHP では、トラステッド コンピューティングと暗号化をどのように実行するかが注意を必要とする問題です。

1.トラステッド コンピューティング

トラステッド コンピューティングとは、コンピューティング システムの動作の安全性と信頼性を確保し、精度を確保するために、コンピュータ システムでハードウェアまたはソフトウェアの技術的手段を使用することを指します。計算結果の性と一貫性。 PHP では、トラステッド コンピューティングは主にデジタル署名とメッセージ認証コードの使用に焦点を当てています。以下で詳しく説明します:

  1. デジタル署名

デジタル署名とは、電子文書が秘密キーを使用して暗号化された後に生成されるデジタル ID。秘密キーは、電子文書の出所と完全性を証明するために使用できます。 PHP でのデジタル署名の適用は、主にデータ送信プロセス中に行われます。送信者がデータにデジタル署名した後、データは受信者に送信されます。受信者はデジタル署名を検証することで、データのソースと完全性を保証できます。特定の実装では、OpenSSL 拡張ライブラリによって提供される関数を使用できます。次は、デジタル署名操作に OpenSSL 拡張ライブラリを使用する例です:

//生成RSA公钥和私钥
$res = openssl_pkey_new(array('private_key_bits' => 1024, 'private_key_type' => OPENSSL_KEYTYPE_RSA));

//获取私钥
openssl_pkey_export($res, $private_key);

//获取公钥
$public_key = openssl_pkey_get_details($res);
$public_key = $public_key['key'];

//将需要签名的数据使用私钥进行加密生成数字签名
openssl_sign($data, $signature, $private_key, 'sha1WithRSAEncryption');

//将数字签名和数据一起发送给对方
$encrypted_data = base64_encode($signature . '|' . $data);

このように、公開キーを使用して、受信者がデータを受信した後のデジタル署名。次は、デジタル署名検証に OpenSSL 拡張ライブラリを使用する例です:

//将接收到的数据解密得到数字签名和数据
$decrypted_data = base64_decode($received_data);
$signature = substr($decrypted_data, 0, strpos($decrypted_data, '|'));
$data = substr($decrypted_data, strpos($decrypted_data, '|') + 1);

//验证数字签名
$verify = openssl_verify($data, $signature, $public_key, 'sha1WithRSAEncryption');

if ($verify == 1) {
    //数字签名验证通过,数据来源和完整性得到保证
} else {
    //数字签名验证未通过,数据可能已被篡改
}
  1. メッセージ認証コード

メッセージ認証コードとは、鍵を使用した電子文書を指し、暗号化後に生成されるデジタル ID を使用して電子文書の完全性を証明できます。 PHP では、メッセージ認証コードは主に HMAC アルゴリズムを通じて実装されます。次は、HMAC アルゴリズムを使用してメッセージ認証コードの操作を実行する例です:

//生成密钥
$key = 'this is a secret key';

//计算消息认证码
$mac = hash_hmac('sha1', $data, $key);

//将数据和消息认证码一起发送给对方
$encrypted_data = base64_encode($mac . '|' . $data);

受信者がデータを受信した後、それを検証できます。メッセージ認証コードのデータ整合性を計算することにより、メッセージ認証コードの検証に HMAC アルゴリズムを使用する例を次に示します。

//将接收到的数据解密得到消息认证码和数据
$decrypted_data = base64_decode($received_data);
$mac = substr($decrypted_data, 0, strpos($decrypted_data, '|'));
$data = substr($decrypted_data, strpos($decrypted_data, '|') + 1);

//计算消息认证码
$verify_mac = hash_hmac('sha1', $data, $key);

if ($mac == $verify_mac) {
    //消息认证码验证通过,数据完整性得到保证
} else {
    //消息认证码验证未通过,数据可能已被篡改
}

2. 暗号化技術

暗号化技術とは、さまざまな暗号化技術の使用を指します。コンピュータ システムのアルゴリズムとテクノロジ 悪意のある攻撃者による機密データの盗難や改ざんを防ぐ手段。 PHP における暗号化テクノロジの適用では、主にデータの暗号化と復号化に暗号化アルゴリズムが使用されます。以下で詳しく説明します:

  1. 対称暗号化

対称暗号化とは、暗号化を指します。データの復号化: 復号化プロセス中に同じキーを使用する暗号化技術。 PHP で一般的に使用される対称暗号化アルゴリズムには、DES、3DES、AES などが含まれます。以下は、AES アルゴリズムを使用した対称暗号化と復号化の例です。

//生成AES密钥
$key = 'this is a secret key';

//加密数据
$encrypted_data = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
$encrypted_data = base64_encode($iv . '|' . $encrypted_data);

//解密数据
$decrypted_data = base64_decode($encrypted_data);
$iv = substr($decrypted_data, 0, 16);
$encrypted_data = substr($decrypted_data, 16);

$decrypted_data = openssl_decrypt($encrypted_data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
  1. 非対称暗号化

非対称暗号化とは、暗号化プロセスと復号化プロセス中に異なるキーを使用することを指します。暗号化技術。 PHP で一般的に使用される非対称暗号化アルゴリズムには RSA などが含まれます。以下は、RSA アルゴリズムを使用した非対称暗号化と復号化の例です。

//生成RSA公钥和私钥
$res = openssl_pkey_new(array('private_key_bits' => 1024, 'private_key_type' => OPENSSL_KEYTYPE_RSA));

//获取私钥
openssl_pkey_export($res, $private_key);

//获取公钥
$public_key = openssl_pkey_get_details($res);
$public_key = $public_key['key'];

//加密数据
openssl_public_encrypt($data, $encrypted_data, $public_key);

//解密数据
openssl_private_decrypt($encrypted_data, $decrypted_data, $private_key);

概要

PHP でトラステッド コンピューティングおよび暗号化テクノロジの操作を実行することは、データのセキュリティと信頼性を確保するための重要な手段です。このうち、トラステッド コンピューティングは主にデジタル署名とメッセージ認証コードの使用に焦点を当てており、暗号化技術は主に対称暗号化アルゴリズムと非対称暗号化アルゴリズムを使用してデータの暗号化と復号化を行います。トラステッド コンピューティングと暗号化テクノロジの使用を習得すると、システムのセキュリティと安定性が効果的に向上し、ユーザーにより良いサービスを提供できます。

以上がPHP でトラステッド コンピューティングと暗号化を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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