Rumah pembangunan bahagian belakang tutorial php 深入研究 UCenter API 之 PHP加密与解密

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

Jun 20, 2016 pm 01:02 PM
antara muka 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);  

Salin selepas log masuk

 


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Antara Muka API Menghantar E-mel dalam PHP Panduan Antara Muka API Menghantar E-mel dalam PHP May 21, 2023 pm 12:12 PM

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.

Apakah tapak web antara muka API percuma? Apakah tapak web antara muka API percuma? Jan 05, 2024 am 11:33 AM

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.

Apakah antara muka API untuk? Apakah antara muka API untuk? Apr 23, 2024 pm 01:51 PM

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.

Apakah jenis utama antara muka API? Apakah jenis utama antara muka API? Apr 23, 2024 pm 01:57 PM

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.

Membangunkan dokumentasi API: Panduan langkah demi langkah untuk antara muka API PHP Membangunkan dokumentasi API: Panduan langkah demi langkah untuk antara muka API PHP Jan 22, 2024 am 11:20 AM

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

Cara membina antara muka API menggunakan bahasa Go dan Redis Cara membina antara muka API menggunakan bahasa Go dan Redis Oct 27, 2023 pm 01:23 PM

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? Bagaimana untuk menggunakan PHP untuk memanggil antara muka API dan merealisasikan interaksi data? Sep 05, 2023 am 09:30 AM

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

Gunakan PHP untuk membina antara muka API akaun awam WeChat Gunakan PHP untuk membina antara muka API akaun awam WeChat May 13, 2023 pm 12:01 PM

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

See all articles