現在の位置: ホーム> 最新記事一覧> PHPおよびFTP:リモートファイルの暗号化と復号化の実装

PHPおよびFTP:リモートファイルの暗号化と復号化の実装

M66 2025-06-07

PHPおよびFTP:リモートファイルの暗号化と復号化の実装

ネットワークテクノロジーの継続的な開発により、FTP(ファイル転送プロトコル)は、ファイルを転送する際にますます多くのセキュリティの課題に直面します。この記事では、PHPプログラミングを組み合わせてリモートファイルの暗号化と復号化を実現し、ファイル転送中のデータのセキュリティを確保する方法を紹介します。

FTPファイル転送の基本

FTPは、ユーザーがローカルホストとリモートサーバー間でファイルをアップロードまたはダウンロードできる一般的なネットワークファイル転送プロトコルです。 PHPを使用してFTPサーバーに接続し、ファイルのアップロードとダウンロードを完了するための基本的な例コードを次に示します。

<?php
$ftp_server = "ftp.example.com";
$ftp_username = "username";
$ftp_password = "password";
<p>// FTPサーバーに接続します<br>
$ connection = ftp_connect($ ftp_server);<br>
if(!$ connection){<br>
die( "FTPサーバーに接続できません");<br>
}</p>
<p>// FTPサーバーにログインします<br>
$ login = ftp_login($ connection、$ ftp_username、$ ftp_password);<br>
if(!$ login){<br>
die( "ftpログイン障害");<br>
}</p>
<p>//ファイルをアップロードします<br>
$ file_path = "/path/to/local/file/example.txt";<br>
$ upload = ftp_put($ connection、 "/path/to/remote/file/example.txt"、$ file_path、ftp_binary);<br>
if(!$ upload){<br>
die( "ファイルアップロード障害");<br>
}</p>
<p>//ファイルをダウンロードします<br>
$ download = ftp_get($ connection、 "/path/to/local/file/example.txt"、 "/path/to/remote/file/example.txt"、ftp_binary);<br>
if(!$ download){<br>
die( "ファイルダウンロードが失敗した");<br>
}</p>
<p>// FTP接続を近いじます<br>
ftp_close($ connection);<br>
?><br>

ファイル暗号化と復号化の基本原則

ファイルのセキュリティを確保するために、送信前にファイルコンテンツを暗号化し、ダウンロード後に復号化できます。この記事では、対称暗号化アルゴリズムAES-256-CBCを例として使用して、ファイル暗号化と復号化にPHPを使用する方法を示す例として使用しています。

<?php
// コーデュー化されたファイル
function encryptFile($file_path, $key) {
    $content = file_get_contents($file_path);
    $iv = openssl_random_pseudo_bytes(16);
    $encrypted_content = openssl_encrypt($content, "AES-256-CBC", $key, 0, $iv);
    file_put_contents($file_path, base64_encode($iv . $encrypted_content));
}
<p>//ファイルを復号化します<br>
function decryptfile($ file_path、$ key){<br>
$ data = base64_decode(file_get_contents($ file_path));<br>
$ iv = substr($ data、0、16);<br>
$ necrypted_content = substr($ data、16);<br>
$ decrypted_content = openssl_decrypt($ necrypted_content、 "aes-256-cbc"、$ key、0、$ iv);<br>
file_put_contents($ file_path、$ decrypted_content);<br>
}</p>
<p>// FTPを使用してコーデュー化されたファイルをアップロードします<br>
$ file_path = "/path/to/local/file/example.txt";<br>
$ key = "encryption_key";<br>
EncryptFile($ file_path、$ key);<br>
$ upload = ftp_put($ connection、 "/path/to/remote/file/example.txt"、$ file_path、ftp_binary);<br>
if(!$ upload){<br>
die( "コーデュー化されたファイルのアップロード障害");<br>
}</p>
<p>// FTPを使用して、コーデュー化されたファイルをダウンロードして復号化します<br>
$ download = ftp_get($ connection、 "/path/to/local/file/example.txt"、 "/path/to/remote/file/example.txt"、ftp_binary);<br>
if(!$ download){<br>
die( "コーデュー化されたファイルのダウンロードが失敗しました");<br>
}<br>
decryptfile($ file_path、$ key);</p>
<p>// FTP接続を近いじます<br>
ftp_close($ connection);<br>
?><br>

上記のコードでは、暗号化ファイル関数はAES-256-CBCアルゴリズムを使用してファイルの内容を暗号化し、暗号化された内容を持つ初期化ベクトル(IV)を保存します。 DecryptFile関数は、ファイルからIVと暗号化されたデータを抽出して、元のコンテンツを復元します。このようにして、送信中にファイルが傍受されたとしても、簡単にクラックすることはできません。

要約します

PHPとFTPプロトコルを組み合わせて、対称暗号化アルゴリズムを使用して、リモートファイルの暗号化と復号化を実現し、ファイル送信のセキュリティを効果的に改善します。実際のアプリケーションでは、暗号化の測定に加えて、より安定したファイル転送環境を作成するために、主要な管理、ID認証、許可制御も強化する必要があります。