Position actuelle: Accueil> Derniers articles> Comment implémenter une logique complexe de cryptage et de décryptage des chaînes via MB_ERG_REPLACE_CALLBACK?

Comment implémenter une logique complexe de cryptage et de décryptage des chaînes via MB_ERG_REPLACE_CALLBACK?

M66 2025-08-05

Comment implémenter une logique complexe de cryptage et de décryptage des chaînes via MB_ERG_REPLACE_CALLBACK?

Dans PHP, la fonction MB_EREG_REPLACE_CALLBACK appartient à l'une des fonctions de la bibliothèque d'extension MBSTring . Il nous permet d'utiliser des expressions régulières pour faire correspondre les chaînes et exécuter les fonctions de rappel pendant le processus de correspondance pour modifier dynamiquement le contenu de la chaîne. Cette fonctionnalité rend MB_ERG_REPLACE_CALLBACT très utile lors de la gestion du cryptage et du déchiffrement complexes de chaîne. Cet article vous guidera pour comprendre comment implémenter le chiffrement et le décryptage des chaînes via MB_ERG_REPLACE_CALLBACK .

1. Quelle est la fonction MB_EREG_REPLACE_CALLBACK?

MB_ERG_REPLACE_CALLBACK est une fonction fournie par l'extension MBSTring en PHP. Sa fonction est d'utiliser des expressions régulières pour trouver des chaînes, de remettre la partie correspondante à une fonction de rappel, puis de remplacer le contenu correspondant d'origine. Le prototype de la fonction est le suivant:

 <span><span><span class="hljs-title function_ invoke__">mb_ereg_replace_callback</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
  • $ Pattern : une expression régulière qui correspond au contenu spécifique dans la chaîne cible.

  • $ rappel : la fonction de rappel, lorsque le contenu correspondant apparaît, la fonction sera appelée pour traiter le contenu.

  • $ String : la chaîne cible, que la fonction traitera.

2. Idées de base pour le cryptage et le décryptage

Pour implémenter le chiffrement et le décryptage des chaînes via MB_ERG_REPLACE_CALLBACK , nous devons définir deux logiques:

  1. Encryption : convertissez chaque caractère dans une chaîne en un caractère chiffré selon une règle.

  2. Decryption : Restaurez la chaîne cryptée dans la chaîne d'origine.

La logique de chiffrement et de décryptage peut être implémentée à l'aide de compensations de caractères simples, telles que l'augmentation ou la diminution de la valeur ASCII d'un caractère d'un certain montant.

3. Implémentez le chiffrement des chaînes

Pendant le processus de chiffrement, nous pouvons choisir de compenser chaque caractère dans la chaîne. Par exemple, ajoutez la valeur ASCII d'un caractère à une valeur fixe. Voici un exemple de cryptage à l'aide de MB_ERG_REPLACE_CALLBACK :

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Fonction de rappel cryptée</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">encrypt_callback</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
    </span><span><span class="hljs-comment">// Obtenez des personnages assortis</span></span><span>
    </span><span><span class="hljs-variable">$char</span></span><span> = </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>];
    </span><span><span class="hljs-comment">// Convertir les caractères en ASCII Valeur et ajouter 3</span></span><span>
    </span><span><span class="hljs-variable">$ascii</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-variable">$char</span></span><span>) + </span><span><span class="hljs-number">3</span></span><span>;
    </span><span><span class="hljs-comment">// Crypté ASCII Convertir la valeur en caractère</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$ascii</span></span><span>);
}

</span><span><span class="hljs-comment">// Corde à crypter</span></span><span>
</span><span><span class="hljs-variable">$input_string</span></span><span> = </span><span><span class="hljs-string">"Hello, World!"</span></span><span>;
</span><span><span class="hljs-comment">// Faites correspondre chaque personnage à l&#39;expression régulière et crypte</span></span><span>
</span><span><span class="hljs-variable">$encrypted_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_ereg_replace_callback</span></span><span>(</span><span><span class="hljs-string">'[A-Za-z0-9]'</span></span><span>, </span><span><span class="hljs-string">'encrypt_callback'</span></span><span>, </span><span><span class="hljs-variable">$input_string</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Encrypted: "</span></span><span> . </span><span><span class="hljs-variable">$encrypted_string</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

expliquer:

  • La fonction ECRYPT_CALLBACK crypte chaque caractère correspondant, ajoutant la valeur ASCII du caractère à 3.

  • L'expression régulière [A-ZA-Z0-9] correspond à toutes les lettres et nombres.

  • MB_ERG_REPLACE_CALLBACK appellera la fonction encrypt_callback pour traiter la chaîne et générer la chaîne cryptée.

4. Implémentez le décryptage des chaînes

Le processus de décryptage est un processus inverse des opérations de chiffrement. Autrement dit, nous devons seulement soustraire la valeur ASCII du caractère du décalage utilisé pendant le cryptage. Voici un exemple de code déchiffré:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Décrypter la fonction de rappel</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">decrypt_callback</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
    </span><span><span class="hljs-comment">// Obtenez des personnages assortis</span></span><span>
    </span><span><span class="hljs-variable">$char</span></span><span> = </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>];
    </span><span><span class="hljs-comment">// Convertir les caractères en ASCII Valeur et soustraire 3</span></span><span>
    </span><span><span class="hljs-variable">$ascii</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-variable">$char</span></span><span>) - </span><span><span class="hljs-number">3</span></span><span>;
    </span><span><span class="hljs-comment">// Les décryptés ASCII Convertir la valeur en caractère</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$ascii</span></span><span>);
}

</span><span><span class="hljs-comment">// Corde cryptée</span></span><span>
</span><span><span class="hljs-variable">$encrypted_string</span></span><span> = </span><span><span class="hljs-string">"Khoor, Zruog!"</span></span><span>;
</span><span><span class="hljs-comment">// Faites correspondre chaque personnage avec une expression régulière et décryptez-le</span></span><span>
</span><span><span class="hljs-variable">$decrypted_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_ereg_replace_callback</span></span><span>(</span><span><span class="hljs-string">'[A-Za-z0-9]'</span></span><span>, </span><span><span class="hljs-string">'decrypt_callback'</span></span><span>, </span><span><span class="hljs-variable">$encrypted_string</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Decrypted: "</span></span><span> . </span><span><span class="hljs-variable">$decrypted_string</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

expliquer:

  • La fonction decrypt_callback effectue une opération de décryptage sur chaque caractère correspondant, en soustrayant la valeur ASCII du caractère par 3.

  • De même, utilisez l'expression régulière [A-ZA-Z0-9] pour correspondre à toutes les lettres et nombres et aux fonctions de rappel pour traiter la chaîne cryptée.

5. Scénarios d'application pratiques

Cette méthode de chiffrement et de décryptage basée sur MB_ERG_REPLACE_CALLBACH est très adaptée à une utilisation lors de la gestion de la logique de chiffrement simple, en particulier lorsque le contenu de la chaîne est relativement unique et que le jeu de caractères est limité. Il peut nous aider à modifier dynamiquement les chaînes et à effectuer des opérations de chiffrement et de décryptage complexes. Bien que cette méthode convient aux scénarios simples, il est recommandé d'utiliser des algorithmes de cryptage matures (comme AES, RSA, etc.) pour des exigences de cryptage plus complexes.

6. Résumé

Via MB_ERG_REPLACE_CALLBACK , nous pouvons facilement implémenter la logique de cryptage et de décryptage des chaînes. Cette fonction combine les fonctions puissantes des expressions et des fonctions de rappel régulières et peut appliquer de manière flexible diverses règles complexes pendant le traitement des chaînes. Cependant, cette méthode de chiffrement convient principalement aux scénarios simples. Pour les applications qui ont des exigences de sécurité plus élevées dans les environnements de production, une technologie de chiffrement plus professionnelle devrait être utilisée.