ホームページ  >  記事  >  バックエンド開発  >  PHP 暗号化拡張ライブラリ - Mcrypt 拡張ライブラリの使用例

PHP 暗号化拡張ライブラリ - Mcrypt 拡張ライブラリの使用例

黄舟
黄舟オリジナル
2017-05-25 16:14:004161ブラウズ

PHP 暗号化拡張ライブラリ—Mcrypt 拡張ライブラリ

この記事の本文を始める前に、まず PHP 暗号化拡張ライブラリとは何かを理解しましょう。 PHP ですが、さらに、PHP には比較的包括的な機能を備えた暗号化拡張ライブラリがいくつかあります。 PHP が元々特定の機能の操作をサポートしていないのと同じように、新しいバージョンでサポートしたい場合は、この機能を使用しない場合は、PHP の設定時に拡張して提供することができます。これにより、PHP のロードを防ぐことができ、サーバーのリソースが節約され、パフォーマンスが向上します。

これまでの3つの記事「PHP暗号化関数—crypt()関数暗号化」「PHP暗号化関数—md5()関数暗号化」「PHP暗号化関数—sha1()関数暗号化」 PHP 暗号化機能を紹介しました。次に、PHP 暗号化拡張ライブラリを紹介します。

PHP 暗号化拡張ライブラリには、Mcrypt と Mhash の 2 つがあります。この記事では、最初に Mcrypt を紹介します。

1. Mcrypt ライブラリのインストール

mcypt は、非常に強力な暗号化アルゴリズム拡張ライブラリです。 Mcrypt は標準の PHP インストール プロセスではインストールされませんが、libmcrypt.dll ファイルは PHP ホーム ディレクトリに含まれているため、PHP 構成ファイルの extension=php_mcrypt.dll 行の前にあるセミコロンのみを使用します。次に、この拡張ライブラリを使用するためにサーバーを再起動します。

2.Mcrypt ライブラリ定数

mcrypt ライブラリは 20 を超える暗号化アルゴリズムと 8 つの暗号化モードをサポートしており、関数 mcrypt_list_algorithms() と mcrypt_list_modes() を直接使用して確認できます。出力 結果は次のとおりです:

PHP 暗号化拡張ライブラリ - Mcrypt 拡張ライブラリの使用例

注:

実際のアプリケーションでは、これらのアルゴリズムとモードを定数で表す必要があります。これらを表すためにそれぞれ MCRYPT_ と MCRYPT_MODE_ を追加します。アルゴリズム: MCRYPT_TWOFISH として表されます。 CBC 暗号化モードは MCRYPT_MODE_CBC で表されます。

3.Mcrypt アプリケーション

暗号化と復号化に Mcrypt を使用します。md5()、sha1() およびその他の関数を使用したくない場合は、それらを直接呼び出してください。誰もが Mcrypt のワークフローを明確に理解できるように、コードを使用して直接紹介しましょう。 具体的なコードは次のとおりです。

<?php
$atr = mcrypt_list_algorithms();  //函数返回 Mcrypt支持的加密算法数组
echo "支持算法有:";
foreach ($atr as $atr_value){
    echo "<br>".$atr_value;
}
$arr = mcrypt_list_modes();     //函数返回 Mcrypt支持的加密模式数组
echo "<p>支持加密模式有:";
foreach ($arr as $arr_value){
    echo "<br>".$arr_value;
}
?>

出力結果は次のとおりです。

次に、上の例:

PHP 暗号化拡張ライブラリ - Mcrypt 拡張ライブラリの使用例

1.mcrypt_create_iv: 構文形式は次のとおりです:

<?php
header("Content-Type:text/html; charset=utf-8");
$str = "被加密的内容:PHH中文网www.php.cn";  //加密文本
$key = "key:111";                               //密钥
$cipher = MCRYPT_DES;                           //密码类型
$modes = MCRYPT_MODE_ECB;                      //密码模式
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND); //初始化向量
echo "加密前:".$str."<p>";
$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv);       //加密函数
echo "加密后:".$str_encrypt."<p>";
$str_decrypt =mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv);  //解密函数
echo "还原:".$str_decrypt."<p>";
?>

データ暗号化には Mcrypt を使用します。復号化の前に、まず初期化ベクトル (iv と呼ばれる) を作成する必要があります。初期化ベクトルの作成には 2 つのパラメーターが必要です。size は iv のサイズを指定し、source は iv のソースです。 source は次の値を取ることができます:

MCRYPT_RAND: システム乱数。

    MCRYPT_DEV_RANDOM: ディレクトリ /dev/random (UNIX システム) 内のデータを読み取ります。
  • MCRYPT_DEV_URANDOM: ディレクトリ /dev/urandom (UNIX システム) 内のデータを読み取ります。
  • 2.mcrypt_get_iv_size:

  • 構文形式:
string mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] )

この関数によって返される初期化ベクトル (iv) のサイズ。この関数の 2 つのパラメーターは、先ほど紹介した暗号化アルゴリズム (cipher) と暗号化モード (mode) です。

3.mcrypt_encrypt:

構文形式は次のとおりです:

int mcrypt_get_iv_size ( string $cipher , string $mode )

ベクトルを初期化した後、mcrypt_encrypt() 暗号化関数を使用してデータを暗号化できます。この関数の 5 つのパラメーターの意味は次のとおりです。 (1) cipher: 暗号化アルゴリズム。上の例では、変数 $cipher です。ここでの暗号化アルゴリズムは、初期化ベクトルの暗号化アルゴリズムとは異なる場合があります。

(2)キー: キー。上の例の変数 $key 。

(3)モード: 暗号化モード。

(4)iv: 初期化ベクトル。

4.mcrypt_decrypt

構文形式は次のとおりです:

string mcrypt_encrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

復号化関数 mcrypt_decrypt() と暗号化関数 mcrypt_encrypt() のパラメーターはほぼ同じです。唯一の違いはパラメータ データです。ここでのデータは、元のデータではなく、復号化する必要があるデータです。

注:

暗号化関数と復号化関数の暗号、キー、およびモードのパラメーターは一貫している必要があります。一貫していない場合、データは復元されません。

次回も引き続き、PHP暗号化拡張ライブラリ:Mhash拡張ライブラリについてご紹介していきます。詳しくは「PHP暗号化拡張ライブラリ—Mhash拡張ライブラリ」をご覧ください! 【関連する推奨事項】

1. 関連トピックの推奨事項:「PHP 暗号化機能

2.PHP暗号化拡張ライブラリ-Mhash拡張ライブラリの詳細な使用例



以上がPHP 暗号化拡張ライブラリ - Mcrypt 拡張ライブラリの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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