ホームページ バックエンド開発 PHPチュートリアル ecshopのaes暗号化(カプセル化)のサンプルチュートリアル

ecshopのaes暗号化(カプセル化)のサンプルチュートリアル

Jun 28, 2017 am 10:38 AM
ecshop 暗号化 カプセル化

shopex と ecstore を行う企業から b2b ecshop を行う企業へ...ここに来たら、それを実践する必要があります。他のことについて話すのはやめて、まず PHP の AES 暗号化が何であるかを理解しましょう。

aes (Advanced Encryption Standard)、AES のブロック長は 128 ビットに固定されており、キーの長さは 128、192、または 256 ビットにすることができ、md5 とは異なります。

AES は、ECB、CBC、CFB などのいくつかのモードに分かれています。ECB は IV を使用しないためあまり安全ではありませんが、他のモードの違いはほとんど明らかではありません。パスワードの計算に使用される IV と KEY の方法は少し異なります。

ivの役割は何ですか?

IV は初期ベクトルと呼ばれます。異なる IV の暗号化された文字列は異なります。IV はキーと同じに見えるため、キーは残ります。変更されませんが、最初のブロックの IV のみがユーザーによって提供され、他のブロックの IV は自動的に生成されます。
IVの長さは16バイトです。この値が超過または不足した場合、実装されるライブラリによってそれが完了または切り捨てられます。ただし、ブロックの長さは 16 バイトであるため、一般に必要な IV は 16 バイトであると考えることができます。

AES についてある程度理解できたので、コーディングを始めましょう。

<?phpclass cryptaes{protected $cipher = MCRYPT_RIJNDAEL_128;protected $mode = MCRYPT_MODE_ECB;protected $pad_method = &#39;&#39;;protected $secret_key = &#39;&#39;;protected $iv = &#39;&#39;; public function set_cipher($cipher)
    {$this->cipher = $cipher;
    } public function set_mode($mode)
    {$this->mode = $mode;
    } public function set_iv($iv)
    {$this->iv = $iv;
    } public function set_key($key)
    {$this->secret_key = $key;
    } public function require_pkcs5()
    {$this->pad_method = 'pkcs5';
    } protected function pad_or_unpad($str, $ext)
    {if ( is_null($this->pad_method) )
        {return $str;
        }else{$func_name = __CLASS__ . '::' . $this->pad_method . '_' . $ext . 'pad';if ( is_callable($func_name) )
            {$size = mcrypt_get_block_size($this->cipher, $this->mode);return call_user_func($func_name, $str, $size);
            }
        }return $str;
    } protected function pad($str)
    {return $this->pad_or_unpad($str, '');
    } protected function unpad($str)
    {return $this->pad_or_unpad($str, 'un');
    }     //加密类public function encrypt($str)
    {print_r($str);$str = $this->pad($str);$td = mcrypt_module_open($this->cipher, '', $this->mode, ''); if ( empty($this->iv) )
        {$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        }else{$iv = $this->iv;
        }
 
        mcrypt_generic_init($td, $this->secret_key, $iv);$cyper_text = mcrypt_generic($td, $str);$rt=base64_encode($cyper_text);//$rt = bin2hex($cyper_text);mcrypt_generic_deinit($td);
        mcrypt_module_close($td); return $rt;
    }     //解密类public function decrypt($str){$td = mcrypt_module_open($this->cipher, '', $this->mode, ''); if ( empty($this->iv) )
        {$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        }else{$iv = $this->iv;
        }
 
        mcrypt_generic_init($td, $this->secret_key, $iv);//$decrypted_text = mdecrypt_generic($td, self::hex2bin($str));$decrypted_text = mdecrypt_generic($td, base64_decode($str));$rt = $decrypted_text;
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td); return $this->unpad($rt);
    } public static function hex2bin($hexdata) {$bindata = '';$length = strlen($hexdata);for ($i=0; $i < $length; $i += 2)
        {$bindata .= chr(hexdec(substr($hexdata, $i, 2)));
        }return $bindata;
    } public static function pkcs5_pad($text, $blocksize)
    {$pad = $blocksize - (strlen($text) % $blocksize);return $text . str_repeat(chr($pad), $pad);
    } public static function pkcs5_unpad($text)
    {$pad = ord($text{strlen($text) - 1});if ($pad > strlen($text)) return false;if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;return substr($text, 0, -1 * $pad);
    }
}?>
ログイン後にコピー

aes 暗号化および復号化パッケージ クラスはカプセル化され、必要に応じて暗号化されます。

require_once(ROOT_PATH . 'includes/lib_smt_cryptaes.php'); //ecshop引入文件方式$aes_obj     = new cryptaes();$iv         = '12345678baiducom';$privateKey = '12345678baiducom';$data['a'] =  ‘周二’;$data['b'] =  ‘周三’;$data['c'] =  ‘周四’;$da = json_encode($data);$aes_obj->set_key($privateKey);$aes_obj->require_pkcs5();$aes_obj->set_iv($iv);$il = $aes_obj->encrypt($da);//写入cookiesetcookie('il', $il,time()+360000); //加密结果$il
ログイン後にコピー

ここで渡したいのは配列であることに注意してください。aes は文字列のみを暗号化できます。文字列に変換する必要があります。

         = ['il'(ROOT_PATH . 'includes/lib_smt_cryptaes.php'     =      = '12345678baiducom';         = '12345678baiducom'->set_key(->->set_iv( = ->decrypt( = json_decode(,);    
       print_r($j_token);//解密结果
ログイン後にコピー

これでaesの暗号化と送信が完了しました。

誰でも質問し、コミュニケーションし、一緒に成長することを歓迎します。

以上がecshopのaes暗号化(カプセル化)のサンプルチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

TrendForce: Nvidia の Blackwell プラットフォーム製品により、TSMC の CoWoS 生産能力は今年 150% 増加します TrendForce: Nvidia の Blackwell プラットフォーム製品により、TSMC の CoWoS 生産能力は今年 150% 増加します Apr 17, 2024 pm 08:00 PM

4月17日の当サイトのニュースによると、TrendForceは最近、Nvidiaの新しいBlackwellプラットフォーム製品に対する需要は強気で、2024年にはTSMCのCoWoSパッケージング総生産能力が150%以上増加すると予想されるレポートを発表した。 NVIDIA Blackwell の新しいプラットフォーム製品には、B シリーズ GPU と、NVIDIA 独自の GraceArm CPU を統合する GB200 アクセラレータ カードが含まれます。 TrendForce は、サプライチェーンが現在 GB200 について非常に楽観的であることを確認しており、2025 年の出荷台数は 100 万台を超え、Nvidia のハイエンド GPU の 40 ~ 50% を占めると予想されています。 Nvidiaは今年下半期にGB200やB100などの製品を提供する予定だが、上流のウェーハパッケージングではさらに複雑な製品を採用する必要がある。

winrar-winrar 暗号化圧縮パッケージ方式で圧縮パッケージを暗号化する方法 winrar-winrar 暗号化圧縮パッケージ方式で圧縮パッケージを暗号化する方法 Mar 23, 2024 pm 12:10 PM

エディターは、暗号化と圧縮の 3 つの方法を紹介します。 方法 1: 暗号化 最も簡単な暗号化方法は、ファイルを暗号化するときに設定したいパスワードを入力することで、暗号化と圧縮が完了します。方法 2: 自動暗号化 通常の暗号化方法では、各ファイルを暗号化するときにパスワードを入力する必要がありますが、多数の圧縮パッケージを暗号化する場合、パスワードが同じ場合は、WinRAR で自動暗号化を設定できます。通常のようにファイルを圧縮すると、WinRAR は各圧縮パッケージにパスワードを追加します。方法は次のとおりです。 WinRAR を開き、設定インターフェイスで [オプション] - [設定] をクリックし、[圧縮] に切り替え、[デフォルト構成の作成] - [パスワードの設定] をクリックします。 ここで設定したいパスワードを入力し、[OK] をクリックして設定を完了します。なおす

圧縮せずにフォルダーを暗号化するためのパスワードを設定する方法 圧縮せずにフォルダーを暗号化するためのパスワードを設定する方法 Feb 20, 2024 pm 03:27 PM

フォルダー暗号化は、フォルダーの内容を暗号化して、復号化パスワードを持っている人だけがファイルにアクセスできるようにする一般的なデータ保護方法です。フォルダーを暗号化する場合、ファイルを圧縮せずにパスワードを設定する一般的な方法がいくつかあります。まず、オペレーティング システムに付属の暗号化機能を使用して、フォルダーのパスワードを設定します。 Windowsユーザーの場合は、次の手順で設定できます。 暗号化するフォルダーを選択し、フォルダーを右クリックし、「プロパティ」を選択します。

AMD「Strix Halo」FP11のパッケージサイズを公開:Intel LGA1700と同等、Phoenixより60%大きい AMD「Strix Halo」FP11のパッケージサイズを公開:Intel LGA1700と同等、Phoenixより60%大きい Jul 18, 2024 am 02:04 AM

このWebサイトは7月9日、AMD Zen5アーキテクチャの「Strix」シリーズプロセッサには2つのパッケージングソリューションがあり、小型のStrixPointはFP8パッケージを使用し、StrixHaloはFP11パッケージを使用すると報じた。出典: videocardz 出典 @Olrak29_ 最新の事実は、StrixHalo の FP11 パッケージ サイズが 37.5mm*45mm (1687 平方ミリメートル) であり、これは Intel の AlderLake および RaptorLake CPU の LGA-1700 パッケージ サイズと同じであるということです。 AMD の最新の Phoenix APU は、サイズ 25*40mm の FP8 パッケージング ソリューションを使用しています。これは、StrixHalo の F

C++ 関数はコードをカプセル化することで GUI 開発の効率をどのように向上させますか? C++ 関数はコードをカプセル化することで GUI 開発の効率をどのように向上させますか? Apr 25, 2024 pm 12:27 PM

コードをカプセル化することにより、C++ 関数は GUI 開発効率を向上させることができます。 コードのカプセル化: 関数はコードを独立した単位にグループ化し、コードの理解と保守を容易にします。再利用性: 関数はアプリケーション間で再利用できる共通の機能を作成し、重複やエラーを削減します。簡潔なコード: カプセル化されたコードにより、メイン ロジックが簡潔になり、読みやすく、デバッグしやすくなります。

Apple携帯電話でフォトアルバムの暗号化を設定する方法 Apple携帯電話でフォトアルバムの暗号化を設定する方法 Mar 02, 2024 pm 05:31 PM

Apple の携帯電話では、ユーザーは自分のニーズに応じてフォト アルバムを暗号化できます。設定方法がわからないユーザーもいます。暗号化が必要な写真をメモに追加し、メモをロッ​​クすることができます。次に、編集者がユーザー向けにモバイル フォト アルバムの暗号化を設定する方法を紹介します。興味のあるユーザーは、ぜひご覧ください。 Apple 携帯電話チュートリアル iPhone フォト アルバム暗号化の設定方法 A: 暗号化する必要がある写真をメモに追加した後、メモをロッ​​クして詳細を説明します。 1. フォト アルバムに入り、暗号化する必要がある写真を選択します。暗号化されたものを選択し、下の[追加]をクリックします。 2. [ノートに追加]を選択します。 3. メモを入力し、作成したメモを見つけて入力し、右上隅の [送信] アイコンをクリックします。 4. 下の[デバイスをロック]をクリックします

暗号通貨のベテランによる新プロジェクト、Analog: 1,600万ドルを調達、エアドロップも予定 暗号通貨のベテランによる新プロジェクト、Analog: 1,600万ドルを調達、エアドロップも予定 Feb 22, 2024 pm 04:50 PM

原著者: Meteor、ChainCatcher 原編集者: Marco、ChainCatcher 最近、フルチェーン相互運用性プロトコルである Analog が 1,600 万米ドルの資金調達を明らかにし、注目を集めています 投資機関には TribeCapital、NGCVentures、Wintermute、GSR、NEAR、OrangeDAO が含まれます、マイク・ノボグラッツ氏のオルタナティブ資産管理会社サマラ・アセット・グループ、バラジ・スリニバサンなど。 2023 年末、Analog は業界で興奮を引き起こし、X プラットフォームでのオープン テストネット登録イベントに関する情報をリリースしました。

Foxconn、AIワンストップサービスを構築、先進的な半導体パッケージング参入のためシャープに投資:2026年に生産開始、月産20,000枚のウエハーを生産する設計 Foxconn、AIワンストップサービスを構築、先進的な半導体パッケージング参入のためシャープに投資:2026年に生産開始、月産20,000枚のウエハーを生産する設計 Jul 18, 2024 pm 02:17 PM

このウェブサイトのニュースによると、経済日報は本日(7月11日)、フォックスコングループが、現在主流のパネルレベルファンアウトパッケージング(FOPLP)半導体ソリューションに焦点を当て、先進的なパッケージング分野に参入したと報じた。 1. 子会社のInnoluxに続き、Foxconn Groupが投資するシャープも日本のパネルレベルのファンアウトパッケージング分野への参入を発表し、2026年に生産開始される予定である。 Foxconn Group自体はAI分野で十分な影響力を持っており、先進的なパッケージングにおける欠点を補うことで、将来的により多くのAI製品の受注を促進する「ワンストップ」サービスを提供できるとしている。このウェブサイトの公開情報によると、フォックスコングループは現在シャープ株の10.5%を保有しており、現段階では保有を増減させる予定はなく、保有を維持すると述べている。

See all articles