Avatar billede Mik2000 Professor
23. januar 2013 - 18:55 Der er 20 kommentarer og
1 løsning

Encrypt samt encrypt/decrypt

Lige lidt spørgsmål omkring krypering og dekryptering

For begge områder herunder, skal det være noget som er indbygget i PHP 5.3 og frem

Encrypt hash:
Jeg skal krypterer nogle passwords til et lille system.
md5 med salt bliver vel efterhånden ikke brugt mere.
Sha1 kan jeg også læse mig til ikke bruges mere.
1,1: Men hvad skal man så bruge?
1,2: ... og hvad betyder det for hastighed/ressourcer ift. når man bruger md5?
1,3: Og sidst bruger man salt her også?

Encrypt/decrypt
Nogle gange er det nødvendigt at jeg kan krypterer og dekrypterer noget - f.eks. data der sendes
Findes der nogle funktioner som vil egne sig til, evt. sammen med salt, at kryptere og dekrypterer?

På forhånd tak for input :)
Avatar billede olebole Juniormester
23. januar 2013 - 19:10 #1
<ole>

Her er, hvad du her brug for, hvad angår hash og salt.

Kryptering er en lidt anden enchilada, men mon ikke også arne_v har et bud på det?  =)

/mvh
</bole>
Avatar billede olebole Juniormester
23. januar 2013 - 19:22 #2
Der findes en ret effektiv krypteringsalgoritme, jeg har brugt i C#, men som jeg kan se også lader sig implementere i PHP. Du kan evt. søge videre på Rijndael og/eller AES
Avatar billede arne_v Ekspert
23. januar 2013 - 20:21 #3
SHA256 og AES128 er  fine valg for henholdsvis hashing og kryptering.
Avatar billede arne_v Ekspert
23. januar 2013 - 20:44 #4
Der boer ikke vaere nogen stor forskel paa hastighed mellem MD5 og SHA256.

Men som det fremgaar af artiklen saa ville de jo vaere en fordel hvis den var langsommere.

Man bruger ikke salt med krypering men typisk IV.
Avatar billede Mik2000 Professor
24. januar 2013 - 15:35 #5
Mange tak for svarene :)

SHA256 gik smertefrit, massere af dokumentation, og gøres på samme måde som md5.
$enc_string = hash('sha256', $salt.$string);

AES128 - knap så smertefrit. Kan ikke rigtigt finde noget dokumentation, ej heller beskrevet på php.net
Er dog kommet frem til det måske er:

openssl_encrypt("tekst der skal krypteres", ??, "password der skal bruges igen for at dekryperer")

openssl_decrypt("tekst der skal dekrypteres", ??, "password brugt til at krypterer")

Der hvor der står spørgsmålstegn er jeg lidt i tvivl om, og har også stadig lidt tvivl med om det overhovedet er AES128

Sidst forstår jeg heller ikke IV i kommentaren: "Man bruger ikke salt med krypering men typisk IV."
Avatar billede arne_v Ekspert
24. januar 2013 - 15:45 #6
Som jeg laeser http://php.net/manual/en/function.openssl-encrypt.php saa bruger den AES-128 i CBC mode.
Avatar billede arne_v Ekspert
24. januar 2013 - 15:46 #7
CBC er langbt bedre end ECB.

Se f.eks. det kendte pingvin eksempel her http://en.wikipedia.org/wiki/Cipher_block_chaining
Avatar billede arne_v Ekspert
24. januar 2013 - 15:48 #8
IV til kryptering er det ekvivalente til salt i hashing.

Samme input giver forskelligt output med forskelligt IV/salt.
Avatar billede arne_v Ekspert
24. januar 2013 - 15:58 #9
Det loeser nogen problemer bl.a. foelgende.

Lad os sige at Ole og mig kommunikerer sammen og at de aflytter os. Vi bruger AES128 og du kender ikke den key vi bruger.

Lad os sige at Ole spoerger mig om jeg vils vare paa dette spoergsmaal i klar tekst og jeg sender et svar ja eller nej krypteret.

Du kan ikke dekryptere, men du kan jo observere om jeg svarer eller ej.

I naeste uge stiller du et nyt spoergsmaal og jeg skriver til Ole om han vil svare og Ole sender et krypteret svar tilbage.

Du kan stadigvaek ikke lave en rigtig dekryptering.

Men du kan jo se om svaret er det samme som sidst.

Samme krypteret tekst => samme klar tekst

Forskellig krypteret tekst => anden klar tekst

Og er der kun mulighederne ja og nej og du ved hvad det var foerste gang, saa kan du jo reelt dekryptere anden gang.

Problemet er at AES128(klartekst='Ja') returnerer det samem hver gang.

Men AES128(iv=1234,klartekst='Ja') og AES128(iv=4321,klartekst='Ja') returnerer ikke det samme.

Saa nu begynder mig og Ole at generere et tilfaeldigt IV hver gang og bruge det i krypteringen.

Og saa kan du ikke udlede noget fra ens/forskellig krypteret tekst (de vil i praksis altid vaere forskellige nu).

Og bemaerk IV behoever ikke at vaere hemmelig. Vi kan bare sende den sammen med den krypterede besked. Du kan ikke bruge kendskab til IV til noget.
Avatar billede Mik2000 Professor
24. januar 2013 - 18:09 #10
Hej igen

Mange tak for svaret
Prøvede det lige, men synes ikke PHP genkender openssl_encrypt og openssl_decrypt selvom det er 5.3.8
Avatar billede Mik2000 Professor
24. januar 2013 - 18:11 #11
Shit ser ud til man skal have http://www.php.net/manual/en/mcrypt.setup.php

Det har jeg ikke mulighed for :(
Avatar billede arne_v Ekspert
24. januar 2013 - 18:39 #12
Avatar billede Mik2000 Professor
25. januar 2013 - 23:35 #13
Hej

Så kan jeg desværre ikke benytte det, fordi jeg ikke kan få ændret nogle ting på webhotellet.

Nogle alternativer man kan bruge uden addons, moduler, php.ini rettelser mv.?
Avatar billede arne_v Ekspert
26. januar 2013 - 00:25 #14
Hvis du hverken har mcrypt eller openssl extension, saa skal du kigge paa eb pure PHP loesning.

Proev:

http://phpseclib.sourceforge.net/
Avatar billede Mik2000 Professor
26. januar 2013 - 02:19 #15
Ser ud til der er noget - du smider bare svar og så er der point :)
Avatar billede arne_v Ekspert
26. januar 2013 - 02:22 #16
ok
Avatar billede arne_v Ekspert
26. januar 2013 - 02:24 #17
Husk at PHP er paent hurtigt til mange ting.

Men saadan noget som AES i ren PHP vil vaere endda meget langsomt i forhold til AES i en extension (extensions er kodet i C).
Avatar billede Mik2000 Professor
26. januar 2013 - 02:41 #18
Okay må høre om det kan komme på så :).

Tak for hjælpen :)
Avatar billede arne_v Ekspert
26. januar 2013 - 02:48 #19
Hvis du kun skal kryptere smaa data maengder betyder det ikke noget.

Men med store datamaengder, saa ...

Hvor mange MB/GB skal du kryptere?
Avatar billede Mik2000 Professor
26. januar 2013 - 12:43 #20
Hej

Det er kun små mængder af gangen - slet ikke op i gb, og nok generelt også en del mindre end 10 mb
Avatar billede arne_v Ekspert
26. januar 2013 - 15:40 #21
Proev og maal hvordan performance er.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester