Rumah pembangunan bahagian belakang tutorial php discuz加密解密函数使用方法和中文注释_PHP教程

discuz加密解密函数使用方法和中文注释_PHP教程

Jul 13, 2016 am 10:40 AM
discuz Penyulitan dan penyahsulitan

复制代码 代码如下:

/**
 * $string 明文或密文
 * $operation 加密ENCODE或解密DECODE
 * $key 密钥
 * $expiry 密钥有效期
 */
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
    // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙
    // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。
    // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方
    // 当此值为 0 时,则不产生随机密钥
    $ckey_length = 4;

    // 密匙
    // $GLOBALS['discuz_auth_key'] 这里可以根据自己的需要修改
    $key = md5($key ? $key : $GLOBALS['discuz_auth_key']);

    // 密匙a会参与加解密
    $keya = md5(substr($key, 0, 16));
    // 密匙b会用来做数据完整性验证
    $keyb = md5(substr($key, 16, 16));
    // 密匙c用于变化生成的密文
    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
    // 参与运算的密匙
    $cryptkey = $keya.md5($keya.$keyc);
    $key_length = strlen($cryptkey);
    // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b),解密时会通过这个密匙验证数据完整性
    // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确
    $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $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         $rndkey[$i] = ord($cryptkey[$i % $key_length]);
    }
    // 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上并不会增加密文的强度
    for($j = $i = 0; $i         $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }
    // 核心加解密部分
    for($a = $j = $i = 0; $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') {
        // substr($result, 0, 10) == 0 验证数据有效性
        // substr($result, 0, 10) - time() > 0 验证数据有效性
        // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 验证数据完整性
        // 验证数据有效性,请看未加密明文的格式
        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 {
        // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因
        // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码
        return $keyc.str_replace('=', '', base64_encode($result));
    }
}


$a = www.jb51.net;
$b = authcode($a, "ENCODE", "abc123");
echo $b."
";
echo authcode($b, "DECODE", "abc123");
?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/726030.htmlTechArticle复制代码 代码如下: ?php /** * $string 明文或密文 * $operation 加密ENCODE或解密DECODE * $key 密钥 * $expiry 密钥有效期 */ function authcode($string, $operat...
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1662
14
Tutorial PHP
1261
29
Tutorial C#
1234
24
Discuz penyelesaian masalah log masuk latar belakang didedahkan Discuz penyelesaian masalah log masuk latar belakang didedahkan Mar 03, 2024 am 08:57 AM

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

Penjelasan terperinci tentang proses pendaftaran Discuz: membolehkan anda mengubah suai maklumat peribadi dengan mudah Penjelasan terperinci tentang proses pendaftaran Discuz: membolehkan anda mengubah suai maklumat peribadi dengan mudah Mar 13, 2024 pm 12:21 PM

"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

Apa itu Discuz? Definisi dan pengenalan fungsi Discuz Apa itu Discuz? Definisi dan pengenalan fungsi Discuz Mar 03, 2024 am 10:33 AM

"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.

Apakah yang perlu saya lakukan jika saya menemui kata laluan Discuz yang salah? Perkongsian penyelesaian pantas! Apakah yang perlu saya lakukan jika saya menemui kata laluan Discuz yang salah? Perkongsian penyelesaian pantas! Mar 03, 2024 am 09:33 AM

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

Wajib ada untuk pengguna Discuz! Analisis komprehensif untuk menamakan semula prop! Wajib ada untuk pengguna Discuz! Analisis komprehensif untuk menamakan semula prop! Mar 12, 2024 pm 10:15 PM

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

Editor Discuz: Alat penyunting halaman web yang berkuasa Editor Discuz: Alat penyunting halaman web yang berkuasa Mar 09, 2024 pm 06:06 PM

Editor Discuz: Alat penyuntingan halaman web yang berkuasa yang memerlukan contoh kod khusus Dengan perkembangan Internet, pembinaan laman web dan penyuntingan kandungan menjadi semakin penting. Sebagai alat penyunting halaman web biasa, editor Discuz memainkan peranan penting dalam pembinaan laman web. Ia bukan sahaja menyediakan pelbagai fungsi dan alatan, tetapi juga membantu pengguna mengedit dan menerbitkan kandungan dengan lebih mudah. Dalam artikel ini, kami akan memperkenalkan ciri dan penggunaan editor Discuz, dan menyediakan beberapa contoh kod khusus untuk membantu pembaca memahami dan menggunakannya dengan lebih baik.

Discuz pengecualian log masuk akaun latar belakang, bagaimana untuk menanganinya? Discuz pengecualian log masuk akaun latar belakang, bagaimana untuk menanganinya? Mar 09, 2024 pm 05:51 PM

Tajuk: Discuz pengecualian log masuk akaun latar belakang, bagaimana untuk menanganinya? Apabila anda menggunakan pengurusan bahagian belakang sistem forum Discuz, kadangkala anda mungkin menghadapi log masuk akaun yang tidak normal. Ini mungkin disebabkan oleh pelbagai sebab, termasuk kata laluan yang salah, akaun disekat, isu sambungan rangkaian, dsb. Apabila menghadapi situasi ini, kita perlu menyelesaikan masalah melalui penyelesaian masalah dan pemprosesan yang mudah. Semak sama ada nombor akaun dan kata laluan adalah betul: Mula-mula, sahkan sama ada nombor akaun dan kata laluan yang anda masukkan adalah betul. Semasa log masuk, pastikan huruf besar adalah betul dan kata laluan adalah betul

Selesaikan masalah bahawa perkongsian Discuz WeChat tidak dapat dipaparkan Selesaikan masalah bahawa perkongsian Discuz WeChat tidak dapat dipaparkan Mar 09, 2024 pm 03:39 PM

Tajuk: Untuk menyelesaikan masalah yang dikongsi oleh Discuz WeChat tidak dapat dipaparkan, contoh kod khusus diperlukan Dengan pembangunan Internet mudah alih, WeChat telah menjadi bahagian yang sangat diperlukan dalam kehidupan seharian orang ramai. Dalam pembangunan tapak web, untuk meningkatkan pengalaman pengguna dan mengembangkan pendedahan laman web, banyak tapak web akan menyepadukan fungsi perkongsian WeChat, membolehkan pengguna berkongsi kandungan tapak web dengan mudah ke kumpulan Moments atau WeChat. Walau bagaimanapun, kadangkala apabila menggunakan sistem forum sumber terbuka seperti Discuz, anda akan menghadapi masalah yang dikongsi WeChat tidak dapat dipaparkan, yang membawa kesukaran tertentu kepada pengalaman pengguna.

See all articles