Jump to content

Saber a encriptação dos dados


saramgsilva

Recommended Posts

Boas,

Num sistema de registo de dados, que envolve por exemplo senha, usa-se normalmente a encriptação de dados. Uma função que o php oferece é a função md5, que converte uma string ( <32 char ) numa string de 32 caracteres.

Vou apresentar um pequeno script, que ao dar uma stringdevolve-me a sua encriptação, usando a função md5

encriptar.php

<form action="encriptar.php" method="POST" >
<input type="text" value="" name="palavra" size="20" maxlength="32">
<input type="submit" value=" Envia " name="validar" >
</form>
<?php
$codigo=md5($_POST['palavra']);
echo($codigo);
?>

Podem apresentar outras funções de  encriptação que existe no php 😄

Link to comment
Share on other sites

desculpa "contrariar-te", mas o md5 não é uma função de cifra, embora pertença ao universo da criiptografia.

o md5 é um algoritmo de assinatura descrito no RFC http://www.ietf.org/rfc/rfc2831.txt

Ou seja, é uma função de um só sentido, sem inversa.

se guardares uma assinatura MD5 de uma password, nunca poderás recuperar a password original 😉

Podes sim, cada vez que alguém introduz uma password, assinares (MD5) o input e verificar se o resultado obtido é igual à assinatura guardada.

Se for, então estás na presença de alguém que sabe a password . pois Existe apenas um  (Password,Assinatura)  : MD5(Password)=Assinatura

a função MD5 do php, se não me engano dá como resultado dois formatos:

32 char em hexadecimal.

16 raw binary.

normalmente usa-se o 32 char hex para armazenamento.

/ing

I used to have a life ... but i bought a programmable machine in 1982 ...

Link to comment
Share on other sites

se guardares uma assinatura MD5 de uma password, nunca poderás recuperar a password original Smiley

inginheiiro tira-me duas duvida.... no MD5 não sei se se já é possivel mas se não estou em erro li um texto algures na internet que falava soubre o MD4 e já existiam algoritmos capase de chegar a password em poucos minutos. Com MD5 istu tb ja é possivel?

Podes sim, cada vez que alguém introduz uma password, assinares (MD5) o input e verificar se o resultado obtido é igual à assinatura guardada.

Se for, então estás na presença de alguém que sabe a password . pois Existe apenas um  (Password,Assinatura)  : MD5(Password)=Assinatura

A outra duvida é como pode istu ser possivel se é possivel fazer mais combinações com as letras do abcedario com os numeros e com alguns caracteres como o "_" e o "." por exemplo, do que com uma string de 32 caracteres em hexadecimal? Não tenho a certesa mas penso que é possivel que 2 strings diferentes tenhao a mesma hash(penso que é asism que se chama 😛 )

Mais umas curiosidades :

http://en.wikipedia.org/wiki/MD5

cumps

Link to comment
Share on other sites

inginheiiro tira-me duas duvida.... no MD5 não sei se se já é possivel mas se não estou em erro li um texto algures na internet que falava soubre o MD4 e já existiam algoritmos capase de chegar a password em poucos minutos. Com MD5 istu tb ja é possivel?

É verdade que foram descobertas falhas nos algoritmos de assinatura MD5 (128bits) e SHA-1(160bits). O Apache por exemplo usa extensivamente o MD5, enquanto que o PGP e o SSL usam SHA-1.

Através da exploração da falha detectada, em algumas horas consegue-se gerar colisões hash para o MD5. ISTO é apenas o ínicio de um POSSIVEL ataque, ou seja: Deste ponto até se descobrir a função inversa , ainda se leva muito tempo ...

A solução passa por passar a usar outros algoritmos de assinatura SHA-1 p.ex. (mais robusto), etc etc.

A outra duvida é como pode istu ser possivel se é possivel fazer mais combinações com as letras do abcedario com os numeros e com alguns caracteres como o "_" e o "." por exemplo, do que com uma string de 32 caracteres em hexadecimal? Não tenho a certesa mas penso que é possivel que 2 strings diferentes tenhao a mesma hash(penso que é asism que se chama )

O resultado de qualquer assinatura (HASH) é em binário. O MD5 gera um resultado de 128 bits.

Posteriormente podes converter esse resultado noutro formato. é o que acontece com a função do PHP que gera um Hexadecimal de 32 caracteres.

Agora... 2 strings com os mesmos caracteres em posições diferentes, nunca geram a mesma assinatura 😛

string 1= AAABBB_

string 2 =AAABB_B

MD5(string 1 ) != MD5(string 2).

O Algoritmo de assinatura digital, prevê que um valor de entrada, tem uma só HASH de saída.

/ing

I used to have a life ... but i bought a programmable machine in 1982 ...

Link to comment
Share on other sites

  • 2 weeks later...

Bem isto é completamente fantástico.. Adoro encriptação  🙂

E eu não sei nada de nada, estou a ficar apaixonado com isto, é simplesmente brutal..

Quero que me tirem uma dúvida.. quando fazemos o "download " de um ficheiro normalmente diz HASH  MD5 e tem esses 32 caracteres provenientes dos 128 bits que a "verdadeira" md5 origina.. mas esse código corresponde ao que ? ao nome com que está guardado o ficheiro ?

Outra coisa... nos dias de hoje qual a utilização mais rentável ?

md5 ? SHA-1  ou base64_encode() ?

Então se usar md5 nunca vou poder saber a password que o utilizador tinha, eu não, mas se ele quiser receber de novo a sua password é impossivél .. 

Impossivél porquê ? Sempre ouvi dizer que o que se monta tambem se desmonta, logo o que existe no md5 que seja impossível de descodificar ?

Um abraço  🙂Gurzi 😉

Link to comment
Share on other sites

Bem isto é completamente fantástico.. Adoro encriptação  🙂

E eu não sei nada de nada, estou a ficar apaixonado com isto, é simplesmente brutal..

Quero que me tirem uma dúvida.. quando fazemos o "download " de um ficheiro normalmente diz HASH  MD5 e tem esses 32 caracteres provenientes dos 128 bits que a "verdadeira" md5 origina.. mas esse código corresponde ao que ? ao nome com que está guardado o ficheiro ?

Isso refere-se ao MD5 do ficheiro. Se fizeres

md5sum nome_ficheiro

em Linux isso dá-te um valor MD5.

Esse valor serve para ver se, por exemplo, o ficheiro que tens corresponde ao original.

Outra coisa... nos dias de hoje qual a utilização mais rentável ?

md5 ? SHA-1  ou base64_encode() ?

Isso depende da tua finalidade. Por exemplo, uso bastante o MD5 quando necessito de ids únicos. A probabilidade de clash é reduzida, pelo que nessas situações o MD5 é uma hipótese.

Já se necessitares de descodificar algo, deves usar qualquer coisa como o base64.

Então se usar md5 nunca vou poder saber a password que o utilizador tinha, eu não, mas se ele quiser receber de novo a sua password é impossivél .. 

Impossivél porquê ? Sempre ouvi dizer que o que se monta tambem se desmonta, logo o que existe no md5 que seja impossível de descodificar ?

Um abraço  🙂Gurzi 😉

Exactamente. No caso particular do MD5, é possível encontrares um conjunto de valores que originam a mesma chave MD5, mas nunca vais saber qual desses valores realmente é o "verdadeiro/original". Há também codificações que é possível reverter, mas tal demora tanto tempo usando o poder computacional actual que se torna inviável.

Pode saber mais aqui: http://en.wikipedia.org/wiki/Md5 e aqui http://en.wikipedia.org/wiki/Cryptography

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Bem se calhar estou a mandar uma grande bacorada, mas perguntar é um dos passos da saboderia  😉

o hash de um ficheiro corresponde ao que ? eu se fizer $password =md5($pass) ele vai fazer um md5 á password ou seja aos caracteres que ele introduziu

agora um ficheiro... não me está a entrar na cabeça, nem consigo criar um raciocínio..

outra coisa, estou aprender cookies, fui aqui aos meus cookies e aparece isto

MC1

GUID=5c83bb3763ddfa4fa9a9d3bc6f687310&HASH=37bb&LV=20054&V=3

microsoft.com/

1024

2330023936

29812409

3007702656

29701839

*

s_nr

1150897711992

microsoft.com/

1088

1510056320

29797580

1647607680

29791545

*

WT_FPC

id=195.23.23.166-195864976.29791544:lv=1150865340368:ss=1150894125865

microsoft.com/

1088

3133277696

30525724

1931367680

29791545

*

A

I&I=AxUFAAAAAAA9BwAA1z7ll5FPUOUWVtmhHUwm8g!!

microsoft.com/

1024

2939469568

31995917

3719134976

29791544

*

MUID

BD8925CFB71A46BF8FD2A4E3FCCD6558

microsoft.com/

1024

204832768

30859217

1801247680

29791545

*

pode-se ver a palavra HASH , ou seja , aquilo são os tais 32 caracteres correspondentes á passagem de 128 bits para hexadecimal ?

Link to comment
Share on other sites

No caso do ficheiro não sei ao certo como funciona, mas sendo o Linux OSS, podes sempre ir ver o código fonte.

No entanto, se virmos um ficheiro como uma "simples string", parece-me que md5sum se limita a fazer hash dessa mesma string.

Quanto ao Hash, a resposta é não. Podes ter qualquer função de hash, não tem de ser um MD5. Por exemplo, podes definir uma função de hash que seja simplesmente o tamanho de uma string. As funções de hash são escolhidas de forma a existir uma boa distribuição dos elementos por uma lista, de forma a que, haja pouco clash.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

:beer:obrigado 😉

:lamo:OFFTOPIC a utilização de cookies é normal ? estou agora a aprendê-los e não sei se vale a pena ou não. por exemplo : setcookie("username",$password,time()+1200); isto vale a pena ou ninguem usa cookies?

Enquanto developer, uso cookies para guardar alguma informação "semi-persistente", entre sessões de utilização. Tenho é sempre alguma "renitência" a deixar informação sensível como username/password em cookies, isso não acho muito boa ideia.

No entanto, como user, tenho o browser configurado para só permitir acesso às cookies a partir dos sites que as criaram.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Podes me dar alguma ideia de cookies que guardes sem ser username e password ?

Nos cookies quando tens algo m6.portugalaprogramar.pt/index.php e nesta páginas escolheste a cor do fundo branco

Se ao passares a m6.portugalaprogramar.pt/codigos.php tens que usar o campo "domain" com portugalaprogramar.pt ??

Em relação ás passwords são acessíveis ? tb podes colocar uma hash na password do cookie.

Abraço

Link to comment
Share on other sites

Podes me dar alguma ideia de cookies que guardes sem ser username e password ?

Nos cookies quando tens algo m6.portugalaprogramar.pt/index.php e nesta páginas escolheste a cor do fundo branco

Se ao passares a m6.portugalaprogramar.pt/codigos.php tens que usar o campo "domain" com portugalaprogramar.pt ??

A Amazoon guarda a escolha dos livros que fazes, também faço o mesmo num carrinho de compras que implementei.

Em relação ás passwords são acessíveis ? tb podes colocar uma hash na password do cookie.

Abraço

Se tens lá uma coisa do tipo: user=xpto password=yptz, alguém que leia essa cookie fica a conhecer ambos os valores.

Se estiverem em claro é uma irresponsabilidade e incompetência brutal por parte do responsável pelo sistema, estando encriptado pode acontecer que com um bom bocado de paciência se descubra algo...

Além disso o que tu queres é uma função de encriptação, não de hash. 😉

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Se calhar ainda estou um bocado confuso entre encriptação e hash! Isto é complicado 😉

São coisas distintas. Funções de Hash é uma coisa, funções de encriptação é outra coisa. No entanto, podes usar uma função de encriptação como função de hash.

Dá uma olhadela aqui: http://en.wikipedia.org/wiki/Hash_table e http://en.wikipedia.org/wiki/Hash_function

responde-me só aquela questão.

Se ao passares a m6.portugalaprogramar.pt/codigos.php tens que usar o campo "domain" com portugalaprogramar.pt ??

Podes manter o valor do campo domain, o valor que lá colocas nada tem directamente a ver com o domínio. Podes nao colocar lá nada ou podes por "batatas"...

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

  • 3 weeks later...
  • 3 months later...

Uma pequena correcção à Tofas:

Num sistema de registo de dados, que envolve por exemplo senha, usa-se normalmente a encriptação de dados. Uma função que o php oferece é a função md5, que converte uma string ( <32 char ) numa string de 32 caracteres.

qualquer string pode ser "md5ada" tendo ela 1 ou 3206015601541 caracteres. Mas, já li algures que um hash md5 de uma string >32 caracteres é mais fácil de "crackar" do que de uma string <32 caracteres. Se tiver errado, corrijam-me 😄

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.