Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mr Anderson

[Resolvido] Algoritmo de criação de senha segura

Recommended Posts

Este script gera uma senha.

 

<?php
$QtdeCaracteres = 8;
$CaracteresAceitos = 'abcdxywzABCDZYWZ0123456789';
$max = strlen($CaracteresAceitos)-1;
$password = null;
 for($i=0; $i < $QtdeCaracteres; $i++) {
         $password .= $CaracteresAceitos{mt_rand(0, $max)};
 }
echo "Nova Senha: ".$senha = $password;
echo "<br/>";
echo "Nova Senha Criptografada: ".$senha_criptografada = md5($password);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma boa pedida é concatenar criptografias;

Junto com um "salt" então...

Fica um trambolho de tão longo a senha

 

$string = 'senha';
$string .= 'salt';
$cripto = md5($string).sha1($string);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é necessário concatenar a criptografia, mais sim as strings

 

$string = 'senha';
$salt = 'salt';
$cripto = sha1( $string . $salt );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não fui oque eu quis fazer...

Eu já havia concatenado as strings anteriormente em:

$string .= 'salt';
com o ".="

 

Eu quis gerar uma senha "monstro" logo concatenando as duas criptografias sobre a mesma string com salt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adorei as idéias de vcs, são realmente mt boas!!!!

 

Mais acontece, que eu não me expressei mt bem, Imagem Postada .

 

O q eu realmente queria era encontrar um algoritmo para validação de senha segura.

 

Tipo, o usuário poderá criar sua própria senha, porém o sistema validará, se a senha é mt simples ou não.

 

Ex: Senha: 123.

 

É ridicula, e o sistema não aceitaria esta senha.

 

Se alguém souber de algum eu agradeço, ou entaum se existe regras em um padrão geralmente utilizado em sistemas, pq ae com essas regras eu msm posso montar o algoritmo.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$senha = 'SenhaQueOUsuárioPassou';
$hard = 0
if(preg_match('/(.*)?([!-//]|[:-@]|[^-`]|~)(.*)?/', $senha){
// Tem algum caractere especial
$hard = $hard ++;
}
Dai é só fazer a mesma coisa para os números e letras

Dai vais ter uma difucldade de 1 2 ou 3

Fácil, Média e Dificl

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema em usar uma senha tipo 123456 ou seu proprio nome ou seu time de futebol é que alguma pessoa que te conheça pode tentar essas e conseguir Imagem Postada hehe meio "brute force"

e não quanto a segurança *aprendi isso com joão asghdhas os hash independente da senha a possibilidade de "quebra-lo" depende dos bits tipo o md5 é um hash 128bits se usa um de 512bits a chance é menor

 

valww

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode criar um array com senhas que considera fácil e procurar a entrada do usuário nesse array.

se encontrar eh pq ele digitou algo simples...

 

123

321

123456

abc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Will como fiz no código, se a pessoa fizesse 123456 como senha ele já daria a senha como fácil

Afinal só teria números, ele apenas adicionaria 1 na dificuldade

Podes fazer 4 níveis

$senha = 'SenhaQueOUsuárioPassou';
$hard = 0
if(preg_match('/(.*)?([!-//]|[:-@]|[^-`]|~)(.*)?/', $senha){
// Tem algum caractere especial
$hard = $hard ++;
}
if(preg_match('/(.*)?[0-9](.*)?/', $senha){
// Tem algum número
$hard = $hard ++;
}
if(preg_match('/(.*)?[a-z](.*)?/', $senha){
// Tem alguma letra minúscula
$hard = $hard ++;
}
if(preg_match('/(.*)?[A-Z](.*)?/', $senha){
// Tem alguma letra maiúscula
$hard = $hard ++;
}
$dif = array();
$dif[0] = 'Senha incorreta';
$dif[1] = 'Fácil';
$dif[2] = 'Regular';
$dif[3] = 'Moderada';
$dif[4] = 'Difícil';
echo $dif[$hard];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra complementar nessa verificação voce pode ver se a senha é igual ao nome da pessoa (ou sobrenome) no cadastro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostei mt da idéia do Holt, acho que vou utilizar ela, complementando com a sugestão do h4v3st. Mesmo assim continuarei pesquisando algum algoritmo padrão em livros e sites de segurança, se descobrir posto aqui ou crio outro tópico.

 

Obrigado, e abraços. :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw Evandro.

 

Agora sim ficou show!!!!

 

Segue o algoritmo:

function verificasenhasegura($senha)
{
	$cont=count($senha);
	if($cont>=8&&$cont<=10)
	{	
		if(preg_match('/[[:punct:]]/U',$senha)&&preg_match('/[[:alpha:]]/U',$senha)&&preg_match('/[[:digit:]]/U',$senha))
		{
			return 1; //Senha Válida
		else
		{
			return 0; //Senha Inválida
		}
	}
	else
	{
		return 0; //Senha Inválida
	}
}
Este algoritmo só tem dois pontos fracos, não exige senhas com letras maiúsculas e minúsculas e não é gerado aleatóriamente, lógico por uma opção minha, pode ser facilmente alterado, na primeira condição.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

podes colocar o mínimo de letras na senha para 8...

 

if(strlen($senha) < 8) {

 

echo "A senha deve conter no mínimo 8 caracteres";

 

}

 

e tem também um sistema de senhas muito bom no "monstergame"...

 

"Error: a senha tem de ter pelo menos 8 caracteres e deve ser composta por letras e conter pelo menos 3 números. "

 

if(preg_match('/(.*)?[0-9](.*)?/', $senha){

// Tem algum número

$hard = $hard ++;

 

if(strlen($hard) < 3) {

 

echo "A senha deve ter pelo menos 3 números.";

 

}

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.