Mcryptは、CBC、OFB、CFB、ECBの4つのblocked暗号モードをサポートしています。 libmcrypt-2.4.x 以降とリンクすると、
nOFB グループ モードと stream モードをサポートすることもできます。 以下は、サポートされている暗号化モードとそれに対応する事前定義された定数です。
1. MCRYPT_MODE_ECB (電子コードブック) は、たとえば、他のキーの暗号化に使用できます。 暗号化されるデータ
は短くランダムであるため、このモードの欠点は実際にはプラスの役割を果たします。
2. MCRYPT_MODE_CBC (暗号ブロックチェーン) は、ファイルの暗号化に特に適しています。 ECBと比較すると安全性が大幅に向上しています。
3. MCRYPT_MODE_CFB (暗号フィードバック) は個々のバイトを暗号化するため、バイト ストリームの暗号化に非常に適しています。
4. MCRYPT_MODE_OFB (出力フィードバック、8 ビット) は CFB に似ています。暗号エラーの伝播を許容できないアプリケーションで使用できます。なぜなら
8ビットに従って暗号化されているため、セキュリティ係数が低く、お勧めできません。
5. MCRYPT_MODE_NOFB (出力フィードバック、nbit) は OFB に似ていますが、アルゴリズムによって指定されたグループ化
サイズに従ってデータを暗号化できるため、より安全です。
6. MCRYPT_MODE_STREAM は、「WAKE」や「RC4」などのストリーム暗号アルゴリズムを含む拡張モードです。
<?php // 获取支持的加密算法 $algos = mcrypt_list_algorithms(); print_r($algos); // 获取所支持的模式 $modes = mcrypt_list_modes(); print_r($modes);
PHP5.5.0以降廃止され、使用が推奨されなくなったいくつかのメソッド:
mcrypt_cfc()
mcrypt_cfb()
mcrypt_ecb ( )
mcrypt_ofb();
例 1:
<?php /** * 加密 * @param $plainText 明文数据 * @param $key 加密key */ function encrypt($plainText, $key) { $algo = MCRYPT_RIJNDAEL_256; //加密算法 $ecb = MCRYPT_MODE_ECB; //加密模式 $keysize = mcrypt_get_key_size($algo, $ecb); $key = substr($key, 0, $keysize); //确保key的长度有效 $ivSize = mcrypt_get_iv_size($algo, $ecb); // 参数 2 可选值有:MCRYPT_RAND(系统随机数生成器), MCRYPT_DEV_RANDOM(从 /dev/random 文件读取数据) // 和 MCRYPT_DEV_URANDOM(从 /dev/urandom 文件读取数据)。在 Windows 平台,PHP 5.3.0 之前的版本中,仅支持 MCRYPT_RAND。 // 请注意,在 PHP 5.6.0 之前的版本中, 此参数的默认值为 MCRYPT_DEV_RANDOM。 $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND); //从随机源创建初始向量 $encryptText = mcrypt_encrypt($algo, $key, $plainText, $ecb, $iv); return trim(base64_encode($encryptText)); } /** * 解密 * @param encryptedText 密文数据 * @param $key 解密key */ function decrypt($encryptedText, $key) { $algo = MCRYPT_RIJNDAEL_256; $ecb = MCRYPT_MODE_ECB; $keysize = mcrypt_get_key_size($algo, $ecb); $key = substr($key, 0, $keysize); //确保key的长度有效 $cryptText = base64_decode($encryptedText); $ivSize = mcrypt_get_iv_size($algo, $ecb); $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND); $decryptText = mcrypt_decrypt($algo, $key, $cryptText, $ecb, $iv); return trim($decryptText); }
例 2:
りー
以上がPHP 暗号化拡張機能 mcrypt の基本的な使い方の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。