深入研究 UCenter API 之 PHP加密与解密
深入研究 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 == 'DECODE') { // 验证数据有效性,请看未加密明文的格式 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 ''; } } else { // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因 // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码 return $keyc.str_replace('=', '', base64_encode($result)); } } echo authcode('123456', 'INCODE', 'scutephp', 0); echo ""; echo authcode('3575ijqlNCR+R3s7Aakwy1HlvDzHw5g4oKp82qhE7q5FS88', 'DECODE', 'scutephp', 0);

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dengan populariti e-mel dalam kehidupan seharian kita, penghantaran e-mel telah menjadi ciri penting dalam banyak aplikasi. Sebagai bahasa pembangunan web yang popular, PHP juga menyediakan antara muka API penghantaran e-mel yang sepadan. Artikel ini akan memperkenalkan antara muka API penghantaran e-mel dalam PHP kepada pemula dan pembangun, termasuk cara mengkonfigurasi pelayan mel, cara menggunakan fungsi e-mel terbina dalam PHP dan cara menggunakan perpustakaan penghantaran e-mel pihak ketiga. 1. Konfigurasikan pelayan mel Sebelum menggunakan PHP untuk menghantar mel, anda perlu mengkonfigurasi pelayan SMTP terlebih dahulu.

Laman web antara muka api percuma: 1. UomgAPI: platform yang menyediakan perkhidmatan API percuma yang stabil dan pantas, dengan lebih daripada 100 antara muka API 2. api percuma: menyediakan pelbagai antara muka API percuma 3. API JSON: menyediakan antara muka API data percuma; . Platform Terbuka AutoNavi: Menyediakan antara muka API yang berkaitan dengan peta; 5. Pengecaman muka Muka++: Menyediakan antara muka API yang berkaitan dengan pengecaman muka: Menyediakan lebih seratus antara muka API percuma, sesuai untuk pelbagai keperluan sumber; 7. Data agregat, dsb.

Antara muka API ialah spesifikasi untuk interaksi antara komponen perisian dan digunakan untuk melaksanakan komunikasi dan pertukaran data antara aplikasi atau sistem yang berbeza. Antara muka API bertindak sebagai "penterjemah", menukar arahan pembangun ke dalam bahasa komputer supaya aplikasi boleh berfungsi bersama. Kelebihannya termasuk perkongsian data yang mudah, pembangunan yang dipermudahkan, prestasi yang lebih baik, keselamatan yang dipertingkatkan, produktiviti yang lebih baik dan kesalingoperasian.

Terdapat pelbagai jenis antara muka API, termasuk API RESTful, API SOAP, API GraphQL, dll. API RESTful berkomunikasi melalui protokol HTTP, dan reka bentuknya ringkas dan cekap Ia adalah gaya reka bentuk API Web arus perdana. SOAP API adalah berdasarkan XML, memfokuskan pada kebolehoperasian merentas bahasa dan platform, dan kebanyakannya digunakan dalam perusahaan besar dan agensi kerajaan. API GraphQL ialah bahasa pertanyaan baharu dan persekitaran masa jalan yang menyokong pertanyaan dan tindak balas data yang fleksibel.

Dengan peningkatan populariti aplikasi web, API (Antara Muka Pengaturcaraan Aplikasi) menjadi semakin penting dan memainkan peranan yang semakin penting dalam pembangunan web. WebAPI ialah teknologi yang membolehkan pengguna mengakses aplikasi melalui Internet Ia adalah alat asas untuk menggabungkan aplikasi yang berbeza. PHP merupakan bahasa pengaturcaraan yang digunakan secara meluas terutamanya dalam bidang pembangunan web. Pembangun boleh membenarkan aplikasi lain menggunakan fungsi aplikasi mereka dengan membangunkan antara muka API PHP. Untuk mencapai ini

Gambaran keseluruhan cara menggunakan bahasa Go dan Redis untuk membina antara muka API: Bahasa Go (Golang) ialah bahasa pengaturcaraan yang ringkas, cekap dan berkuasa, manakala Redis ialah pangkalan data dalam memori sumber terbuka yang menyediakan struktur data yang kaya dan fungsi pertanyaan yang berkuasa. Artikel ini akan memperkenalkan cara menggunakan bahasa Go dan Redis untuk membina antara muka API dan memberikan contoh kod khusus. Langkah 1: Pasang dan konfigurasikan persekitaran bahasa Go Mula-mula, anda perlu memasang bahasa Go pada komputer anda dan tetapkan pembolehubah persekitaran yang berkaitan. Selepas melengkapkan langkah ini

Bagaimana untuk menggunakan PHP untuk memanggil antara muka API dan merealisasikan interaksi data? Dengan pembangunan aplikasi web, ramai pembangun perlu menggunakan antara muka API (Application Programming Interface) untuk melaksanakan interaksi data dengan perkhidmatan pihak ketiga. Sebagai bahasa pembangunan back-end yang biasa digunakan, PHP menyediakan fungsi yang berkuasa untuk memanggil antara muka API untuk penghantaran dan pemprosesan data. Artikel ini akan memperkenalkan cara menggunakan PHP untuk memanggil antara muka API dan menyediakan beberapa contoh kod untuk membantu pembaca memahami dengan lebih baik

Dalam era Internet hari ini, akaun rasmi WeChat telah menjadi saluran pemasaran yang penting untuk lebih banyak syarikat. Jika anda mahu akaun rasmi WeChat anda melaksanakan lebih banyak fungsi, anda selalunya perlu menulis antara muka yang sepadan. Artikel ini akan menggunakan bahasa PHP sebagai contoh untuk memperkenalkan cara membina antara muka API akaun awam WeChat. 1. Persediaan Sebelum menulis antara muka API akaun awam WeChat, pembangun perlu mempunyai akaun akaun awam WeChat dan memohon kebenaran antara muka pembangun dalam platform awam WeChat. Selepas aplikasi berjaya, anda boleh mendapatkan AppID dan AppSe pembangun yang berkaitan
