ホームページ >バックエンド開発 >PHPチュートリアル >PHP は証明書、キーを生成し、OpenSSL を通じてデータを暗号化および復号化します。

PHP は証明書、キーを生成し、OpenSSL を通じてデータを暗号化および復号化します。

WBOY
WBOYオリジナル
2016-07-25 08:45:161392ブラウズ

PHP による証明書キーの生成に関する情報はほとんどありません。長い間検索した結果、最終的に公式ドキュメントで関連情報を見つけました。以下のコードを 2 つの部分に分けてコンパイルしました。証明書キーとデータの暗号化を解除します。それをコピーして 2 つのファイルを作成し、実行するだけです。詳細なコメントが書かれており、PHP プログラマなら誰でも理解できると思います。

generate.php

  1. $dn = array(
  2. "countryName" => 'XX', //国が位置する国の名前
  3. "stateOrProvinceName" => 'State ', // 州が存在する州の名前
  4. "localityName" => 'SomewhereCity', // 都市の名前
  5. "organizationName" => 'MySelf', // 登録者の名前
  6. "organizationalUnitName" => 'Whatever', //組織の名前
  7. "commonName " => 'mySelf', // パブリック名
  8. "emailAddress" => 'user@domain.com' // 電子メール
  9. );
  10. $privkeypass = '111111'; //秘密鍵のパスワード
  11. $numberofdays = 365; // 有効期間
  12. $cerpath = "./test.cer" // 証明書のパスを生成します
  13. $pfxpath = " /test.pfx"; //キーファイルパス
  14. //証明書を生成
  15. $ privkey = openssl_pkey_new();
  16. $csr = openssl_csr_new($dn, $privkey);
  17. $sscert = openssl_csr_sign($csr, null, $privkey, $numberofdays);
  18. openssl_x509_export($sscert, $csrkey) // 証明書をエクスポートします $csrkey
  19. openssl_pkcs12_export($sscert, $privatekey, $privkey, $privkeypass); // 証明書を生成しますfile
  20. $fp = fopen($cerpath, "w");
  21. fwrite($ fp, $csrkey)
  22. //キーファイルを生成
  23. $fp = fopen($pfxpath, "w") );
  24. fwrite($fp, $privatekey) ;
  25. fclose($fp) ?>
  26. crypt.php
$privkeypass = '111111'; //秘密鍵のパスワード $pfxpath = " ./test.pfx" //鍵ファイルのパス
$priv_key = file_get_contents($pfxpath); //鍵ファイルの内容を取得します "test"; //暗号化されたデータのテスト test
//秘密鍵の暗号化
openssl_pkcs12_read($priv_key, $certs, $privkeypass) //公開鍵と秘密鍵を読み取ります
    $prikeyid = $certs['pkey']; //秘密鍵
  1. openssl_sign($data, $signMsg, $prikeyid ,OPENSSL_ALGO_SHA1); //暗号化された情報を生成するための登録
  2. $signMsg = Base64_encode($signMsg) //base64でトランスコードされた暗号化情報
  3. //公開鍵復号
  4. $unsignMsg=base64_decode($signMsg);//base64 デコードされた暗号化情報
  5. openssl_pkcs12_read($priv_key, $certs, $privkeypass) //公開鍵と秘密鍵を読み取ります
  6. $pubkeyid = $certs['cert'] / /公開鍵
  7. $res = openssl_verify($data, $unsignMsg , $pubkeyid); //検証
  8. echo $res; //検証結果を出力、1:検証成功、0:検証失敗
  9. ;コード
暗号化と復号化、PHP、OpenSSL


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