具体介绍PHP加密扩展mcrypt的基本使用
Mcrypt 支持以下四种分组密码模式:CBC, OFB,CFB 和 ECB。 如果使用 libmcrypt-2.4.x 或更高版本链接, 还可以
支持 nOFB 分组模式 和 流 模式。 下列是所支持的加密模式以及其对应的预定义常量。
1. MCRYPT_MODE_ECB (electronic codebook) 适用于随机数据, 比如可以用这种模式来加密其他密钥。 由于要加密
的数据很短,并且是随机的,所以这种模式的缺点反而起到了积极的作用。
2. MCRYPT_MODE_CBC (cipher block chaining) 特别适用于对文件进行加密。 相比 ECB, 它的安全性有明显提升。
3. MCRYPT_MODE_CFB (cipher feedback) 对于每个单独的字节都进行加密, 所以非常适用于针对字节流的加密。
4. MCRYPT_MODE_OFB (output feedback, in 8bit) 和 CFB 类似。它可以用在无法容忍加密错误传播的应用中。因为
它是按照 8 个比特位进行加密的,所以安全系数较低,不建议使用。
5. MCRYPT_MODE_NOFB (output feedback, in 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();
示例一:
<?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); }
示例二:
<?php /** * 数据加密 * @param $plainText 明文数据 * @param $key 加密key */ function encrypt($plainText, $key) { $td = mcrypt_module_open(MCRYPT_3DES, '', 'ecb', ''); // MCRYPT_3DES = tripledes $size = mcrypt_enc_get_iv_size($td); // 返回打开的算法的初始向量大小 $iv = mcrypt_create_iv($size, MCRYPT_RAND); // 从随机源创建初始向量 $key = substr($key, 0 ,mcrypt_enc_get_key_size($td)); // 打开模式所能支持的最长密钥长度 // 初始化加密所需的缓冲区 // 如果发生错误将会返回负数: -3表示密钥长度有误, -4表示内存分配失败, 其他值表示未知错误, 同时会显示对应的警告信息 $retInt = mcrypt_generic_init($td, $key, $iv); $encrypt_data = mcrypt_generic($td, $plainText); //加密 mcrypt_generic_deinit($td); // 对加密模块进行清理工作 mcrypt_module_close($td); // 关闭加密模块 return base64_encode($encrypt_data); } /** * 数据解密 * @param $encryptData 密文数据 * @param $key 解密key */ function decrypt($encryptData, $key) { $encryptData = base64_decode($encryptData); $td = mcrypt_module_open('tripledes', '', 'ecb', ''); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); //从随机源创建初始向量 $key = substr($key, 0, mcrypt_enc_get_key_size($td)); $retInt = mcrypt_generic_init($td, $key, $iv); // 请注意,由于存在数据补齐的情况,返回字符串的长度可能和明文的长度不相等 $plainText = mdecrypt_generic($td, $encryptData); // 解密 mcrypt_generic_deinit($td); // 对加密模块进行清理工作 mcrypt_module_close($td); // 关闭加密模块 return $plainText; } // 解决数据补齐,造成返回字符串长度和明文长度不一致的问题 $origin_plain = ''; //原始的明文 $plainText = ''; //解密后得到的明文 if (strncmp($origin_plain, $plainText, strlen($origin_plain)) == 0) { echo 'ok'; } else { echo 'error'; }
Atas ialah kandungan terperinci 具体介绍PHP加密扩展mcrypt的基本使用. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
