Heim Backend-Entwicklung PHP-Tutorial 深入研究 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);  

Nach dem Login kopieren

 


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Leitfaden zur E-Mail-Versand-API-Schnittstelle in PHP Leitfaden zur E-Mail-Versand-API-Schnittstelle in PHP May 21, 2023 pm 12:12 PM

Mit der Popularität von E-Mails in unserem täglichen Leben ist der E-Mail-Versand in vielen Anwendungen zu einem unverzichtbaren Merkmal geworden. Als beliebte Webentwicklungssprache bietet PHP auch eine entsprechende API-Schnittstelle zum E-Mail-Versand. In diesem Artikel wird Anfängern und Entwicklern die E-Mail-Versand-API-Schnittstelle in PHP vorgestellt, einschließlich der Konfiguration des Mailservers, der Verwendung der integrierten E-Mail-Funktionen von PHP und der Verwendung einer E-Mail-Versandbibliothek eines Drittanbieters. 1. Konfigurieren Sie den Mailserver. Bevor Sie PHP zum Senden von E-Mails verwenden, müssen Sie zunächst einen SMTP-Server konfigurieren.

Welche kostenlosen API-Schnittstellen-Websites gibt es? Welche kostenlosen API-Schnittstellen-Websites gibt es? Jan 05, 2024 am 11:33 AM

Kostenlose API-Schnittstellen-Website: 1. UomgAPI: eine Plattform, die stabile und schnelle kostenlose API-Dienste mit über 100 API-Schnittstellen bereitstellt; 2. Free-API: stellt mehrere kostenlose API-Schnittstellen bereit; 4 . AutoNavi Open Platform: Bietet kartenbezogene API-Schnittstellen; 5. Gesichtserkennung Face++: Bietet gesichtserkennungsbezogene API-Schnittstellen. 6. Geschwindigkeitsdaten: Bietet über hundert kostenlose API-Schnittstellen, die für verschiedene Anforderungen geeignet sind 7. Aggregierte Daten usw.

Was sind die wichtigsten Arten von API-Schnittstellen? Was sind die wichtigsten Arten von API-Schnittstellen? Apr 23, 2024 pm 01:57 PM

Es gibt verschiedene Arten von API-Schnittstellen, einschließlich RESTful API, SOAP API, GraphQL API usw. Die RESTful-API kommuniziert über das HTTP-Protokoll mit einem einfachen und effizienten Design, das dem aktuellen Mainstream-Web-API-Designstil entspricht. Die SOAP-API basiert auf XML, konzentriert sich auf sprachübergreifende und plattformübergreifende Interoperabilität und wird hauptsächlich in großen Unternehmen und Regierungsbehörden verwendet. Die GraphQL-API ist eine neue Abfragesprache und Laufzeitumgebung, die flexible Datenabfragen und -antworten unterstützt.

Wozu dient die API-Schnittstelle? Wozu dient die API-Schnittstelle? Apr 23, 2024 pm 01:51 PM

Eine API-Schnittstelle ist eine Spezifikation für die Interaktion zwischen Softwarekomponenten und dient der Umsetzung der Kommunikation und des Datenaustauschs zwischen verschiedenen Anwendungen oder Systemen. Die API-Schnittstelle fungiert als „Übersetzer“ und wandelt die Anweisungen des Entwicklers in Computersprache um, damit die Anwendungen zusammenarbeiten können. Zu den Vorteilen gehören ein bequemer Datenaustausch, eine vereinfachte Entwicklung, eine verbesserte Leistung, eine erhöhte Sicherheit, eine verbesserte Produktivität und Interoperabilität.

Vorsichtsmaßnahmen und Techniken beim Andocken der PHP-Tencent-Cloud-Server-API-Schnittstelle Vorsichtsmaßnahmen und Techniken beim Andocken der PHP-Tencent-Cloud-Server-API-Schnittstelle Jul 06, 2023 am 10:13 AM

Vorsichtsmaßnahmen und Tipps zur PHP-Tencent-Cloud-Server-API-Schnittstelle Tencent Cloud ist der führende inländische Anbieter von Cloud-Computing-Plattformen. Seine Cloud-Server-Produkte (CVM) werden von vielen Entwicklern und Unternehmen bevorzugt. Um eine bessere Verbindung mit Tencent Cloud-Servern herzustellen, bietet Tencent Cloud eine umfangreiche API-Schnittstelle, die Entwicklern die Durchführung verschiedener Vorgänge und Verwaltungen erleichtert. In diesem Artikel werden Dinge vorgestellt, die Aufmerksamkeit erfordern, sowie einige Techniken für die Verbindung mit der Tencent Cloud-Server-API-Schnittstelle in einer PHP-Umgebung. Gleichzeitig geben wir zur besseren Übersicht einige Codebeispiele

So erstellen Sie eine API-Schnittstelle mit der Go-Sprache und Redis So erstellen Sie eine API-Schnittstelle mit der Go-Sprache und Redis Oct 27, 2023 pm 01:23 PM

Überblick über die Verwendung der Go-Sprache und Redis zum Erstellen von API-Schnittstellen: Die Go-Sprache (Golang) ist eine prägnante, effiziente und leistungsstarke Programmiersprache, während Redis eine Open-Source-In-Memory-Datenbank ist, die umfangreiche Datenstrukturen und leistungsstarke Abfragefunktionen bietet. In diesem Artikel wird die Verwendung der Go-Sprache und Redis zum Erstellen von API-Schnittstellen vorgestellt und spezifische Codebeispiele bereitgestellt. Schritt 1: Installieren und konfigurieren Sie die Go-Sprachumgebung. Zuerst müssen Sie die Go-Sprache auf Ihrem Computer installieren und die relevanten Umgebungsvariablen festlegen. Nach Abschluss dieses Schritts

API-Dokumentation entwickeln: Eine Schritt-für-Schritt-Anleitung zu PHP-API-Schnittstellen API-Dokumentation entwickeln: Eine Schritt-für-Schritt-Anleitung zu PHP-API-Schnittstellen Jan 22, 2024 am 11:20 AM

Mit der zunehmenden Beliebtheit von Webanwendungen werden APIs (Application Programming Interfaces) immer wichtiger und spielen eine immer wichtigere Rolle in der Webentwicklung. WebAPI ist eine Technologie, die Benutzern den Zugriff auf Anwendungen über das Internet ermöglicht. Es handelt sich um ein grundlegendes Werkzeug zum Kombinieren verschiedener Anwendungen. PHP ist eine weit verbreitete Programmiersprache, insbesondere im Bereich der Webentwicklung. Entwickler können anderen Anwendungen die Nutzung ihrer Anwendungsfunktionen ermöglichen, indem sie PHP-API-Schnittstellen entwickeln. Um dies zu erreichen

Was bedeutet API-Schnittstelle? Was bedeutet API-Schnittstelle? Mar 13, 2023 pm 03:15 PM

API-Schnittstelle bedeutet Anwendungsprogrammierschnittstelle. Dabei handelt es sich um eine Reihe vordefinierter Funktionen, die Anwendungen und Entwicklern die Möglichkeit bieten, auf eine Reihe von Routinen zuzugreifen, die auf bestimmter Software oder Hardware basieren. Durch ein gutes Schnittstellendesign können die Kosten für jeden Teil des Systems gesenkt werden Verbessert den Zusammenhalt von Komponenteneinheiten und verringert den Grad der Kopplung zwischen Komponenteneinheiten, wodurch die Wartbarkeit und Skalierbarkeit des Systems verbessert wird.

See all articles