ohmygod Posted January 19, 2010 Report Share Posted January 19, 2010 IR nepieciešama metode, ar kuru droši aizkodēt un atkodēt nosūtāmos datus starp php un adobe FLEX aplikāciju. Tipa ar salt, base64 kodē abos virzienos, bet bez salt :/ vajag, lai ir salt. Vienvārdsakot nepieciešams nosargāt daļu nosūtāmo/saņemamo datu no galalietotāja. Salt flašs saņems no inklūdojama swf, kurš katram userim uz sesiju ģenerējas jauns. Quote Link to comment Share on other sites More sharing options...
bubu Posted January 20, 2010 Report Share Posted January 20, 2010 Nesapratu. Tu gribi šifrēt datus, kuri tiks atšifrēti pašā flešā uz lietotāja datora? Kas lietotājam liegs apskatīties kā tu to atšifrē/aizšifrē un simulēt šo darību pa savam? Kur jēga? Quote Link to comment Share on other sites More sharing options...
ohmygod Posted January 20, 2010 Author Report Share Posted January 20, 2010 (edited) vajag, lai vienreiz padodot: "Roma" no php uz FLEX - pa ceļam ir redzams tikai aizšifrēts vārds Roma. Rezultātu lietotājam parāda flex. Kā viņam pašam to atšifrēt, ja atslēga būs mainīga un nebūs viņam pieejama? Es saprotu, ka pastāv dažādi flash dekompilatori, bet man vajag panākt, lai uz uz kādu no php dotu vārdu lietotājs nevar automātiski padot atpakaļ viņa sagatavotu atbildi. Ja kādam ļooti vajadzēt - visu var izdarīt, bet vajag kā minimums, lai nav vienkārši to izdarīt un man jau uzreiz atkritīs 99% feika. Nosūtāmiem datiem ir nenormāli daudz variāciju, tāpēc neder iepriekš sagatavotas atbildes, vajag on fly. Edited January 20, 2010 by ohmygod Quote Link to comment Share on other sites More sharing options...
2easy Posted January 20, 2010 Report Share Posted January 20, 2010 (edited) ja tev vajag tikai muļķu drošu sistēmu (lai pa http ceļo viegli nošifrēts vārds), taču ir ok, ja dekompilētāji un kripteri to var easy uzlauzt, tad kā salt var izmantot skaitli: $iSalt = rand(1, 255); katram vārda baitam pieskaiti šo sāli pēc moduļa 256 un iegūsi citu baitu: for ($i = 0; $i < strlen($sVards); $i++) $sVards[$i] = chr((ord($sVards[$i]) + $iSalt) % 256); līdzīgi vārdu atkodē iekš tā FLEX tikai tur šo sāli atņem no katra baita, un beigās iegūst sākotnējo vārdu. nobīde/aizvietošana laikam bija viens no pašiem vnkāršākajiem kriptogrāfijas veidiem EDIT: uzlabojums iepriekšējam algoritmam: lai mazliet sarežģītu dekriptēšanas darbu, katru nākamo baitu var pārveidot ar mazliet citu sāli - lielāku/mazāku nekā iepriekšējo, izmantojot aritmētisko vai ģeometrisko progresiju. tad nevarēs tā vnkārši apskatīt 256 variantus, kur viegli būtu redzams sākotnējais vārds // $s - source string // $iSalt - byte shift // $iPepper - progresijas solis (priekš mazliet paātrinātas++ aritmētiskās progresijas :D) function easyCrypt($s, $iSalt, $iPepper) { $s2 = chr($iSalt) . chr($iPepper); for ($i = 0; $i < strlen($s); $i++) { $iSalt += $iPepper++; $s[$i] = chr((ord($s[$i]) + $iSalt) % 256); } return $s2 . $s; } function easyDecrypt($s) { $iSalt = ord($s[0]); $iPepper = ord($s[1]); $s = substr($s, 2); for ($i = 0; $i < strlen($s); $i++) { $iSalt += $iPepper++; $s[$i] = chr((ord($s[$i]) - $iSalt) % 256); } return $s; } imho, kamēr krakeri nezinās šo datu formātu un algoritmu, viņiem vieglāk būs dekompilēt tavu FLEX, lai saprastu, kas tur notiek, nekā no ārpuses mēģināt uzminēt, kā ir nošifrēts vārds :D EDIT2: un gan "sāls", gan "pipari" ir 1x baits. iesaku tos uzģenerēt šādi $iSalt = rand(1, 255); $iPepper = rand(1, 255); Edited January 20, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
ohmygod Posted January 20, 2010 Author Report Share Posted January 20, 2010 (edited) ty 2easy. Būšu tagad uz AS šito arī pārnest mēģināt (: Neesmu dikti lielos draugos ar AS, bet neizskatās traki. Edited January 20, 2010 by ohmygod Quote Link to comment Share on other sites More sharing options...
2easy Posted January 20, 2010 Report Share Posted January 20, 2010 AS jau tas pats JS vien ir (vismaz agrāk pirms AS3 tā bija). kr4 abi ir ECMAScript, tb balstās uz ECMA-262 standartu http://www.ecma-international.org/publications/standards/Ecma-262.htm tāpēc, iespējams, šīs js funkcijas 1:1 var izmantot arī iekš AS function easyCrypt(s, iSalt, iPepper) { var s2 = String.fromCharCode(iSalt) + String.fromCharCode(iPepper); for (var i = 0; i < s.length; i++) { iSalt += iPepper++; s2 += String.fromCharCode((s.charCodeAt(i) + iSalt) % 256); } return s2; } function easyDecrypt(s) { var iSalt = s.charCodeAt(0); var iPepper = s.charCodeAt(1); var c, s2 = ""; s = s.substr(2); for (var i = 0; i < s.length; i++) { iSalt += iPepper++; c = (s.charCodeAt(i) - iSalt) % 256; s2 += String.fromCharCode(c < 0 ? c + 256 : c); } return s2; } function rand(iMin, iMax) {return iMin + Math.floor(Math.random() * (iMax - iMin + 1));} Quote Link to comment Share on other sites More sharing options...
2easy Posted January 28, 2010 Report Share Posted January 28, 2010 piebilde par nokriptēto datu sūtīšanu (http: client <-> server) tā kā nokriptētajos datos var būt jebkādi baiti, tai skaitā 0 (kas nozīmē stringa beigas), tad lai sūtīšanas laikā nerastos datu zudumi vai kādi citi blakus efekti, nokriptētos datus iekodē ar base64_encode() (un otrā galā atkodē :D) base64 kodējums pārveido sākotnējos datus, izmantojot tikai šos simbolus ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ kurus var droši sūtīt pa tīklu un nekādas problēmas ar tiem neradīsies ;) http://php.net/manual/en/function.base64-encode.php This encoding is designed to make binary data survive transport through transport layers that are not 8-bit clean, such as mail bodies. Quote Link to comment Share on other sites More sharing options...
bubu Posted January 28, 2010 Report Share Posted January 28, 2010 Neredzu iemeslu kāpēc lai nevarētu http sūtījums saturēt baitu 0. Ja nevarētu, tad mēs neviens nevarētu apskatīties jpeg/png bildes u.c. binārus failus internetā. Quote Link to comment Share on other sites More sharing options...
2easy Posted January 28, 2010 Report Share Posted January 28, 2010 (edited) tas ko tu saki, izklausās ticami ^^ vnk viņš man rakstīja pm un teica, ka pa taisno sūtot nokriptētos datus, ir bijušas problēmas: datu zudumi un vēl tur kkādi prikoli. tad es ieteicu šo variantu. iespējams, ka tā applikācija klienta galā neņem pretī kādu baitu un sāk gļučīt. hvz, es jau to tālāk par php/js nemaz netestēju Edited January 28, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.