Base64 アルゴリズムは、バイナリ データを ASCII 文字に変換するエンコード方式で、送信中にデータが変更されたり破損したりすることがなく、データの本当の内容も隠すことができます。 PHP では、組み込み関数を使用するか、コードを手動で記述して、Base64 エンコードとデコードを実装できます。
- PHP 組み込み関数の使用
PHP には、簡単に実行できる 2 つの組み込み関数base64_encode() とbase64_decode() が用意されています。 Base64 コーデック。使用方法は次のとおりです。
Base64 エンコード:
$encoded_data = base64_encode($data);
このうち、$data はエンコードが必要なバイナリ データ、$encoded_data はエンコードされた文字列です。他のエンコード方法 (URL エンコードなど) とは異なり、Base64 でエンコードされた文字列には、URL で送信するときにエスケープする必要がある「/」や「 " などの特殊文字が含まれる場合があります。
Base64 デコード:
$decoded_data = base64_decode($encoded_data);
このうち、$encoded_data はエンコードされた文字列、$decoded_data はデコードされたバイナリ データです。
この方法は最も単純な実装ですが、大きなバイナリ データ (画像ファイルなど) を処理する場合、大量のメモリを占有し、パフォーマンスの問題が発生します。
- Base64 アルゴリズムを手動で作成する
大きなバイナリ データを処理するために、Base64 アルゴリズムの実装を手動で作成できます。以下は、PHP で Base64 エンコードとデコードを手動で実装するコードです。
// Base64编码 function base64_encode_php($data) { $base64_map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; $base64_data = ""; $data_len = strlen($data); for ($i = 0; $i < $data_len; $i += 3) { $chunk = ord(substr($data, $i, 3)); $base64_data .= $base64_map[($chunk >> 2) & 0x3F]; $base64_data .= $base64_map[(($chunk << 4) & 0x30) | ((ord(substr($data, $i + 1, 1)) >> 4) & 0x0F)]; $base64_data .= (($i + 2) < $data_len) ? $base64_map[(ord(substr($data, $i + 1, 1)) << 2) & 0x3C | (ord(substr($data, $i + 2, 1)) >> 6) & 0x03] : "="; $base64_data .= (($i + 2) < $data_len) ? $base64_map[ord(substr($data, $i + 2, 1)) & 0x3F] : "="; } return $base64_data; } // Base64解码 function base64_decode_php($data) { $base64_map = array( 'A' => 0, 'B' => 1, 'C' => 2, 'D' => 3, 'E' => 4, 'F' => 5, 'G' => 6, 'H' => 7, 'I' => 8, 'J' => 9, 'K' => 10, 'L' => 11, 'M' => 12, 'N' => 13, 'O' => 14, 'P' => 15, 'Q' => 16, 'R' => 17, 'S' => 18, 'T' => 19, 'U' => 20, 'V' => 21, 'W' => 22, 'X' => 23, 'Y' => 24, 'Z' => 25, 'a' => 26, 'b' => 27, 'c' => 28, 'd' => 29, 'e' => 30, 'f' => 31, 'g' => 32, 'h' => 33, 'i' => 34, 'j' => 35, 'k' => 36, 'l' => 37, 'm' => 38, 'n' => 39, 'o' => 40, 'p' => 41, 'q' => 42, 'r' => 43, 's' => 44, 't' => 45, 'u' => 46, 'v' => 47, 'w' => 48, 'x' => 49, 'y' => 50, 'z' => 51, '0' => 52, '1' => 53, '2' => 54, '3' => 55, '4' => 56, '5' => 57, '6' => 58, '7' => 59, '8' => 60, '9' => 61, '+' => 62, '/' => 63 ); $data_len = strlen($data); $padding_count = substr_count($data, "="); $binary_data = ""; $byte_count = 0; for ($i = 0; $i < $data_len; $i++) { $char = $data[$i]; if (isset($base64_map[$char])) { $byte_count++; $binary_data .= str_pad(decbin($base64_map[$char]), 6, "0", STR_PAD_LEFT); if ($byte_count == 4) { $byte_count = 0; $binary_data = substr($binary_data, 0, strlen($binary_data) - 8); } } } return substr($binary_data, 0, strlen($binary_data) - $padding_count * 8); }
このコードは主に、Base64 エンコードと Base64 デコードの 2 つの部分に分かれています。
Base64 エンコード部分では、最初に Base64 マッピング テーブル $base64_map を定義します。これは、6 ビット バイナリ データを対応する Base64 文字に変換するために使用されます。そして、入力されたバイナリデータを3バイトずつ取り出して処理します。データの 3 バイト ブロックごとに、4 つの 6 ビット ブロックに分割します。現在処理されているバイト数が 3 バイト未満の場合は、「=」文字を補足する必要があります。
Base64 デコード部分では、まず Base64 マッピング テーブル $base64_map を定義します。今回は、各 Base64 文字を 6 ビット バイナリ データに変換するために使用されます。入力 Base64 文字列の場合は、バイナリ データに変換してから、8 ビットのグループの ASCII 文字に変換します。
この方法は比較的複雑ですが、大量のデータをチャンクで処理できるため、パフォーマンスを大幅に向上させることができます。
概要
PHP 組み込み関数を使用する場合でも、手動で Base64 アルゴリズムを作成する場合でも、Base64 のエンコードおよびデコード操作を簡単に実行できます。小さなバイナリ データの場合は、組み込み関数を使用するだけで十分ですが、大きなバイナリ データを処理する場合は、手書きアルゴリズムを使用するとパフォーマンスを向上させることができます。
以上がPHPでBase64エンコードとデコードを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

无论您使用的是旧计算机还是需要您的 PC 同时运行许多任务,您都可能希望禁用 Windows 模块安装程序工作程序。原因是 Windows 模块安装程序工作人员对您的磁盘、CPU 和内存施加了很高的负载。您可能会使用最好的软件来修复高 CPU 使用率,但一些报告显示它甚至可能会占用 100% 的 CPU 使用率。虽然它可以帮助您维护一个更安全和可靠的系统,但它会付出代价。因此,您可以决定保留或禁用它以避免性能问题。在本文中,我们将详细探讨什么是 Windows 模块安装程序工作人员以及如何启用或

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
