2009-10-29 52 views
0

這個函數是用ActionScirpt編寫的。這是什麼樣的解密? PHP中是否有這個函數的函數?這是什麼解密方法?

function decrypt(str, key1, key2) { 
    var v1 = []; 
    var v3 = 0; 
    while (v3 < str.length) { 
    switch (str.charAt(v3)) { 
     case '0': 
     v1.push('0000'); 
     break; 
     case '1': 
     v1.push('0001'); 
     break; 
     case '2': 
     v1.push('0010'); 
     break; 
     case '3': 
     v1.push('0011'); 
     break; 
     case '4': 
     v1.push('0100'); 
     break; 
     case '5': 
     v1.push('0101'); 
     break; 
     case '6': 
     v1.push('0110'); 
     break; 
     case '7': 
     v1.push('0111'); 
     break; 
     case '8': 
     v1.push('1000'); 
     break; 
     case '9': 
     v1.push('1001'); 
     break; 
     case 'a': 
     v1.push('1010'); 
     break; 
     case 'b': 
     v1.push('1011'); 
     break; 
     case 'c': 
     v1.push('1100'); 
     break; 
     case 'd': 
     v1.push('1101'); 
     break; 
     case 'e': 
     v1.push('1110'); 
     break; 
     case 'f': 
     v1.push('1111'); 
    } 
    ++v3; 
    } 
    v1 = (v1.join('')).split(''); 
    var v6 = []; 
    v3 = 0; 
    while (v3 < 384) { 
    key1 = (key1 * 11 + 77213) % 81371; 
    key2 = (key2 * 17 + 92717) % 192811; 
    v6[v3] = (key1 + key2) % 128; 
    ++v3; 
    } 
    v3 = 256; 
    while (v3 >= 0) { 
    var v5 = v6[v3]; 
    var v4 = v3 % 128; 
    var v8 = v1[v5]; 
    v1[v5] = v1[v4]; 
    v1[v4] = v8; 
    --v3; 
    } 
    v3 = 0; 
    while (v3 < 128) { 
    v1[v3] ^= v6[v3 + 256] & 1; 
    ++v3; 
    } 
    var v12 = v1.join(''); 
    var v7 = []; 
    v3 = 0; 
    while (v3 < v12.length) { 
    var v9 = v12.substr(v3, 4); 
    v7.push(v9); 
    v3 += 4; 
    } 
    var v2 = []; 
    v3 = 0; 
    while (v3 < v7.length) { 
    switch (v7[v3]) { 
     case '0000': 
     v2.push('0'); 
     break; 
     case '0001': 
     v2.push('1'); 
     break; 
     case '0010': 
     v2.push('2'); 
     break; 
     case '0011': 
     v2.push('3'); 
     break; 
     case '0100': 
     v2.push('4'); 
     break; 
     case '0101': 
     v2.push('5'); 
     break; 
     case '0110': 
     v2.push('6'); 
     break; 
     case '0111': 
     v2.push('7'); 
     break; 
     case '1000': 
     v2.push('8'); 
     break; 
     case '1001': 
     v2.push('9'); 
     break; 
     case '1010': 
     v2.push('a'); 
     break; 
     case '1011': 
     v2.push('b'); 
     break; 
     case '1100': 
     v2.push('c'); 
     break; 
     case '1101': 
     v2.push('d'); 
     break; 
     case '1110': 
     v2.push('e'); 
     break; 
     case '1111': 
     v2.push('f'); 
    } 
    ++v3; 
    } 
    return v2.join(''); 
} 
+2

不是一個非常安全的。 – 2009-10-29 16:25:25

回答

0

它看起來像它在單字節的二進制值轉換的十六進制值,並推動他們到堆棧(雖然這些值可能不是真正的單字節存儲。)然後還有第二個case語句做反向操作。

還有一些擾碼或解擾(乘以指定的值,然後添加一個指定的數字,然後模塊劃分);傳入的字符串。對於finally模塊128操作,加入的字符串看起來像某人返回有效的ASCII代碼以基於加入的字符串的散列值寫入磁盤。不過,在我看來,你會碰到很多碰撞事件;但也許不是。如果原始數據集只包含ASCII值,我想它可能會工作得很好。

1

這是megavideo的鏈接解密代碼。許多人已經將它移植到PHP - 只是谷歌。

+0

你是絕對正確的。這裏有一個鏈接:http://userscripts.org/scripts/review/42944 它似乎有一些流媒體視頻和廣告移除非常具體的用途。 – Cynthia 2009-12-16 16:54:23

相關問題