at skabe en crypter klasse med folkesundhedsprogrammet

, skabe en crypter klasse med folkesundhedsprogrammet,,,,, 2,,,,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne artikel, vil jeg forklare, hvordan man skaber en php at afkode krypteringen klasse vil data med en given kodeord.det er imod programmeret og anvender eksisterende php algoritmer.,,,, indledning, tænke over, hvad vi har brug for en klasse som denne?vi ønsker at kryptere vigtige data med en kode af sikkerhedsmæssige årsager.vi ønsker også, som allerede nævnt, at være i stand til at afkode den data, når det er nødvendigt.hvorfor skal du bruge symmetriske algoritmer.det er nemt, når du tilbyder et password sendes via e - mail eller sådan noget, du behøver kodeordet sendes i klartekst.hash - algoritmer ikke er reversibel.når man har drøftet en snor du kan ikke afkode den oprindelige tekst fra hash.- du har allerede hørt om md 5?det er ikke den bedste løsning, fordi den har tendens til at være usikre.der er databaser rundt på nettet - - som jeg ikke vil nævne - det kan anvendes til at finde klartekst fra en hash, simpelthen ved at skrive i hash i søge en kasse.så skal du bruge noget som sha, som blev udviklet af den nationale sikkerhedsmyndighed (nsa).sha er forkortelsen for sikre en algoritme, og er et af de mest sikre hash algoritmer.der er nogle andre, som f.eks. whirlpool, panama og ripemd, men sha er i øjeblikket sikkert standard for hashes og anvendes i mange ansøgninger.,, trin 1: forberedelse, mener jeg, at det er vigtigt at skabe en grænseflade.det er, fordi vi altid kan anvende de metoder, der er fastlagt i den grænseflade, uden at tænke, når instancing et objekt i en klasse, der gennemfører denne grænseflade.når en klasse gennemfører en grænseflade, det har til at gennemføre de metoder, der skal anvendes i den grænseflade, ellers vil der være en fejl!det her er et eksempel: interface icrypter {offentlige funktion kryptering ($data), offentlige funktion dekryptere ($);} klasse crypter gennemfører icrypter {offentlige funktion kryptering ($data) {...} offentlige funktion dekryptere ($data) {...), som du kan se, er den grænseflade, pålægger de klasser, der gennemfører, icrypter, har den offentlige funktion kryptere med én parameter, $data.den offentlige funktion dekryptere har også parameter $, data.du kan prøve det, hvis en af de i klasse mangler metoder i grænsefladen, får du en fatal fejl.her er et eksempel:,, fatal fejl: klasse crypter indeholder 1 abstrakt metode, og derfor må erklæres for abstrakt eller gennemføre den resterende metoder (icrypter: dekryptere) c. www. nettuts. crypter. crypter.php på linje 32.- fejl, ikke?så du kan være sikker på, at de klasser, virkelig har metoder.,,, trin 2: password til kryptering og dekryptering, som jeg sagde før, vil vi være i stand til at anvende en særlig kode til kryptering og dekryptering.denne kode skal være tilgængeligt for kryptering - og dekryptere funktion, så vil vi definere en instans variabel, kaldet nøgle, som er gået til entreprenøren.definitionen af $nøgle, er kun nødvendig i c, rypter, klasse: private $nøgle, men definitionen af konstruktøren skal i grænseflade.derfor er det også nødvendigt, at der i klassen, for vi er nødt til at gennemføre det, vi har defineret i grænseflade.grænsefladen skal indeholde: offentlig funktion __construct ($nøgle) og klasse: offentlig funktion __construct ($centrale) {...}, men nu ved vi, at vi får en nøgle, vi kan bruge det til at kryptere og dekryptere!,,, trin 3: konstruktøren, producenten skal vi fastsætte nøglen og vælge en algoritme.vi vil bruge blowfish algoritme for dette eksempel og bruge det som en fast værdi.jeg vil forklare det lidt mere om den symmetriske algoritmer senere i teksten, men for nemheds skyld vil vi bruge kuglefisk.du kan ændre det senere, hvis du vil.så vi har brug for en anden instans variable kaldet algo: private $algo, og producenten.offentlige funktion __construct ($nøgle, $algo = mcrypt_blowfish) ($- > nøgle = substr ($nøgle, 0, mcrypt_get_key_size ($algo, mcrypt_mode_ecb) $- > algo = $algo.}, længden af den centrale afhænger af den algoritme og kryptering - tilstand.i dette eksempel, vi vil anvende ecb 's tilstand.kan du lave denne variabel, som vi allerede har gjort med algoritmen.vi bruger substring af en given nøgle med den største tilladte længde.du kan få denne længde med, mcrypt_get_key_size, funktion, som kræver den algoritme og kryptering tilstand som parametre.nu giver vi vores eksempel variable centrale korrekt nøglen til algoritme og tildele vores eksempel variable algo.så nu har vi entreprenøren.som jeg sagde før, kan du ændre den forudfastsatte værdi af algo til enhver anden algoritme, der støttes af mcrypt.liste over støtte algoritmer fra php.net:,, mcrypt_3des, mcrypt_arcfour_iv (libmcrypt > 2.4. x), mcrypt_arcfour (libmcrypt > 2.4. x), mcrypt_blowfish, mcrypt_cast_128, mcrypt_cast_256, mcrypt_crypt, mcrypt_des, mcrypt_des_compat (libmcrypt 2.2. x), mcrypt_enigma (libmcrypt > 2.4). kun, alias for mcrypt_crypt), mcrypt_gost, mcrypt_idea (ikke - fri), mcrypt_loki97 (libmcrypt > 2.4. x), mcrypt_mars (libmcrypt > 2.4. x, ikke - fri), mcrypt_panama (libmcrypt > 2.4. x), mcrypt_rijndael_128 (libmcrypt > 2,4 x kun.), mcrypt_rijndael_192 (libmcrypt > 2.4. x), mcrypt_rijndael_256 (libmcrypt > 2.4. x), mcrypt_rc2, mcrypt_rc4 (libmcrypt 2.2. x), mcrypt_rc6 (libmcrypt > 2.4. x), mcrypt_rc6_128 (libmcrypt 2.2. x), mcrypt_rc6_192 (libmcrypt 2.2. x), mcrypt_rc6_256 (libmcrypt 2.2. x), mcrypt_safer64, mcrypt_safer128, mcrypt_saferplus (libmcrypt > 2.4. x), mcrypt_serpent (libmcrypt > 2.4. x), mcrypt_serpent_128 (libmcrypt 2.2. x), mcrypt_serpent_192 (libmcrypt 2.2. x), mcrypt_serpent_256 (libmcrypt 2.2. x), mcrypt_skipjack (libmcrypt > 2.4. x), mcrypt_tean (libmcrypt 2.2. x), mcrypt_threeway, mcrypt_tripledes (libmcrypt > 2.4. x), mcrypt_twofish (for ældre mcrypt 2. x versioner eller mcrypt > 2.4. x), mcrypt_twofish128 (twofishxxx findes i nyere 2. x versioner, men ikke i 2.4. x udgaver), mcrypt_twofish192, mcrypt_twofish256, mcrypt_wake (libmcrypt > 2.4. x), mcrypt_xtea (libmcrypt > 2.4. x), og hvad skal vi bruge, når vi ønsker at bruge crypter klasse i vores produkter?i øjeblikket aes er standarden for symmetriske algoritmer.det anvendes til mange formål, men hvor er bivirkninger?aes oprindeligt blev offentliggjort som rijndael, der er opført på listen.det er en rigtig hurtigt, men sikkert, algoritme og er hurtigt med 256 bit centrale størrelse.mit råd er at anvende mcrypt_rijndael_256 for deres ansøgninger.som eksempel og aes anvendes i wpa2, som er et sikkerheds standard for wlan.,,, trin 4: nu til kryptering, første ting at se: er der nogen data for at kryptere?hvis ikke, kan du gå videre og bryde koden.hvis du ønsker at bruge andre transportformer, så har du kryptering og tilføje følgende kode.- iv_size = mcrypt_get_iv_size ($- > algo, mcrypt_mode_ecb); $iv = mcrypt_create_iv ($iv_size, mcrypt_rand); denne $iv, anvendes f.eks. i samarbejde ofb cfb, og i nogle algoritmer i stream kryptering - tilstand.hvis denne parameter ikke vedtaget i disse transportformer, $iv, fastsættes til 0 '').det næste skridt er at kryptere data med den enkle funktion mcrypt_encrypt.her har vi brug for vores algoritme, nøglen, data og kryptering - tilstand.$iv er fakultativ.$krypt = mcrypt_encrypt ($- > algo, $- > centrale, $data, mcrypt_mode_ecb $iv); endelig indkodning af krypterede data med base64_encode og trim det før du returnerer det.tilbage - (base64_encode ($krypt), er vi nødt til at base64 indkodning af krypterede data for at få url sikre data.dette er nødvendigt, fordi, hvis du ønsker at bruge krypterede data, f.eks. i en url, har du problemer med "& som det er forbeholdt karakter, der er specificeret i rfc.så du har brug for noget alfanumeriske tegn, med andre ord karakter, der er sikre.den base64 - koder leverer disse sikre tegn, hvilket er grunden til, at vi bruger det.vi ved ikke, hvad der vil ske med data efter kryptering.,,, løntrin 5: dekryptering er omvendt kryptering, har vi igen stille det samme spørgsmål.er der data?hvis der er, er du nødt til at base64_decode de data, som vi tidligere har indkodet med base64_encode.$krypt = base64_decode ($data), så den valgfri del med $iv. $iv_size = mcrypt_get_iv_size ($- > algo, mcrypt_mode_ecb); $iv = mcrypt_create_iv ($iv_size, mcrypt_rand), dekryptering med enkle funktion, mcrypt_decrypt,.her har vi brug for - næsten - de samme parametre.forskellen er, at dekryptere funktion kræver adgang til crypted data end de oprindelige data.så her er vi igen bruge algoritmen, nøglen, crypted data, kryptering tilstand og de fakultative iv. $dekryptere = mcrypt_decrypt ($- > algo, $- > centrale, $krypt, mcrypt_mode_ecb $iv); endelig tilbage den trimmede og afkodede data.returnere trim ($dekryptere);,,, eksempler, fastlægge en global crypter.i dette eksempel, vi vil bruge rijndael_256 (aes) med kodeordet "kodeord".efter instancing du kalder din funktioner eller metoder til at teste det.vi kalder den funktion, foo, og den metode, foo1,.- crypter = nye crypter ("kodeord", mcrypt_rijndael_256); foo(). $foo = nye foo(). $foo - > foo1(), kan du få din crypter fra superglobal variabel, $globals,.det er et overordnet system, så du kan ringe til alle deres globale variabler, som hedder du defineret dem med.du kan få $crypter, som er defineret uden for foo eller foo1 blok med $globals ["crypter"].funktion foo() {...$krypteret = $globals ["crypter"] - > kryptering ($); $dekrypteret = $globals ["crypter"] - > dekryptere ($krypterede).> klasse foo {offentlige funktion foo1() {...$krypteret = $globals ["crypter"] - > kryptering ($); $dekrypteret = $globals ["crypter"] - > dekryptere ($krypterede).}}, indgåelse, nu har du en komplet crypter klasse, og det kan grav og dekryptere så mange gange, som du ønsker.download den fuldstændige kildekode med et godt eksempel, hvis du ikke ønsker at skrive den selv. jeg håber, at de har nydt godt af denne artikel.








Previous:
Next Page: