从Discuz里拿出来的PHP字符串加密函数_PHP教程
从discuz里面发现了一个很牛的加密解密函数。此函数的厉害之处在于可以在指定时间内加密还原字符串,超时无法还原。
这样我们就可以拿此函数来做很多用途了,比如:单点登录的token加密传输啦,临时密码啦等等。
在这里记录一下,方便以后应用。
<?php /** * @param string $string 原文或者密文 * @param string $operation 操作(ENCODE | DECODE), 默认为 DECODE * @param string $key 密钥 * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效 * @return string 处理后的 原文或者 经过 base64_encode 处理后的密文 * * @example * * $a = authcode('abc', 'ENCODE', 'key'); * $b = authcode($a, 'DECODE', 'key'); // $b(abc) * * $a = authcode('abc', 'ENCODE', 'key', 3600); * $b = authcode('abc', 'DECODE', 'key'); // 在一个小时内,$b(abc),否则 $b 为空 */ function authcode($string, $operation = 'DECODE', $key = '', $expiry = 3600) { $ckey_length = 4; // 随机密钥长度 取值 0-32; // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。 // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方 // 当此值为 0 时,则不产生随机密钥 $key = md5($key ? $key : EABAX::getAppInf('KEY')); $keya = md5(substr($key, 0, 16)); $keyb = md5(substr($key, 16, 16)); $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('0d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string); $result = ''; $box = range(0, 255); $rndkey = array(); for($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($cryptkey[$i % $key_length]); } for($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } for($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if($operation == 'DECODE') { if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { return substr($result, 26); } else { return ''; } } else { return $keyc.str_replace('=', '', base64_encode($result)); } } ?>

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

AI Hentai Generator
Menjana ai hentai secara percuma.

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

Penyelesaian masalah log masuk latar belakang Discuz didedahkan. ramai webmaster. Walau bagaimanapun, dengan tepat kerana fungsinya yang berkuasa, kadangkala kami menghadapi beberapa masalah semasa menggunakan Discuz, seperti masalah log masuk latar belakang. Hari ini, kami akan mendedahkan penyelesaian kepada masalah log masuk latar belakang Discuz dan memberikan contoh kod khusus, dengan harapan dapat membantu mereka yang memerlukan

"Meneroka Discuz: Definisi, Fungsi dan Contoh Kod" Dengan perkembangan pesat Internet, forum komuniti telah menjadi platform penting untuk orang ramai mendapatkan maklumat dan bertukar pendapat. Di antara banyak sistem forum komuniti, Discuz, sebagai perisian forum sumber terbuka yang terkenal di China, digemari oleh majoriti pembangun dan pentadbir laman web. Jadi, apa itu Discuz? Apakah fungsi yang ada padanya, dan bagaimana ia boleh membantu tapak web kami? Artikel ini akan memperkenalkan Discuz secara terperinci dan melampirkan contoh kod khusus untuk membantu pembaca mengetahui lebih lanjut mengenainya.

Wajib ada untuk pengguna Discuz! Analisis komprehensif untuk menamakan semula prop! Dalam forum Discuz, fungsi pertukaran nama sentiasa mendapat perhatian dan permintaan daripada pengguna. Bagi sesetengah pengguna yang perlu menukar nama mereka, prop menukar nama boleh mengubah suai nama pengguna dengan mudah, dan ia juga merupakan cara interaksi yang menarik. Mari kita lihat secara mendalam tentang penamaan semula prop dalam Discuz, termasuk cara mendapatkannya, cara menggunakannya dan penyelesaian kepada beberapa masalah biasa. 1. Dapatkan prop menukar nama dalam Discuz prop menukar nama biasanya dibeli melalui mata atau pentadbir

Apakah yang perlu saya lakukan jika saya menemui kata laluan Discuz yang salah? Perkongsian penyelesaian pantas! Discuz! Ia adalah program forum yang sangat popular yang menyediakan pengguna dengan platform untuk komunikasi yang mudah. Menggunakan Discuz! Apabila mengakses forum, kadangkala anda mungkin menghadapi kata laluan yang salah, yang boleh menyebabkan pengguna tidak dapat log masuk dan menggunakan forum seperti biasa. Nah, jumpa Discuz! Apabila kata laluan salah, bagaimana kita harus menyelesaikan masalah dengan cepat? Beberapa penyelesaian akan dikongsi di bawah, dengan contoh kod khusus disediakan untuk rujukan. 1. Semak sama ada kata laluan

"Penjelasan Terperinci Proses Pendaftaran Discuz: Membolehkan anda mengubah suai maklumat peribadi dengan mudah, contoh kod khusus diperlukan" Discuz ialah program forum komuniti yang kuat yang digunakan secara meluas dalam pelbagai laman web Ia menyediakan banyak fungsi pendaftaran pengguna dan pengubahsuaian dan antara muka. Artikel ini akan memperkenalkan anda kepada proses pendaftaran Discuz secara terperinci dan memberikan contoh kod khusus untuk membantu anda menyesuaikan dan mengubah suai maklumat peribadi anda dengan mudah. 1. Proses pendaftaran pengguna Di Discuz, pendaftaran pengguna adalah salah satu fungsi penting laman web ini

Panduan Operasi Pengubahsuaian Nama Domain Discuz Dalam proses menggunakan sistem forum Discuz, kadangkala kita perlu mengubah suai nama domain forum tersebut. Ini mungkin kerana nama domain perlu ditukar, atau beberapa masalah resolusi nama domain perlu dibaiki. Artikel ini akan memperkenalkan secara terperinci cara mengubah suai nama domain dalam sistem forum Discuz, dan memberikan beberapa contoh kod khusus. 1. Sandarkan data Sebelum melakukan sebarang operasi, kita mesti membuat sandaran data untuk mengelakkan kehilangan data akibat ralat operasi. Dalam Discuz, anda boleh menggunakan sandaran data latar belakang

Discuz log masuk latar belakang gagal? Ajar anda cara menyelesaikannya dengan mudah! Memandangkan Discuz, sebagai platform forum popular, digunakan secara meluas dalam pembinaan dan pengurusan laman web, kadangkala anda akan menghadapi kegagalan log masuk bahagian belakang, yang merisaukan. Hari ini kita akan membincangkan isu yang mungkin menyebabkan kegagalan log masuk bahagian belakang Discuz, menyediakan beberapa penyelesaian dan melampirkan contoh kod tertentu. Saya harap artikel ini dapat membantu juruweb dan pembangun yang menghadapi masalah yang sama. 1. Penyelesaian masalah adalah untuk menyelesaikan masalah kegagalan log masuk latar belakang Discuz.

Editor Discuz: Alat susun atur siaran yang cekap Dengan perkembangan Internet, forum dalam talian telah menjadi platform penting untuk orang ramai berkomunikasi dan berkongsi maklumat. Di dalam forum, pengguna bukan sahaja boleh meluahkan pendapat dan idea mereka, tetapi juga berbincang dan berinteraksi dengan orang lain. Apabila menerbitkan siaran, format yang jelas dan cantik selalunya boleh menarik lebih ramai pembaca dan menyampaikan maklumat yang lebih tepat. Untuk memudahkan pengguna menaip dan mengedit siaran dengan cepat, editor Discuz wujud dan menjadi alat penetapan taip jawatan yang cekap. Cakera
