Maison développement back-end tutoriel php 深入研究 UCenter API 之 PHP加密与解密

深入研究 UCenter API 之 PHP加密与解密

Jun 20, 2016 pm 01:02 PM
api接口

深入研究 UCenter API 之 PHP加密与解密

UCenter API 中的加密解密函数,被称为 php 领域的经典之作,也是康盛公司为 php 做的一大贡献

这个函数,可以通过一个 KEY ,生成动态的密文,并可以再通过这个 KEY 来解

 

  
// $string: 明文 或 密文   
// $operation:DECODE表示解密,其它表示加密   
// $key: 密匙   
// $expiry:密文有效期   
//字符串解密加密   
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {   
     // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙   
    $ckey_length = 4;   // 随机密钥长度 取值 0-32;   
                // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。   
                // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方   
                // 当此值为 0 时,则不产生随机密钥   
    // 密匙   
    $key = md5($key ? $key : UC_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('1303808563'), -$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 <= 255; $i++) {   
        $rndkey[$i] = ord($cryptkey[$i % $key_length]);   
     }   
     // 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度   
    for($j = $i = 0; $i < 256; $i++) {   
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;   
        $tmp = $box[$i];   
        $box[$i] = $box[$j];   
        $box[$j] = $tmp;   
     }   
    // 核心加解密部分   
    for($a = $j = $i = 0; $i < $string_length; $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 == &#39;DECODE&#39;) {   
        // 验证数据有效性,请看未加密明文的格式   
        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 &#39;&#39;;   
         }   
     } else {   
         // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因   
         // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码   
        return $keyc.str_replace(&#39;=&#39;, &#39;&#39;, base64_encode($result));   
     }   
}  
echo authcode(&#39;123456&#39;, &#39;INCODE&#39;, &#39;scutephp&#39;, 0);  
echo "";  
echo authcode(&#39;3575ijqlNCR+R3s7Aakwy1HlvDzHw5g4oKp82qhE7q5FS88&#39;, &#39;DECODE&#39;, &#39;scutephp&#39;, 0);  

Copier après la connexion

 


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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Guide de l'interface API d'envoi d'e-mails en PHP Guide de l'interface API d'envoi d'e-mails en PHP May 21, 2023 pm 12:12 PM

Avec la popularité du courrier électronique dans notre quotidien, l’envoi d’e-mails est devenu une fonctionnalité essentielle dans de nombreuses applications. En tant que langage de développement Web populaire, PHP fournit également une interface API d'envoi d'e-mails correspondante. Cet article présentera l'interface API d'envoi d'e-mails en PHP aux débutants et aux développeurs, notamment comment configurer le serveur de messagerie, comment utiliser les fonctions de messagerie intégrées de PHP et comment utiliser une bibliothèque d'envoi d'e-mails tierce. 1. Configurez le serveur de messagerie Avant d'utiliser PHP pour envoyer du courrier, vous devez d'abord configurer un serveur SMTP.

Quels sont les sites Web à interface API gratuite ? Quels sont les sites Web à interface API gratuite ? Jan 05, 2024 am 11:33 AM

Site Web d'interface API gratuite : 1. UomgAPI : une plate-forme qui fournit des services API gratuits stables et rapides, avec plus de 100 interfaces API ; 2. free-api : fournit plusieurs interfaces API gratuites ; 3. API JSON : fournit une interface API de données gratuite ; . AutoNavi Open Platform : fournit des interfaces API liées aux cartes ; 5. Reconnaissance faciale Face++ : fournit des interfaces API liées à la reconnaissance faciale ; 6. Speed ​​​​Data : fournit plus d'une centaine d'interfaces API gratuites, adaptées à divers besoins dans le cas des données ; sources ; 7. Données agrégées, etc.

Quels sont les principaux types d'interfaces API ? Quels sont les principaux types d'interfaces API ? Apr 23, 2024 pm 01:57 PM

Il existe différents types d'interfaces API, notamment l'API RESTful, l'API SOAP, l'API GraphQL, etc. L'API RESTful communique via le protocole HTTP, avec une conception simple et efficace, qui est le style de conception actuel de l'API Web. L'API SOAP est basée sur XML, se concentre sur l'interopérabilité entre les langues et les plates-formes et est principalement utilisée dans les grandes entreprises et les agences gouvernementales. L'API GraphQL est un nouveau langage de requête et environnement d'exécution qui prend en charge les requêtes et réponses de données flexibles.

A quoi sert l'interface API ? A quoi sert l'interface API ? Apr 23, 2024 pm 01:51 PM

Une interface API est une spécification d'interaction entre des composants logiciels et est utilisée pour mettre en œuvre la communication et l'échange de données entre différentes applications ou systèmes. L'interface API agit comme un « traducteur », convertissant les instructions du développeur en langage informatique afin que les applications puissent fonctionner ensemble. Ses avantages incluent un partage pratique des données, un développement simplifié, des performances améliorées, une sécurité renforcée, une productivité et une interopérabilité améliorées.

Développer la documentation de l'API : un guide étape par étape des interfaces API PHP Développer la documentation de l'API : un guide étape par étape des interfaces API PHP Jan 22, 2024 am 11:20 AM

Avec la popularité croissante des applications Web, les API (Application Programming Interfaces) deviennent de plus en plus importantes et jouent un rôle de plus en plus important dans le développement Web. WebAPI est une technologie qui permet aux utilisateurs d'accéder à des applications via Internet. Il s'agit d'un outil de base pour combiner différentes applications. PHP est un langage de programmation largement utilisé, notamment dans le domaine du développement web. Les développeurs peuvent permettre à d'autres applications d'utiliser leurs fonctionnalités d'application en développant des interfaces API PHP. Pour y parvenir

Comment créer une interface API en utilisant le langage Go et Redis Comment créer une interface API en utilisant le langage Go et Redis Oct 27, 2023 pm 01:23 PM

Présentation de l'utilisation du langage Go et de Redis pour créer des interfaces API : le langage Go (Golang) est un langage de programmation concis, efficace et puissant, tandis que Redis est une base de données open source en mémoire qui fournit des structures de données riches et de puissantes fonctions de requête. Cet article explique comment utiliser le langage Go et Redis pour créer des interfaces API et fournit des exemples de code spécifiques. Étape 1 : Installez et configurez l'environnement du langage Go. Tout d'abord, vous devez installer le langage Go sur votre ordinateur et définir les variables d'environnement appropriées. Après avoir terminé cette étape

Utilisez PHP pour créer une interface API de compte public WeChat Utilisez PHP pour créer une interface API de compte public WeChat May 13, 2023 pm 12:01 PM

À l’ère d’Internet d’aujourd’hui, les comptes officiels WeChat sont devenus un canal de marketing important pour de plus en plus d’entreprises. Si vous souhaitez que votre compte officiel WeChat implémente plus de fonctions, vous devez souvent écrire les interfaces correspondantes. Cet article utilisera le langage PHP comme exemple pour présenter comment créer une interface API de compte public WeChat. 1. Préparation Avant d'écrire l'interface API du compte public WeChat, le développeur doit disposer d'un compte de compte public WeChat et demander les autorisations d'interface de développeur sur la plateforme publique WeChat. Une fois l'application réussie, vous pouvez obtenir les développeurs AppID et AppSe appropriés.

Comment utiliser PHP pour appeler l'interface API et réaliser l'interaction des données ? Comment utiliser PHP pour appeler l'interface API et réaliser l'interaction des données ? Sep 05, 2023 am 09:30 AM

Comment utiliser PHP pour appeler l'interface API et réaliser l'interaction des données ? Avec le développement d'applications Web, de nombreux développeurs doivent utiliser des interfaces API (Application Programming Interface) pour mettre en œuvre l'interaction des données avec des services tiers. En tant que langage de développement back-end couramment utilisé, PHP fournit des fonctions puissantes pour appeler des interfaces API pour la transmission et le traitement des données. Cet article explique comment utiliser PHP pour appeler l'interface API et fournit quelques exemples de code pour aider les lecteurs à mieux comprendre.

See all articles