Maison >développement back-end >Problème PHP >Comment convertir un identifiant numérique et un identifiant de chaîne en php
Comment implémenter la conversion mutuelle entre les nombres php et les identifiants de chaîne : ouvrez d'abord le fichier de code PHP correspondant ; puis utilisez "alphaID(9007199254740989);" pour réaliser la conversion mutuelle entre les nombres et les identifiants de chaîne.
Recommandé : "Tutoriel vidéo PHP"
Fonction de conversion mutuelle du numéro PHP et de l'ID de chaîne (similaire à Youku ID)
Je ne sais pas si vous l'avez remarqué, mais d'autres liens vidéo comme Youku, Tencent Video, etc. semblent être similaires à celui-ci
Le code est le suivant suit :
http://v.youku.com/v_show/id_XNjA5MjE5OTM2.html
Remarque Vous ne comprenez pas la partie id_xxx, mais vous ne pouvez pas nier qu'il s'agit de l'identifiant. Un expert étranger a écrit dès le début une méthode de génération pour PHP/Python/Javascript/Java/SQL. comme 2009. On voit que je suis tellement dépassé maintenant, je posterai le code ci-dessous, en espérant que l'esprit de partage durera pour toujours.
Le code est le suivant :
<?php /** * @author Kevin van Zonneveld <kevin@vanzonneveld.net> * @author Simon Franz * @author Deadfish * @copyright 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net) * @license http://www.opensource.org/licenses/bsd-license.php New BSD Licence * @version SVN: Release: $Id: alphaID.inc.php 344 2009-06-10 17:43:59Z kevin $ * @link http://kevin.vanzonneveld.net/ * * @param mixed $in String or long input to translate * @param boolean $to_num Reverses translation when true * @param mixed $pad_up Number or boolean padds the result up to a specified length * @param string $passKey Supplying a password makes it harder to calculate the original ID * * @return mixed string or long */ function alphaID($in, $to_num = false, $pad_up = false, $passKey = null) { $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; if ($passKey !== null) { // Although this function's purpose is to just make the // ID short - and not so much secure, // with this patch by Simon Franz (http://blog.snaky.org/) // you can optionally supply a password to make it harder // to calculate the corresponding numeric ID for ($n = 0; $n<strlen($index); $n++) { $i[] = substr( $index,$n ,1); } $passhash = hash('sha256',$passKey); $passhash = (strlen($passhash) < strlen($index)) ? hash('sha512',$passKey) : $passhash; for ($n=0; $n < strlen($index); $n++) { $p[] = substr($passhash, $n ,1); } array_multisort($p, SORT_DESC, $i); $index = implode($i); } $base = strlen($index); if ($to_num) { // Digital number < 0) { $out -= pow($base, $pad_up); } } $out = sprintf('%F', $out); $out = substr($out, 0, strpos($out, '.')); } else { // Digital number -->> alphabet letter code if (is_numeric($pad_up)) { $pad_up--; if ($pad_up > 0) { $in += pow($base, $pad_up); } } $out = ""; for ($t = floor(log($in, $base)); $t >= 0; $t--) { $bcp = bcpow($base, $t); $a = floor($in / $bcp) % $base; $out = $out . substr($index, $a, 1); $in = $in - ($a * $bcp); } $out = strrev($out); // reverse } return $out; }
Exemple d'utilisation
Le code est le suivant :
<?php alphaID(9007199254740989);
Le résultat de l'exécution sera renvoyé "fE2XnNGpF", on peut le considérer comme du cryptage, pour l'antidécryptage, le
code est le suivant :
<?php alphaID('fE2XnNGpF', true);
Ensuite il est converti en un nombre réel "9007199254740989". La méthode peut également prendre en charge le cryptage à l’aide d’une clé afin que d’autres ne puissent pas déchiffrer votre véritable identifiant.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!