Ir para conteúdo

Arquivado

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

João Pellissari

Senha aleatória alfanumérica

Recommended Posts

Olá pessoal,

 

Estou desenvolvendo um programa que gera senhas alfanuméricas aleatórias, discutindo o problema com um professor, ele me apontou um possível erro. Estou usando a função rand, ele me disse que a função em questão é pseudoaleatória, ou seja, a sequencia se repetirá em um intervalo de tempo.

 

Eis minha duvida: Existe alguma função em C que seja aleatória pura? Que em nenhum momento essa sequencia se repita?

 

Obrigado.

 

Ps: Desculpa por não colocar [duvida] no nome do tópico, realmente esqueci.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Computadores não geram números aleatórios pois precisam de uma solução computacional para isto, mas os geradores de números pseudo-aleatóros atendem a maior parte das necessidades, inclusive gerar senhas aleatórias com uma margem de segurança, desde que se use um gerador de semente(seed) seguro.

 

Claro que se vai guardar segredos de Estado ou de empresas o nível de segurança deve ser maior.

 

 

 

O uso não

é recomendado em criptografia para a geração de primos aleatórios por exemplo.

 

 

Uma forma de gerar aleatórios puros seria usar o ruído do microfone ou camêra para gerar bits aleatórios, creio ter material sobre isto na Web.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pela ajuda. Estou utilizando a função srand(time(NULL)) para não gerar senhas iguais, porém em um espaço de tempo curto elas são as mesmas.

 

É mais uma curiosidade mesmo, pois no meu programa vou gerar senhas a cada dia, ou seja, as senhas serão diferentes sempre.

 

Vou dar uma pesquisada sobre utilizar o ruido do microfone, muito obrigado pela dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conheço os detalhes em C,C++,C# mas em geral existe uma função randomize para alimentar a semente(seed) de forma automática ou uma uma forma de atribuir valor à seed, isto reduz a chance de colisão.

 

A ideia do ruido do microfone vem do livro

Segurança de dados com Criptografia

Daniel B. de Carvalho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, criei um gerador de senha em C++. Não sei se vai ajudar, mas qto a questão d os mesmos valores se repetir sei não.

Rodei o programa várias vezes e nenhum repeteco. Uso os valores da tabela ASCII para a senha e a classe vector do C++.

Segue o código p ver se ajuda:

 

#include <iostream>
#include <string>
#include <time.h>
#include <vector>
using namespace std;

int main()
{
	vector<char> digitos;
	char c;
	string senha;

	srand(time(NULL));

	for (int i = 33; i < 123; i++)
	{
		c = (char) i;
		digitos.insert(digitos.end(), c);
	}

	for (int i = 0; i < 9; i++)
	{
		int index = rand() % digitos.size();
		senha += digitos[index];
	}


	cout << "Senha: " << senha << endl;

	cout << endl;

	return 0;
}

Mesmo usando a função srand() junto com a função rand() dá pra criar senhas fortes. O tamanho da senha pode ser alterado no segundo FOR

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.