Algoritmo de hash que proporciona menos de 10 bytes

1

Sé que es inseguro, pero necesito para el número de perfil;
Necesito un algoritmo hash para proporcionar menos de 10 bytes.

    
pregunta PersianGulf 20.01.2016 - 05:50
fuente

3 respuestas

6

Esa pregunta es imposible de responder sin comprender el requisito de la función hash.

Sin embargo, dado que estamos en security.se, supongo que estás pidiendo una función hash segura. En ese caso, me temo que la respuesta es: no se puede hacer.

Verá, una función hash es solo un asignador: asigna de manera persistente datos de tamaño arbitrario a una longitud fija llave. Nada mas. Por ejemplo, una función que toma una cadena y devuelve un número constante es una función hash perfectamente válida (aunque algo inútil).

Ahora, las funciones hash criptográficas son una clase de funciones hash que tienen propiedades adicionales. La función hash criptográfica ideal tiene las siguientes propiedades:

  1. Es resistente a la pre-imagen: no puede encontrar fácilmente una entrada que le brinde una salida específica más rápido que la fuerza bruta en el espacio de entrada.
  2. Es resistente a la segunda imagen previa: dada una entrada específica, no puedes encontrar fácilmente una segunda entrada que te dé la misma salida.
  3. Es resistente a las colisiones: no puede encontrar fácilmente dos mensajes que resulten en la misma salida, incluso teniendo en cuenta un gran número de entradas diferentes.

Todo esto depende más o menos del hecho de que, incluso si el espacio clave es más pequeño que el espacio de entrada, todavía es demasiado grande para ser mapeado exhaustivamente. De lo contrario, podría pasar mucho tiempo escribiendo una tabla de mapeo inverso y luego tendrá una forma sencilla de dividir 1.

Es por eso que necesita explicar qué propiedades espera de una función hash de 10 bytes: las funciones hash seguras estándar no funcionarán para usted al tiempo que conservan sus propiedades seguras. Sin embargo, eso no significa que no pueda usarlos si sus requisitos son diferentes.

    
respondido por el Stephane 20.01.2016 - 11:45
fuente
4

Si bien no puedo pensar en ninguna razón por la cual alguien restringiría un hash a 10 bytes, si realmente lo deseas, supongo que puedes.

Lo que podrías hacer es algo así como esta respuesta: ¿Cuál es la mejor función hash de 32 bits para cadenas cortas (nombres de etiqueta)? donde obtiene el md5 de la cadena y luego lo trunca a 10 o por muchos bytes.

Honestamente, a menos que si puedes justificar la razón por la que harías algo como esto, simplemente no lo hagas. Descubra una manera de aumentar el espacio de datos asignado en algo que pueda soportar un hash tan grande como bcrypt. Es el algoritmo de ir al generar hashes seguros, incluso si parece difícil de implementar.

    
respondido por el CryptoAllDay 20.01.2016 - 06:09
fuente
0

Si lo está usando para cálculos de integridad de archivos o mensajes, puede usar CRC32, o si está inclinado a usar un algoritmo criptográfico, puede tomar los bytes superiores o inferiores de cualquier salida de algoritmo hash. siempre reproducible y en su mayoría exclusivo de los datos que hasheado, aunque verás una mayor tasa de colisiones.

    
respondido por el Whome 20.01.2016 - 14:53
fuente

Lea otras preguntas en las etiquetas