05.07.2012, 03:46
Nгo. Ainda sim nгo serб seguro. Em um teste que fiz com udbEncode, consegui achar umas 150 combinaзхes de senhas iguais (colisхes) em poucos minutos.
Um algorнtimo que atualmente tenho em mente й o algorнtimo de vocк separar caracteres com mesmo valor
Basta pegar os caracteres que vem um apуs o outro e tirar este sistema:
A "fуrmula" de colisгo й a seguinte:
char a + char b = -> (char a * 2) + 1
Como assim Bruno?
Simples. Faзa no Pawn
E nos retornar 195
Agora faзa
Adivinha? 195
Tб mais qual o problema disto?
Isto й
'a' + 'b' serб o mesmo 'Г'
Faзa:
Como bloquear isto?
Sabemos que os caracteres vгo de 0 a 255. Logo todos caracteres menores que (255 / 2) - 1 poderгo se repetir. Entгo vocк precisa checar se um destes caracteres faz parte desta lista. Caso fazer eleve o nъmero deles para um valor que nгo dк colisгo.
Essa й minha dica. Passe os valores que colidem para maior que a soma de 255 * 128 desta maneira vocк farб um hash que nгo hб colisхes em strings menores que 128 caracteres
POST ACIMA EDITADO COM CУDIGO DE EXEMPLO
Um algorнtimo que atualmente tenho em mente й o algorнtimo de vocк separar caracteres com mesmo valor
Basta pegar os caracteres que vem um apуs o outro e tirar este sistema:
A "fуrmula" de colisгo й a seguinte:
char a + char b = -> (char a * 2) + 1
Como assim Bruno?
Simples. Faзa no Pawn
pawn Код:
printf("%d", 'a' + 'b');
Agora faзa
pawn Код:
printf("%d", (('a' + 1)* 2));
Tб mais qual o problema disto?
pawn Код:
printf("%c", 195);
'a' + 'b' serб o mesmo 'Г'
Faзa:
pawn Код:
printf("%d - %d", Г, 'a' + 'b');
Como bloquear isto?
Sabemos que os caracteres vгo de 0 a 255. Logo todos caracteres menores que (255 / 2) - 1 poderгo se repetir. Entгo vocк precisa checar se um destes caracteres faz parte desta lista. Caso fazer eleve o nъmero deles para um valor que nгo dк colisгo.
Essa й minha dica. Passe os valores que colidem para maior que a soma de 255 * 128 desta maneira vocк farб um hash que nгo hб colisхes em strings menores que 128 caracteres
POST ACIMA EDITADO COM CУDIGO DE EXEMPLO