PHPでOpenSSLを利用する方法を現役エンジニアが解説【初心者向け】

初心者向けにPHPでOpenSSLを利用する方法について現役エンジニアが解説しています。OpenSSLとはインターネットのネットワークの暗号化通信プロトコルであるSSLやTLSを使うことができるライブラリになります。OpenSSL関数の使い方などPHPでデータを暗号化したり復号化する方法を解説します。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

PHPでOpenSSLを利用する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPでOpenSSLを利用する方法について詳しく説明していくね!

大石ゆかり

お願いします!

この記事はPHPで拡張機能のOpenSSLを使用する方法について記載した記事です。

PHPでの開発にまだ慣れていない方でも理解できる内容になっています。

目次

 

OpenSSLとは

OpenSSLとは、OpenSSLプロジェクトがオープンソースで開発提供するライブラリのことです。

OpenSSLを使用することで、インターネットなどのコンピューターネットワークなどに使われる、暗号化技術であるSSLおよびTLSといった暗号化通信プロトコルを使用可能にできます。

こういった暗号化技術を使用することで、第三者によるデータの盗聴などを防ぐことができます。PHPでもOpenSSLの拡張モジュールを組み込むことで、OpenSSLの機能を使用することが可能になります。

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

OpenSSL関数の使い方

OpenSSLの拡張モジュールをPHPに組み込むことで、OpenSSLに関する様々な関数を使用することができます。

今回は、OpenSSLの関数の一部である、データを暗号化する関数と、暗号化されたデータをもとの平文に戻す復号化する関数について解説します。

データを暗号化するには、openssl_encrypt関数を使用します。

使用方法:

openssl_encrypt($文字列データ, $暗号化メソッド, $キー)

第一引数には、暗号化したい文字列を渡します。第二引数には、暗号化メソッドを渡します。どの暗号化メソッドを渡すかによって暗号化方式が変わってります。

PHPのOpenSSLライブラリで使用できる暗号化メソッドは、openssl_get_cipher_methods関数を呼び出すことで、一覧を配列として取得することができます。

第三引数には、キーを渡します。これは、パスワードのようなもので、復号化する時にも使用します。次に、復号化です。暗号化されたデータを復号化するには、openssl_decrypt関数を使用します。

使用方法:

openssl_decrypt($暗号化した文字列, $暗号化メソッド, $キー)

第一引数には暗号化された文字列を渡します。

第二引数には暗号化する際に使用した暗号化メソッドを渡します。

第三引数には暗号化する際に使用したキーを渡します。

openssl_encrypt関数で暗号化する際に使用した暗号化メソッドやキーを使用することで、暗号化された文字列を暗号化する前の文字列に戻すことができます。

実際に書いてみよう

それでは、実際に暗号化・復号化する例を見ていきましょう。

サンプルコード:

<?php
$plan_text = 'php'; // 暗号化するデータ(平文)
$cipher = 'aes-128-ecb'; // 暗号化メソッド
$key = 'key'; // 暗号化キー

// 暗号化
$ciphertext = openssl_encrypt($plan_text, $cipher, $key);
echo $ciphertext."\n";

// 複合化
$result_text = openssl_decrypt($ciphertext, $cipher, $key);
echo $result_text;
?>

実行結果:

69Rqz1sVWlQMXA95fDzePA==
php

上記の例では、暗号化・復号化した結果をそれぞれ出力しています。

実行結果を見ると入力された文字列は’php’はopenssl_encrypt関数によって暗号化されていることがわかります。また、openssl_decrypt関数を使用することで、もとの’php’という文字列に復号化されていることも確認できます。

まとめ

以上、PHPでOpenSSLを使用する方法について解説しました。

OpenSSLには、上記で紹介した、openssl_encrypt・openssl_decrypt関数以外にも様々な暗号化に関する関数を持つライブラリです。興味がありましたら是非、そのほかの関数についても調べてみてください。

筆者プロフィール

平野大輝(ひらのだいき)

スキル:PHP・Java・JavaScriptを用いて様々なアプリを開発するWebエンジニア。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間でPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。