elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Duda con CRC32 + 32bits + INT() de Databases
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con CRC32 + 32bits + INT() de Databases  (Leído 4,844 veces)
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Duda con CRC32 + 32bits + INT() de Databases
« en: 20 Mayo 2010, 05:10 am »

Hola gente.
Pregunta media loca:

Sabemos que una base de datos, puede guardar INT(), los cuales, ocupan 4 bytes. o sea: 32 bits.
El numero que se puede guardar en un INT, va de -x a x, pero si lo catalogamos como UNSIGNED, va desde 0 a 4294967295 (ese numero, es 2^32)

OK...
Ahora, tenemo el CRC32, y hay que guardarlo en la base de datos...
CRC32, es un numero de 32 bits.., Por lo que, el numero maximo que puede devolver, es: 4294967295

Tifa, por chat, me dijo que un CRC32, no entra en un INT UNSIGNED.. PERO mi logica dice que SI...
Dios mio.. alguien tiene la respuesta?


En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Duda con CRC32 + 32bits + INT() de Databases
« Respuesta #1 en: 20 Mayo 2010, 05:32 am »

No estoy muy seguro, pero creo que se debe a la notacion binaria de CRC32...

Porque si por ejemplo, esto es un CRC32 normal...

Código:
10000011110111001110111110110111

El número excede por mucho el limite.... si lo tratas de forma decimal, en cambio si convertieras a decimal de seguro te queda algo menor a 4294967295....

Al menos creo yo...


En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Duda con CRC32 + 32bits + INT() de Databases
« Respuesta #2 en: 20 Mayo 2010, 06:40 am »

Pero.. como que excede?

Si un INT guarda un numero de 32 bits, y el CRC32, devuelve como maximo un numero de 32 bits..
Tiene que entrar!
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Duda con CRC32 + 32bits + INT() de Databases
« Respuesta #3 en: 20 Mayo 2010, 13:27 pm »

Si, pero a lo que me refiero es que si la base de datos trata el número como decimal, tecnicamente no estas tratando con 32 bits...

sino como 60 bits:

Código:
110111100000101101111011011001010100110100000000010111001111

En cambio si lo tratas como decimal, te queda:

Código:
2212294583

Que si cabe dentro de los 32 bits.

En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Duda con CRC32 + 32bits + INT() de Databases
« Respuesta #4 en: 20 Mayo 2010, 19:06 pm »

No entiendo a lo que te refieres, porque no va al caso que plantea...

Me dices: "Si la base de datos lo toma como decimal......." Pero.. porque lo va a tomar como decimal? si le pongo INT, tiene que tomarlo como INT:

Tendré que averiguarme por otros medios parece
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Duda con CRC32 + 32bits + INT() de Databases
« Respuesta #5 en: 20 Mayo 2010, 19:56 pm »

Skeletron nino  :P  utiliza tu unsigned int si tanto te preocupa, no me hagas mucho caso cuando me haces preguntas sobre numeros y el motivo del porque  :xD 

Solo, queria buscarte una salida eficiente a la duda que previamente tenias, lamentablemente no puedo abundarte en relacion a los numeros y los calculos, pero creo que pude responder tu problema inicial  :silbar:

Como sea, hice una prueba con CRC32 en mi MySQL para ver cuando comenzaba a colisionar (No me aguante la duda  :D ) hice un bucle con 1 millon de registros dinamicos  ;) y bueno, verifique luego el asuntito de colisiones con CRC32 como indices y que vi... pues el average de colision fue 1% por cada 98,000 registros  :o  lo cual puede ser preocupante si vas a insertar muchas entradas diarias, pero si nisiquiera vas a hacercarte a los 70,000 registros anual obvia todo esto que te digo de las colisiones. Ahora, si quieres evitarte obtener registros duplicados porque colisionen, podrias en tu consulta SQL hacer algo tipo:

Código
  1. SELECT campo, campo, campo WHERE id = crc32('dato') AND link = 'dato'

Asi aunque existieran colisiones, el registro retornado sera unico siempre  ;)

Al menos claro esta que consideres implementar tu propia hash de 64bits, pero para esto tendrias que rebuscar mucho y truncar el resultado devuelto por MD5() por ejemplo para que no sea tannnn largo el indice. Pero creo, que en tu caso no habra problemas con el uso de CRC32() si todo es como me lo planteaste en cuanto a la actividad diaria, no tendra motivos algunos para colisionar.

Espero, que puedas encontrar tu respuesta que solicitas ahora... como te dije, no me hagas caso cuando te respondo sobre algo relacionado a numeros, utiliza tu UNSIGNED INT si consideras el valor retornado por CRC32() cabe ahi, la prueba siempre podras hacerla antes de definitivamente lanzarte. Que yo utilize DECIMAL no implica que tu tambien lo hagas, entiendo las capacidades que posee tu servidor, en comparacion a las capacidades que poseen el servidor donde he implementado decimal con crc32.

Saludos.
« Última modificación: 20 Mayo 2010, 20:03 pm por ^Tifa^ » En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Duda con CRC32 + 32bits + INT() de Databases
« Respuesta #6 en: 21 Mayo 2010, 06:21 am »

Tendré que verificarlo yo mismo parece.
Haré un bucle que pruebe insertar miles de registros, y a ver si alguno se trunca por el INT.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(solucionado..) Tengo una duda sobre el checksum (CRC32) para expertos!
Windows
Eleкtro 7 8,779 Último mensaje 18 Diciembre 2011, 17:42 pm
por Randomize
[SRC] Self CRC32 Check 0.1 (POC) « 1 2 3 »
Programación Visual Basic
Elemental Code 28 12,964 Último mensaje 30 Enero 2012, 06:58 am
por Maurice_Lupin
[C# 4.0][Databases] Duda con las Bases de Datos
.NET (C#, VB.NET, ASP)
TheCrimulo 4 2,302 Último mensaje 5 Junio 2015, 00:03 am
por kub0x
Ayuda sobre paginas de databases
Hacking
kaliilinux2 0 1,378 Último mensaje 19 Junio 2018, 23:00 pm
por kaliilinux2
leaks databases passwords
Dudas Generales
pavazstuff 2 2,030 Último mensaje 31 Julio 2018, 18:16 pm
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines