Jump to content

programa de encripte password em c


Recommended Posts

Posted

Boa tarde,

Tenho que fazer um programa em c que encriptar e desencriptar uma password, isto em ambiente linux. Já consegui encriptar com a função crypt, agora não consigo desencriptar, pelo que soube a mesma função crypt consegue desencriptar mas ainda não consegui descobrir como. Alguém sabe como desencriptar uma password em c, no ambiente linux?

Obrigado pela atenção,

koyote

Posted (edited)

Se estás a falar da função crypt() descrita pelo POSIX, repara que é uma função apenas de um sentido (encoding).

Para o que queres (encrypting e decrypting) precisas de outra função.

Aconselho-te uma leitura do artigo da Wikipedia sobre criptografia.

O OpenSSL deve conter alguma coisa que possas aproveitar. Também encontrei um artigo com exemplos de uso

Edited by pmg
OpenSSL

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted (edited)

Podes sempre encriptar de uma forma simples fazendo xor com um salt (funciona nos dois sentidos).

Claro que a segurança que isto te dá não se compara às abordagens típicas de quem encripta coisas... De qualquer modo, normalmente não se desencriptam passwords. O que se faz é comparar a password encriptada com o resultado da encriptação da password introduzida pelo utilizador.

Edited by pwseo
Posted

Sim, eu sei que não se desencripta normalmente, mas isto é um exercicio que tenho que fazer para utilizar a função crypt. Mas disseram-me que esta função dava para encriptar e o inverso, mas pelo que vou vendo não dá. Agora não sei como em c consigo desencriptar.

Posted

Sim, eu sei que não se desencripta normalmente,

Ninguém disse que se desencripta de uma maneira manhosa. O que foi dito é, com este método, não se desencripta, ponto.

mas isto é um exercicio que tenho que fazer para utilizar a função crypt.

se é um exercício e é necessário teres as duas funcionalidades, já te foi dito que terás de usar outros métodos, assim como links para esses métodos.

Mas disseram-me que esta função dava para encriptar e o inverso, mas pelo que vou vendo não dá. Agora não sei como em c consigo desencriptar.

Disseram mas estavam errados, claramente.

IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

Vou ler os links que me deram, só estava a explicar o problema melhor. Obrigado pela ajuda, vou ver o que consigo.

edit

Obrigado pela atenção.

koyote

Edited by koyote
Posted

Mas disseram-me que esta função dava para encriptar e o inverso, mas pelo que vou vendo não dá.

Existem formas para saber a possivel password verdadeira, atraves de brute-force(geras palavras e encriptas, quando as duas forem iguais entao e' possivel que e' a password certa.) ou rainbow tables.

Ja' agora se a encriptacao so' e' feita de um sentido nao se deveria chamar de hash?

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

Ja' agora se a encriptacao so' e' feita de um sentido nao se deveria chamar de hash?

se fores ver a função, poderás ver que podes usar ou o DES (desaconselhado por ser demonstrado como inseguro) ou o MD5 (sendo este último chamado de hashing algorithm)

acho que se chama assim somente por razões históricas

IRC : sim, é algo que ainda existe >> #p@p
Posted

Existem formas para saber a possivel password verdadeira, atraves de brute-force(geras palavras e encriptas, quando as duas forem iguais entao e' possivel que e' a password certa.) ou rainbow tables.

Ja' agora se a encriptacao so' e' feita de um sentido nao se deveria chamar de hash?

Sim, pode chamar de hash, ela e feita num sentido, Pelo que percebi do problema tenho que resolver recorrendo a bruce-force, mas tenho pouca ideia como resolver este problema, conseguem dar uma digas, como eu a partir de uma função que encripta consigo desencriptar?

Obrigado pela atenção,

koyote

Vê o link que o pmg te deu da openssl, mais especificamente a libcrypto. Tens lá várias cifras que podem ser usadas nos 2 sentidos.

O sscanf deveria funcionar... de toda a forma tenta "escapar" o caracter

\:

Podes ainda dar uma vista de olhos ao strtok

Já resolvi esse problema, obrigado pela ajuda.

Posted

Desculpem estar a pressionar, mas ninguém sabe como consigo através do método "brute-force" desencriptar uma password? Não percebo bem o método que pode ser usado.

Obrigado pela atenção,

koyote

Posted

encriptas todas as combinacoes possiveis e verificas se e' aceite

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

encriptas todas as combinacoes possiveis e verificas se e' aceite

Desculpa estar a chatear, mas pode dar um exemplo para ver se percebo de uma vez, por exemplo encriptar a palavra ler, eu uso a função crypt, mas quero e desencriptar.

Encriptada dá algo do género 10k2FFqvI2

Como a partir disto chego a passa que quero, recorrenco ao recurso do "bruce-force"?

Obrigado pela atenção,

koyote

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.