Maison développement back-end tutoriel php discuz加密解密函数使用方法和中文注释_php实例

discuz加密解密函数使用方法和中文注释_php实例

Jun 07, 2016 pm 05:22 PM
discuz 加密解密

复制代码 代码如下:

/**
 * $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.php.net;
$b = authcode($a, "ENCODE", "abc123");
echo $b."
";
echo authcode($b, "DECODE", "abc123");
?>

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La solution au problème de connexion en arrière-plan Discuz révélée La solution au problème de connexion en arrière-plan Discuz révélée Mar 03, 2024 am 08:57 AM

La solution au problème de connexion en arrière-plan de Discuz est révélée. Des exemples de code spécifiques sont nécessaires Avec le développement rapide d'Internet, la construction de sites Web est devenue de plus en plus courante, et Discuz, en tant que système de création de sites Web de forum couramment utilisé, a été favorisé par. de nombreux webmasters. Cependant, précisément en raison de ses fonctions puissantes, nous rencontrons parfois des problèmes lors de l'utilisation de Discuz, comme des problèmes de connexion en arrière-plan. Aujourd'hui, nous allons révéler la solution au problème de connexion en arrière-plan de Discuz et fournir des exemples de code spécifiques. Nous espérons aider ceux qui en ont besoin.

Qu'est-ce que Discuz ? Définition et introduction aux fonctions de Discuz Qu'est-ce que Discuz ? Définition et introduction aux fonctions de Discuz Mar 03, 2024 am 10:33 AM

"Explorer Discuz : définition, fonctions et exemples de code" Avec le développement rapide d'Internet, les forums communautaires sont devenus une plate-forme importante permettant aux gens d'obtenir des informations et d'échanger des opinions. Parmi les nombreux systèmes de forum communautaire, Discuz, en tant que logiciel de forum open source bien connu en Chine, est favorisé par la majorité des développeurs et administrateurs de sites Web. Alors, qu’est-ce que Discuz ? Quelles fonctions a-t-il et comment peut-il aider notre site Web ? Cet article présentera Discuz en détail et joindra des exemples de code spécifiques pour aider les lecteurs à en savoir plus.

Un incontournable pour les utilisateurs de Discuz ! Analyse complète des accessoires de renommage ! Un incontournable pour les utilisateurs de Discuz ! Analyse complète des accessoires de renommage ! Mar 12, 2024 pm 10:15 PM

Un incontournable pour les utilisateurs de Discuz ! Analyse complète des accessoires de renommage ! Sur le forum Discuz, la fonction de changement de nom a toujours reçu beaucoup d'attention et de demande de la part des utilisateurs. Pour certains utilisateurs qui ont besoin de changer de nom, les accessoires de changement de nom peuvent facilement modifier le nom d'utilisateur, et c'est également un moyen d'interaction intéressant. Examinons en profondeur les accessoires de renommage dans Discuz, y compris comment les obtenir, comment les utiliser et les solutions à certains problèmes courants. 1. Obtenez des accessoires de changement de nom dans Discuz. Les accessoires de changement de nom sont généralement achetés via des points ou par l'administrateur.

Que dois-je faire si je rencontre un mot de passe Discuz incorrect ? Partage de solution rapide ! Que dois-je faire si je rencontre un mot de passe Discuz incorrect ? Partage de solution rapide ! Mar 03, 2024 am 09:33 AM

Que dois-je faire si je rencontre un mot de passe Discuz incorrect ? Partage de solution rapide ! Discutez ! Il s'agit d'un programme de forum très populaire qui offre aux utilisateurs une plate-forme de communication pratique. Utiliser Discuz! Lors de l'accès à un forum, vous pouvez parfois rencontrer un mot de passe incorrect, ce qui peut empêcher les utilisateurs de se connecter et d'utiliser le forum normalement. Eh bien, rencontrez Discuz ! Lorsque le mot de passe est erroné, comment devons-nous résoudre rapidement le problème ? Certaines solutions seront partagées ci-dessous, avec des exemples de code spécifiques fournis à titre de référence. 1. Vérifiez si le mot de passe

Explication détaillée du processus d'inscription à Discuz : vous permettant de modifier facilement les informations personnelles Explication détaillée du processus d'inscription à Discuz : vous permettant de modifier facilement les informations personnelles Mar 13, 2024 pm 12:21 PM

"Explication détaillée du processus d'enregistrement de Discuz : vous permettant de modifier facilement les informations personnelles, des exemples de code spécifiques sont requis" Discuz est un puissant programme de forum communautaire largement utilisé dans divers sites Web. Il offre une multitude de fonctions d'enregistrement des utilisateurs et de modification des informations personnelles. et interfaces. Cet article vous présentera en détail le processus d'inscription de Discuz et fournira des exemples de code spécifiques pour vous aider à personnaliser et modifier facilement vos informations personnelles. 1. Processus d'enregistrement des utilisateurs Dans Discuz, l'enregistrement des utilisateurs est l'une des fonctions importantes du site. La fluidité du processus d'enregistrement et.

Discuz Editor : un outil de mise en page de publication efficace Discuz Editor : un outil de mise en page de publication efficace Mar 10, 2024 am 09:42 AM

Discuz Editor : un outil de mise en page de publication efficace avec le développement d'Internet, les forums en ligne sont devenus une plate-forme importante permettant aux gens de communiquer et de partager des informations. Dans le forum, les utilisateurs peuvent non seulement exprimer leurs opinions et idées, mais aussi discuter et interagir avec les autres. Lors de la publication d’un article, un format clair et beau peut souvent attirer plus de lecteurs et transmettre des informations plus précises. Afin de permettre aux utilisateurs de saisir et de modifier rapidement des messages, l'éditeur Discuz a vu le jour et est devenu un outil de composition de messages efficace. Disque

Guide d'opération de modification de nom de domaine Discuz Guide d'opération de modification de nom de domaine Discuz Mar 09, 2024 pm 04:36 PM

Guide d'opération de modification du nom de domaine Discuz Dans le processus d'utilisation du système de forum Discuz, nous devons parfois modifier le nom de domaine du forum. Cela peut être dû au fait que le nom de domaine doit être modifié ou que certains problèmes de résolution de nom de domaine doivent être réparés. Cet article présentera en détail comment modifier le nom de domaine dans le système de forum Discuz et donnera quelques exemples de code spécifiques. 1. Sauvegarder les données Avant d'effectuer toute opération, nous devons sauvegarder les données pour éviter toute perte de données due à des erreurs opérationnelles. Dans Discuz, vous pouvez utiliser la sauvegarde des données en arrière-plan

La connexion en arrière-plan à Discuz a échoué ? Apprenez-vous à le résoudre facilement ! La connexion en arrière-plan à Discuz a échoué ? Apprenez-vous à le résoudre facilement ! Mar 02, 2024 pm 06:03 PM

La connexion en arrière-plan à Discuz a échoué ? Apprenez-vous à le résoudre facilement ! Comme Discuz, en tant que plate-forme de forum populaire, est largement utilisé dans la construction et la gestion de sites Web, vous rencontrerez parfois des échecs de connexion au backend, ce qui est troublant. Aujourd'hui, nous allons discuter des problèmes pouvant entraîner l'échec de la connexion au backend de Discuz, fournir des solutions et joindre des exemples de code spécifiques. J'espère que cet article pourra aider les webmasters et les développeurs qui rencontrent des problèmes similaires. 1. Le dépannage consiste à résoudre le problème de l'échec de la connexion en arrière-plan de Discuz.

See all articles