Maison développement back-end tutoriel php 求php高手,看上这一段加密算法的原理

求php高手,看上这一段加密算法的原理

Jun 13, 2016 pm 01:09 PM
code key quot str strlen

求php高手,看下这一段加密算法的原理

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->

function sys_auth($str, $action = 'encode', $key = ''){
    $key = md5($key);
    $str = $action == 'encode' ? $str : base64_decode($str);
    
    
    $strlen = strlen($str);
    
    $keylen = strlen($key);
    
    $code = '';
    for($i = 0; $i 
Copier après la connexion


我将每句都echo 下的代码:

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->

function sys_auth($str, $action = 'encode', $key = ''){
    $key = md5($key);
    echo '<br>$key:'.$key;
    $str = $action == 'encode' ? $str : base64_decode($str);
    
    echo '<br>加密方式的$str:'.$str;
    
    $strlen = strlen($str);
    echo '<br>$str长度'.$strlen;
    
    $keylen = strlen($key);
    echo '<br>$keylen长度'.$keylen;
    
    $code = '';
    for($i = 0; $i 第".$i."次循环的\$k的值是".$k;
        $code .= $str[$i] ^ $key[$k];
        echo "<br>第".$i.'次循环$k值是'.$k;
        echo "<br>第".$i.'次循环$str[$i]值是'.$str[$i];
        echo "<br>第".$i.'次循环$key[$k]值是'.$key[$k];
        echo "<br>第".$i."次循环的\$code的值是".$code."<br><br><br><br><br>";
    }
    $code = $action == "decode" ? $code : base64_encode($code);
    echo "<br>".$code;
    return $code;
}


得到的结果是:
[code=PHP]
$key:c81e728d9d4c2f636f067f89cc14862c
加密方式的$str:123456
$str长度6
$keylen长度32
第0次循环的$k的值是0
第0次循环$k值是0
第0次循环$str[$i]值是1
第0次循环$key[$k]值是c
第0次循环的$code的值是R





第1次循环的$k的值是1
第1次循环$k值是1
第1次循环$str[$i]值是2
第1次循环$key[$k]值是8
第1次循环的$code的值是R 





第2次循环的$k的值是2
第2次循环$k值是2
第2次循环$str[$i]值是3
第2次循环$key[$k]值是1
第2次循环的$code的值是R 





第3次循环的$k的值是3
第3次循环$k值是3
第3次循环$str[$i]值是4
第3次循环$key[$k]值是e
第3次循环的$code的值是R Q





第4次循环的$k的值是4
第4次循环$k值是4
第4次循环$str[$i]值是5
第4次循环$key[$k]值是7
第4次循环的$code的值是R Q





第5次循环的$k的值是5
第5次循环$k值是5
第5次循环$str[$i]值是6
第5次循环$key[$k]值是2
第5次循环的$code的值是R Q





UgoCUQIE
加密后:UgoCUQIE



Copier après la connexion

[/code]
 
现在的问题是:第0次循环$str[0]值是1,$key[0]值是c
我直接按照上面的 $str[0]^$key[0],(即1^0)却报错,怎么回事,另外 $str[0]^$key[0]不懂

------解决方案--------------------
手册,运算符
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

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

Que signifie l'attribut d'identité dans SQL ? Que signifie l'attribut d'identité dans SQL ? Feb 19, 2024 am 11:24 AM

Qu'est-ce que l'identité en SQL ? Des exemples de code spécifiques sont nécessaires. En SQL, l'identité est un type de données spécial utilisé pour générer des nombres à incrémentation automatique. Il est souvent utilisé pour identifier de manière unique chaque ligne de données dans une table. La colonne Identité est souvent utilisée conjointement avec la colonne clé primaire pour garantir que chaque enregistrement possède un identifiant unique. Cet article détaillera comment utiliser Identity et quelques exemples de code pratiques. La manière de base d'utiliser Identity consiste à utiliser Identit lors de la création d'une table.

Comment SpringBoot surveille les événements de changement de clé Redis Comment SpringBoot surveille les événements de changement de clé Redis May 26, 2023 pm 01:55 PM

1. Présentation des fonctions La notification Keyspace permet aux clients de recevoir des événements qui modifient les modifications Rediskey d'une manière ou d'une autre en s'abonnant à des canaux ou à des modèles. Toutes les commandes qui modifient les touches clés. Toutes les clés qui ont reçu la commande LPUSHkeyvalue[value…]. Toutes les clés expirées dans la base de données. Les événements sont distribués via les fonctions d'abonnement et de publication de Redis (pub/sub), de sorte que tous les clients prenant en charge les fonctions d'abonnement et de publication peuvent utiliser directement la fonction de notification de l'espace de clé sans aucune modification. Parce que les fonctions actuelles d'abonnement et de publication de Redis adoptent une stratégie fireandforget, si votre programme

La vulnérabilité non patchable de la clé d'authentification à deux facteurs Yubico brise la sécurité de la plupart des appareils Yubikey 5, Security Key et YubiHSM 2FA. La vulnérabilité non patchable de la clé d'authentification à deux facteurs Yubico brise la sécurité de la plupart des appareils Yubikey 5, Security Key et YubiHSM 2FA. Sep 04, 2024 pm 06:32 PM

Une vulnérabilité de clé d'authentification à deux facteurs Yubico non corrigible a brisé la sécurité de la plupart des appareils Yubikey 5, Security Key et YubiHSM 2FA. La JavaCard Feitian A22 et d'autres appareils utilisant les TPM de la série Infineon SLB96xx sont également vulnérables.

Comment résoudre le problème de la suppression par lots des valeurs clés dans Redis Comment résoudre le problème de la suppression par lots des valeurs clés dans Redis May 31, 2023 am 08:59 AM

Problèmes rencontrés : Au cours du processus de développement, vous rencontrerez des clés qui doivent être supprimées par lots selon certaines règles, telles que login_logID (l'ID est une variable). Vous devez maintenant supprimer des données telles que "login_log*", mais se redis. n'a qu'une requête par lots pour les valeurs de clé de classe, mais il n'y a pas de commande pour la suppression par lots d'une certaine classe. Solution : interrogez d'abord, puis supprimez, utilisez xargs pour transmettre les paramètres (xargs peut convertir les données de canal ou d'entrée standard (stdin) en paramètres de ligne de commande), exécutez d'abord l'instruction de requête, puis supprimez la valeur de clé interrogée et les paramètres del d'origine. supprimer. redis-cliKEYSkey* (condition de recherche)|xargsr

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Modifiez votre projet Unity dans Visual Studio Code et vous êtes maintenant prêt à partir Modifiez votre projet Unity dans Visual Studio Code et vous êtes maintenant prêt à partir Aug 08, 2023 am 10:21 AM

Microsoft a publié une version préliminaire de l'extension Unity pour Visual Studio Code. Cette nouvelle extension Unity vous permettra d'écrire et de déboguer des jeux Unity. Cette nouvelle extension Unity apporte certaines fonctionnalités populaires déjà disponibles dans Visual Studio et Visual Studio Tools pour Unity, améliorant ainsi C# dans Visual Studio Code pour le développement Unity. Actuellement, l'extension Unity pour VSCode fournit les éléments suivants : Un débogueur Unity pour déboguer votre éditeur Unity et votre lecteur Unity. Analyseur et refactoring C# spécifiques à Unity. Uni

Comment déterminer si un JSONObject contient une certaine clé en Java ? Comment déterminer si un JSONObject contient une certaine clé en Java ? May 08, 2023 pm 12:25 PM

Déterminer si un KeyJSONObject existe dans JSONObjectjsonObj=newJSONObject();jsonObj.put("version","1.0.0");//numéro de version jsonObj.put("encoding","UTF-8");//méthode d'encodage Déterminer si l'attribut vesion existe dans jsonObject jsonObj.has("version");//Return true pour vérifier si le k existe dans la chaîne json

Analyse du code source str de type Python intégré Analyse du code source str de type Python intégré May 09, 2023 pm 02:16 PM

1L'unité de base du stockage informatique Unicode est l'octet, composé de 8 bits. Étant donné que l'anglais ne comprend que 26 lettres et un certain nombre de symboles, les caractères anglais peuvent être stockés directement en octets. Mais d'autres langues (comme le chinois, le japonais, le coréen, etc.) doivent utiliser plusieurs octets pour le codage en raison du grand nombre de caractères. Avec la diffusion de la technologie informatique, la technologie de codage des caractères non latins continue de se développer, mais il existe encore deux limitations majeures : pas de support multilingue : le schéma de codage d'une langue ne peut pas être utilisé dans une autre langue et il n'existe pas de norme unifiée : par exemple, il existe de nombreuses normes d'encodage en chinois telles que GBK, GB2312, GB18030, etc. Étant donné que les méthodes d'encodage ne sont pas unifiées, les développeurs doivent effectuer des conversions entre différents encodages, et de nombreuses erreurs se produiront inévitablement.

See all articles