• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

saramgsilva

Saber a encriptação dos dados

22 mensagens neste tópico

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 :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 :P)

Mais umas curiosidades :

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

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 :P

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pra sakar md5 e md4, usam-se rainbow tables, onde tao os strings todos, e ele vai a procura

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se quiserem uma função de php que encripta e desencripta podem utilizar  base64_encode(); e base64_decode();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 ?

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 ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

responde-me só aquela questão.

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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"...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É... guia-te por este então "One-Time Pads" 100% seguro. Todos os outros têm como objectivo aproximar-se deste. E da sua impraticabilidade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

One Time Pads saoo teoricamente impossiveis de falsificar.

Eis porque:

A cada letra,numero ou caracter vosso, exista outro caracter a substitui-lo.

Se o vosso texto tiver 1500 letras. A passe sao 1500 letras e/ou caracteres.

A passe tem de ser completamente randomica. Nao pode ser criada por um pc.

Voces podem por exemplo, pegar num livro e colocar as frases do livro, por exemplo a biblia.

MAS... assim o codigo de decifracao pode ser tentado...porque vao haver letras repetidas tipicas de alfabetos locais..

Bom, é se a passe for movimentos do rato ou um ocntador geiger... simplemente randomico.

www.illuminatti.host.sk

ta desactualizado mas tem lá disso.

já fiz um programa One Time Pad. mas infelizmente nao o posso colocar online.

Mas kem atentou no k falei saberá criar um..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Criar um é muito simples. (plaintext xor key) obedecendo a 1. tamanho da key = tamanho do plaintext 2. key será completamente aleatória 3. a key só será usada uma vez.

E pronto temos um algoritmo 100% seguro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora