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

pouic

gerar código unico...

15 mensagens neste tópico

Boas pessoal

Estou a desenvolver uma aplicação web onde existem registos para cursos e as pessoas que terminam o curso tem acesso ao seu respectivo diploma. Mas para que nao haja falsificações queria gerar um código único que me identificasse o curso e o user para que o administrador quando solicitado por alguma empresa o comprovativo daquele curso por determinada pessoa ele consiga identificar...

Queria depois também fazer não só para um curso mas se a pessoa tiver feito 3 4 cursos gerasse um so diploma com os cursos tirados e um respectivo código...

O que pretendia aqui era umas dicas para gerar um código com X dígitos ou números que saiam no meu diploma pré-configurado mas que identificasse o ID do curso e o ID do user

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não está fácil :thumbsup:

Não sei se me fiz entender bem na questão que coloquei...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um algoritmo de Hash, por exemplo MD5, gera um código de 32 caracteres que *teoricamente* será único para uma dada palavra, se juntares o curso + o nome do utilizador terás um código de identificação, mas o MD5 na prática não devolve chaves únicas dado que é possível com duas palavras diferentes obter a mesma chave, no entanto é ainda um bom algoritmo para o que queres.

Mas o MD5 é apenas um exemplo, existem outros algoritmos que te podem ajudar, procura por algoritmos de hash similares ao MD5, não me estou a lembrar de nenhum agora :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o que ele devolve sao 128 bits

uma das propriedades do MD5 é que "era" teoricamente impossivel existir dois objectos com a mesma chave caso não fossem o mesmo objecto, mas pelo que me disse o meu professor de sistemas distribuidos ja houve um proof of concept que se conseguiu "crackar" e conseguir gerar dois Hash iguais de objectos distintos.

uma boa alteracao ao MD5 e o SHA1 ou 2  senão me engano ...

mas para tirares as tuas conclusões deixo aqui os links da wikipedia ...

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

http://pt.wikipedia.org/wiki/SHA1

boas programacoes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nem foi mau dar uma respostazita a despachar, sempre incentivou mais uma resposta útil :(

Sim, 128 bits que normalmente se traduzem numa string de 32 caracteres, mas apesar de ser o uso mais comum, sim correctissimo são 128 bits. Não sei se .net tem suporte directo para SHA1 ou 2 mas se não me engano tem para MD5.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu diria antes que na prática é que era impossível encontrar colisões (mas mesmo na prática, com o MD5, só o Birthday Attack já nos dizia que não é assim tão difícil encontrá-las). Na teoria, toda a gente sabia que elas existiam :(

O SHA1 já resolve o problema do Birthday Attack.

Mas atribuir um número sequencial aos alunos não era suficiente? Não percebi muito bem a necessidade de ter também os cursos. Isso não está guardado numa BD ou algo parecido?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é por nada, mas como é que se espera que uma função com um conjunto de chegada com cardinalidade finita gere um hash diferente para todo e qualquer par de variáveis diferentes. Obviamente isso é matemáticamente impossivel.

Não se provou grande coisa, desenvolveram-se foram formas de encontrar colisões. E agora vou ler sobre birthday attack pois nao faço ideia do que isso seja.

Mas não é precisa grande discussão sobre este tópico, geras uma string aleatoria, se ela já existir geras outra. Simples.

Mas pra que conste. Os algoritmos de hashing, apesar de famosos não servem este tipo de necessidades, para isso temos algoritmos de geração de conjuntos distintos, tipo UUID ou GUID

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora bem desde já obrigado pelo vosso contributo e como o knitter tinha falado eu criei o meu codigo com  MD5 mas agora vendo bem vou ter de ver como utilizar SHA1 acima referido.

@ Rui Carlos  - a necessidade de criar o código é a seguinte.

Imagina que tiras-te 4 cursos e que agora apareceu uma oportunidade de candidatares a um emprego melhor mas que so te interessa dizeres que tens 2 desses cursos. Pois os outros 2 nao sao ligados a área e até nem te traria mais valias. Logo havia a necessidade de gerar esse codigo para que a entidade final em contacto com o Formando conseguisse avaliar que não foi alterado o diploma gerado. Apesar de teres 4 cursos no teu diploma so te aparecem 2. Acho que já consegui explicar melhor :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@ Rui Carlos  - a necessidade de criar o código é a seguinte.

Imagina que tiras-te 4 cursos e que agora apareceu uma oportunidade de candidatares a um emprego melhor mas que so te interessa dizeres que tens 2 desses cursos. Pois os outros 2 nao sao ligados a área e até nem te traria mais valias. Logo havia a necessidade de gerar esse codigo para que a entidade final em contacto com o Formando conseguisse avaliar que não foi alterado o diploma gerado. Apesar de teres 4 cursos no teu diploma so te aparecem 2. Acho que já consegui explicar melhor :D

Já agora, podes indicar qual seria o processo de validação dos diplomas?

É que continuo sem perceber como é que garantes que o diploma não foi falsificado...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Garanto codificando por exemplo :

o código do user + cod curso 1 + cod curso 2

Esse código depois é fornecido ao admin do site e ele coloca-o num local próprio onde mostra o Nome do user os cursos que representa o diploma e as suas respectivas datas e notas finais.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas então para que é que precisas de uma hash? Não bastava atribuir um número sequencial a cada aluno e a cada curso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Queres uma coisa mesmo única tens SHA512 :D isso sim é mesmo a serio, mas penso que o SHA256 já serve lol.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim basta mas queria codificar essa informação.

Mas um número sequencial seria único de certeza, enquanto que ao usares um hash corres o risco de não ser (embora seja muito pouco provável).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado pessoal quando tiver isso implementado depois posso postar aqui a função :)

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