国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ php教程 php手冊 PHP の組み込み関數(shù)を使用した DES アルゴリズムによるデータの暗號化と復號化

PHP の組み込み関數(shù)を使用した DES アルゴリズムによるデータの暗號化と復號化

Jun 13, 2016 pm 12:00 PM
des php 內(nèi)蔵 書く 関數(shù) 暗號化 そして データ 生成する 目的 アルゴリズム できる 欲しい 復號化 合格 必要

プロジェクトの都合上、「認可コード」を生成できるクラスを記述する必要があります(認可コードには主にプロジェクトの有効期限が含まれます)。生成された認可コードはファイルに書き込まれます。プロジェクトが実行されると、ファイル內(nèi)の暗號文が自動的に読み取られ、一意の「キー」を使用して関數(shù)が呼び出され、暗號文が復號化され、プロジェクトの有効期限が解釈されます。
以前、base64 md5 逆文字列を中心に自分で書いてみました。このアルゴリズムは単純すぎるため簡単に解読され、暗號化と復號化における「鍵」の重要性を認識できていないため、放棄されました。
その後、関連情報を検索したところ、Mcrypt という強力な関數(shù)ライブラリが PHP に組み込まれていることがわかりました。
実際、mcrypt 自體は強力な暗號化および復號化メソッドを提供し、DES、TripleDES、Blowfish (デフォルト)、3-WAY、SAFER-SK64、SAFER-SK128、TWOFISH、TEA、 CBC、OFB、CFB、ECB の RC2 と GOST。
以下は、Baidu Encyclopedia の「暗號化アルゴリズム」の説明からの簡単な引用です。
データ暗號化の基本的なプロセスは、元はプレーン テキストだったファイルまたはデータを特定のアルゴリズムに従って処理し、読み取り不可能にすることです。通常「暗號文」と呼ばれるコードで、対応するキーを入力した場合にのみ元のコンテンツが表示されるようにすることで、不正な人物によるデータの盜難や読み取りを防ぐという目的が達成されます。 このプロセスの逆は復號化であり、エンコードされた情報を元のデータに変換するプロセスです。
暗號化テクノロジーは通常、「対稱」と「非対稱」の 2 つのカテゴリに分類されます。
対稱暗號化とは、暗號化と復號化に通?!弗互氓伐绁?キー」と呼ばれる同じキーを使用することを意味します。たとえば、米國政府が採用している DES 暗號化標準は、典型的な「対稱暗號化」です。 「暗號化方式、セッションキー長は56ビットです。
非対稱暗號化は、暗號化と復號化で異なる??キーを使用することを意味します。通常、「公開キー」と「秘密キー」と呼ばれる 2 つのキーがペアになっている必要があり、それ以外の場合は暗號化ドキュメントを開くことができません。ここでの「公開鍵」は外部に公開できることを意味しますが、「秘密鍵」は外部に公開できず、所有者のみが知ることができます。ここに対稱暗號方式の優(yōu)位性があり、暗號化したファイルをネットワーク上に送信する場合、どの方法を使っても相手に鍵を伝えることが難しく、盜聴される可能性がある。非対稱暗號化方式は鍵が 2 つあり、「公開鍵」を公開できるため、受信者は復號するときに自分の秘密鍵を使用するだけで済み、鍵の送信を回避できる點が非常に優(yōu)れています。セキュリティの問題。
前述したように、mcrypt は國際的に公開されているさまざまなアルゴリズムをサポートしています。このプロジェクトでは、高速で大量のデータの暗號化に適した対稱アルゴリズムである DES (Data Encryption Standard) を使用しました。
次に、暗號化クラスで使用されるいくつかの関數(shù)について簡単に説明します。

------------------------------------------ ------ ------------------------------------
resource mcrypt_module_open ( string $ Algorithm , string $algorithm_directory , string $mode , string $mode_directory )
パラメータ $algorithm: 使用するアルゴリズム。関數(shù) mcrypt_list_algorithms() を通じて、サポートされているすべてのアルゴリズム名を表示できます。
パラメータ $mode: どのモードにするか同様に、サポートされているすべてのモードを表示するには、組み込み関數(shù) mcrypt_list_algorithms() を使用します

-------------------------- -------- -------------------------------------- -----
int mcrypt_enc_get_iv_size (resource $td)
この関數(shù)は、使用されるアルゴリズムの初期化ベクトル (IV) のサイズを返します (少し抽象的に見えます)。IV が次の場合は 0 を返します。アルゴリズムでは無視されます。
パラメータ $td は、mcrypt_module_open 関數(shù)の戻り値です。

------------------------------------------ ------ ------------------------------------
string mcrypt_create_iv ( int $ size [, int $source = MCRYPT_DEV_RANDOM ] )
この関數(shù)は初期化ベクトル (IV) を作成します
パラメータ:
$source には MCRYPT_RAND、MCRYPT_DEV_RANDOM、
MCRYPT_DEV_URANDOM を指定できます
注: PHP5。 3.0 以降、MCRYPT_RAND のみをサポート
戻り値:
成功した場合は、文字列の初期ベクトルが返されます。失敗した場合は、False が返されます。 ---------------------------------------------------- ------- ----------------
int mcrypt_enc_get_key_size ( resource $td )
この関數(shù)は、でサポートされている最大キー長 (バイト単位) を取得できます?,F(xiàn)在のアルゴリズム
int mcrypt_generic_init ( resource $td , string $key , string $iv )
mcrypt_generic() または mdecrypt_generic() を呼び出す前に、まずこの関數(shù)を呼び出す必要があります。この関數(shù)はバッファの初期化に役立ちます。暗號化されたデータを保存します。
パラメータ $key: キーの長さ。$key の現(xiàn)在の値は、関數(shù) mcrypt_enc_get_key_size() によって返される値より小さいことに注意してください。
質(zhì)問: $key の値は大きいほど良いのですか?同級生會があれば、この質(zhì)問に答えるのを手伝ってください。

------------------------------------------ ------ ------------------------------------
string mcrypt_generic ( resource $ td , string $data )
前の作業(yè)が完了したら、この関數(shù)を呼び出してデータを暗號化できます。
パラメータ $data: 暗號化するデータの內(nèi)容
戻り値: 暗號化された暗號文を返す

--------------------- ----- -------------------------------------- ----- ----------
bool mcrypt_generic_deinit ( resource $td )
この関數(shù)は、現(xiàn)在使用されている暗號化モジュールをアンインストールするのに役立ちます。
戻り値
成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

---------- ----- -------------------------------------- ----- -
string mdecrypt_generic ( resource $td , string $data )
この関數(shù)はデータを復號化するために使用できます。
注: 復號化されたデータは実際のデータよりも長くなる可能性があり、後続のデータが存在する可能性があります。


class authCode {
public $ttl;//有効期限の時刻形式: 20120101 (年、月、日)
public $key_1;//Key 1
public $key_2;//キー 2
public $td;
public $ks;//キーの長さ
public $iv;//初期ベクトル
public $salt;/ /ソルト値 (特定の文字列)
public $encode;//暗號化された情報
public $return_array = array() // MAC アドレスを含む文字列配列を返します
public $mac_addr;//MAC アドレス
public $filepath;//暗號文を保存するファイルパス
public function __construct(){
//物理アドレスを取得
$this->gt;mac_addr=$ this->getmac(PHP_OS) ;
$this->filepath="./licence.txt";
$this->ttl="20120619";//有効期限
$ this->salt="~! @#$??";//暗號文のセキュリティを向上させるために使用されるソルト値
// echo "

".print_r(mcrypt_list_algorithms ())."< /pre>"; <br>// echo "<pre class="brush:php;toolbar:false">".print_r(mcrypt_list_modes())."
";
/**
* 平文情報を暗號化します
* @param $key key
*/
public function encode($key) {
$this->td = mcrypt_module_open(MCRYPT_DES,'','ecb',''); //MCRYPT_DES アルゴリズム、ecb モードを使用します
$size=mcrypt_enc_get_iv_size( $this->td);//初期ベクトルのサイズを設定します
$this->iv = mcrypt_create_iv($size, MCRYPT_RAND);//初期ベクトルを作成します
$this->ks = mcrypt_enc_get_key_size( $this->td) ;// サポートされているキーの最大長 (バイト単位) を返します
$this->key_1 = substr(md5(md5($key).$this-> Salt),0,$this->ks) ;
mcrypt_generic_init($this->td, $this->key_1, $this->iv); //初期処理
//必須 プレーンテキストに保存
$con=$this ->mac_addr.$this->ttl;
//暗號化
$this->encode = mcrypt_generic($this->td, $con ); >mcrypt_generic_deinit($this->td);
//暗號文をファイルに保存します
$this->savetofile();
/**
* 暗號文を復號化します
* @param $key key
*/
public function decode($key) {
try {
if (!file_exists($this->filepath)){
throw new Exception ("認証ファイルが存在しません"); >}else{// 認証ファイルが存在する場合は、認証ファイル內(nèi)の暗號文を読み取ります
$fp=fopen($this->filepath,'r' );
$secret=fread($fp, filesize($this->ファイルパス));
$this->key_2 = substr(md5(md5($key).$this->salt ),0,$this->ks); ??>//初期復號化処理
mcrypt_generic_init($this->td, $this->key_2, $this->iv);
//復號化
$decrypted = mdecrypt_generic($this) ->td, $secret);
//復號化後、後続の可能性があります

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

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 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

発電機はPHPでどのように機能しますか? 発電機はPHPでどのように機能しますか? Jul 11, 2025 am 03:12 AM

ageneratorinphpisamemory-efficientwaytoateate-overdeatatasetasetasetasetsinging valueseintimeintimeturningthemallatonce.1.generatorsususedeywordproducevaluesedemand、memoryusage.2を還元すること。2

PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 Jul 12, 2025 am 03:15 AM

PHPでは、四角い括弧または巻き毛裝具を使用して文字列固有のインデックス文字を取得できますが、正方形のブラケットをお勧めします。インデックスは0から始まり、範囲外のアクセスはnull値を返し、値を割り當てることができません。 MB_SUBSTRは、マルチバイト文字を処理するために必要です。例:$ str = "hello"; echo $ str [0];出力h; MB_Substr($ str、1,1)などの漢字は、正しい結(jié)果を得る必要があります。実際のアプリケーションでは、ループする前に文字列の長さをチェックする必要があり、ダイナミック文字列を有効性のために検証する必要があり、多言語プロジェクトはマルチバイトセキュリティ関數(shù)を均一に使用することをお勧めします。

PHPでのセッションハイジャックを防ぐ方法は? PHPでのセッションハイジャックを防ぐ方法は? Jul 11, 2025 am 03:15 AM

PHPでのセッションハイジャックを防ぐには、次の測定値をとる必要があります。1。httpsを使用して送信を暗號化し、session.cookie_secure = 1をphp.iniに設定します。 2. HTTPonly、Secure、SamesiteなどのセキュリティCookie屬性を設定します。 3。ユーザーがログインまたはアクセス許可を変更して変更を変更してセッションIDを変更したときにsession_regenerate_id(true)を呼び出します。 4.セッションのライフサイクルを制限し、GC_MAXLIFETIMEを合理的に構(gòu)成し、ユーザーのアクティビティ時間を記録します。 5。SessionIDをURLに公開することを禁止し、SESSION.USE_ONLYを設定します

URLENCODEを使用してPHPで文字列をエンコードする方法 URLENCODEを使用してPHPで文字列をエンコードする方法 Jul 11, 2025 am 03:22 AM

urlencode()関數(shù)は、文字列をURLセーフ形式にエンコードするために使用されます。これは、非過去の文字( - 、_、および。を除く)に、2桁の16進數(shù)が続くパーセント記號に置き換えられます。たとえば、スペースは標識に変換され、感嘆符は!に変換され、漢字はUTF-8エンコーディングフォームに変換されます。使用する場合、URL構(gòu)造の損傷を避けるために、URL全體ではなく、パラメーター値のみをエンコードする必要があります。パスセグメントなどのURLの他の部分の場合、rawurlencode()関數(shù)を使用する必要があります。配列パラメーターを処理する場合、http_build_query()を使用して、各値でurlencode()を自動的にエンコードするか、データの安全な転送を確保することができます。ただ

PHP文字列の最初のn文字を取得します PHP文字列の最初のn文字を取得します Jul 11, 2025 am 03:17 AM

substr()またはmb_substr()を使用して、phpで最初のn文字を取得できます。特定の手順は次のとおりです。1。substr($ string、0、n)を使用して、ASCII文字に適しており、シンプルで効率的です。 2。マルチバイト文字(中國語など)、MB_Substr($ String、0、n、 'UTF-8')を処理し、MBSTRING拡張機能が有効になっていることを確認します。 3.文字列にhtmlまたはwhitespace文字が含まれている場合、最初にstrip_tags()を使用してタグとtrim()を削除してスペースをきれいにし、結(jié)果がきれいであることを確認するためにインターセプトする必要があります。

PHP文字列の最後のn文字を取得します PHP文字列の最後のn文字を取得します Jul 11, 2025 am 03:17 AM

PHPで文字列の最後のn文字を取得する2つの主な方法があります。1。substr()関數(shù)を使用して、単一バイト文字に適したネガティブ開始位置を介して傍受します。 2。MB_SUBSTR()関數(shù)を使用して、英語以外の文字が切り捨てられないように多言語とUTF-8エンコーディングをサポートします。 3.オプションで、文字列の長さが境界の狀況を処理するのに十分かどうかを判斷します。 4. Strrev()substr()の組み合わせ方法を使用することはお勧めしません。これは、マルチバイト文字にとって安全で非効率的ではないためです。

PHPでセッション変數(shù)を設定および取得する方法は? PHPでセッション変數(shù)を設定および取得する方法は? Jul 12, 2025 am 03:10 AM

PHPでセッション変數(shù)を設定して取得するには、最初にスクリプトの上部でsession_start()を呼び出してセッションを開始する必要があります。 1.セッション変數(shù)を設定するときは、$ _Session HyperGlobal Arrayを使用して、$ _Session ['username'] = 'john_doe'などの特定のキーに値を割り當てます。文字列、數(shù)字、配列、さらにはオブジェクトを保存できますが、パフォーマンスに影響を及ぼさないでデータを保存しすぎないようにします。 2。セッション変數(shù)を取得するときは、最初にsession_start()を呼び出してから、echo $ _session ['username']など、キーを介して$ _sessionアレイにアクセスする必要があります。 Isset()を使用して、変數(shù)が存在するかどうかを確認することをお勧めします。

PHPでのSQL注射を防ぐ方法 PHPでのSQL注射を防ぐ方法 Jul 12, 2025 am 03:02 AM

PHPでのSQL注入を防ぐための主要な方法には、次のものが含まれます。1。プリプロセシングステートメント(PDOやMySQLIなど)を使用して、SQLコードとデータを分離します。 2。真の前処理を確保するために、シミュレートされた前処理モードをオフにします。 3。IS_NUMERIC()およびFilter_Var()を使用するなど、ユーザー入力をフィルターおよび検証します。 4. SQL文字列を直接スプライシングしないようにし、代わりにパラメーターバインディングを使用します。 5.生産環(huán)境でエラー表示をオフにし、エラーログを記録します。これらの測定では、メカニズムや詳細からのSQL注入のリスクを包括的に防ぎます。

See all articles