ホームページ >バックエンド開発 >PHPチュートリアル >PHPを使用してBaidu mp3アドレスの暗号化モードを書き換える

PHPを使用してBaidu mp3アドレスの暗号化モードを書き換える

WBOY
WBOYオリジナル
2016-06-13 13:03:031054ブラウズ

phpを使ってBaidu mp3アドレスの暗号化方式を書き換える

Baidu mp3 アドレスは暗号化されています。具体的な暗号化方法は次のとおりです。

//copyright http://www.k686.com
 //author tuzwu58@gmail.com
                function decode(url){
                    var len = url.length;
                    var decurl = "";
                    var asc_arr1 = [], asc_arr2 = [];

                    var key = sertim % 26;
 
                  key = key ? key : 1;

                    function init(head, bottom, middle){
                        for (var i = head; i <= bottom; i++) {
                            asc_arr1[i] = i + middle;
                            asc_arr2[i + middle] = i;
                        }
                    }

                    init(0, 9, 48);
                    init(10, 35, 55);//http://www.k686.com
                    init(36, 61, 61);

                    for (var i = 0; i < len; i++) {
                        var word = url.charAt(i);
        if (/[A-Za-z0-9]/.test(word)) {
                            var pos = asc_arr2[url.charCodeAt(i)] - key;
                            if (pos < 0)
                                pos += 62;
                            word = String.fromCharCode(asc_arr1[pos]);
                        }
                        decurl += word;
                    }
                    return decurl;
                }

?

受信文字列の形式は次のとおりです:

str = "o00w://333.osq.z0h0z.nv2.ju/q5/4p14phuzopN1hun/44zn977D7A9F8G-7A.twA";
var sertim = 1289225685;

?

標準 URL アドレスに解析できるように、2 つの変数を上記の関数に組み込む必要があります。

?

以下はphpで書き換えられます:

 //copyright http://www.k686.com
 //author tuzwu58@gmail.com
                function decode($url,$sertim){
                    $len = strlen($url);
                    $decurl = "";
                    $asc_arr1 = array();
					$asc_arr2 = array();

                    $key = $sertim % 26;
 
                  $key = $key ? $key : 1;
//第1次 http://www.k686.com
                        for ($i = 0; $i <= 9; $i++) {
                            $asc_arr1[$i] = $i + 48;
                            $asc_arr2[$i + 48] = $i;
                        }
//第2次
                        for ($i = 10; $i <= 35; $i++) {
                            $asc_arr1[$i] = $i + 55;
                            $asc_arr2[$i + 55] = $i;
                        }
//第3次
                        for ($i = 36; $i <= 61; $i++) {
                            $asc_arr1[$i] = $i + 61;
                            $asc_arr2[$i + 61] = $i;
                        }
//end http://www.k686.com
                    for ($i = 0; $i < $len; $i++) {
                        $word = substr($url,$i,1);

        if (preg_match("/[A-Za-z0-9]/",$word)) {
                            $pos = $asc_arr2[ord(substr($url,$i,1))] - $key;
                            if ($pos < 0){
                                $pos += 62;
							}
                            $word = chr($asc_arr1[$pos]);
                        }
                        $decurl .= $word;
                    }

                    return $decurl;
                }
$str = 'o00w://333.osq.z0h0z.nv2.ju/q5/4p14phuzopN1hun/44zn977D7A9F8G-7A.twA';
$sertim = 1289225685;
echo decode($str,$sertim);

?

js 関数は php で書き直されており、渡される 2 つのパラメーターはまったく同じです。

?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。