MurmurHash3_x86_32() espera un parámetro de inicialización. ¿Qué valor debería usar y qué hace?¿Qué es el parámetro de semilla MurmurHash3?
Respuesta
El parámetro de inicialización es un medio para aleatorizar la función hash. Debería proporcionar el mismo valor de inicialización para todas las llamadas a la función de hash en la misma aplicación de la función de hash. Sin embargo, cada invocación de su aplicación (suponiendo que esté creando una nueva tabla hash) puede usar una semilla diferente, por ejemplo, un valor aleatorio.
¿Por qué se proporciona?
Una razón es que los atacantes pueden usar las propiedades de una función hash para construir un ataque de denegación de servicio. Podrían hacer esto proporcionando cadenas a su función de hash que todos los hash al mismo valor destruyen el rendimiento de su tabla hash. Pero si usa una semilla diferente para cada ejecución de su programa, el conjunto de cadenas que los atacantes deben usar cambia.
Ver: Effective DoS on web application platform
También hay un Twitter tag for #hashDoS
Un valor llamado seed
aquí significa sal. Proporcione cualquier dato aleatorio pero privado (para usted), de modo que la función hash dará resultados diferentes para los mismos datos. Esta característica se utiliza, por ejemplo, para hacer un resumen de sus datos para detectar la modificación de datos originales por terceros. Difícilmente pueden replicar el valor hash válido hasta que conozcan la sal que usaste.
La sal (o semilla) también se usa para evitar colisiones hash para diferentes datos. Por ejemplo, sus bloques de datos A y B pueden producir el mismo hash: h (A) == h (B). Pero puede evitar esta condición conflictiva si proporciona algún tipo de datos adicionales. Las colisiones son bastante raras, pero a veces la sal es una forma de evitarlas para el conjunto concreto de datos.
En realidad es dudoso. ¿Cuál es el propósito de 'sault' para la función hash no criptográfica? – Lol4t0
MurmurHash es una función hash no criptográfica. No es una elección adecuada para un resumen de mensaje _secure_. –
En la realización dada seed
se utiliza en la construcción del vector de inicialización . Es un valor arbitrario, la elección de valores diferentes para diferentes datos disminuirá la tasa de colisión. Pero tenga en cuenta que debe saber par de seed
- data
luego.
- 1. Mejor semilla para el proceso paralelo
- 2. https URL con el parámetro token: ¿qué tan seguro es?
- 3. ¿Qué es el parámetro Id en CoreService2010Client Localize método
- 4. ¿Por qué el parámetro argv para execvp no es const?
- 5. ¿Qué es "String args []"? parámetro en el método principal Java
- 6. ¿Cuál es el parámetro icicle de Android?
- 7. ¿La semilla de Ruby para OpenSSL :: Random es suficiente?
- 8. Establecer semilla en Math.random()
- 9. de números aleatorios con semilla
- 10. Rieles forma de restablecer la semilla en el campo id
- 11. C++ de nuevo Random (semilla) en C#
- 12. ¿Cuál es el segundo parámetro de NSLocalizedString()?
- 13. SecureRandom semilla segura en Java
- 14. FolderBrowserDialog - Win32Exception ocurrió - el parámetro es incorrecto
- 15. sem_init (...): ¿Para qué sirve el parámetro pshared?
- 16. C# El parámetro no es válido Error
- 17. ¿Qué es el remitente?
- 18. Datos de semilla para análisis de sentimiento
- 19. rand cambia de valor sin cambiar semilla
- 20. error CreateProcess = 87, el parámetro es incorrecto
- 21. System.Drawing.Graphics.DrawString - "El parámetro no es válido" excepción
- 22. System.ArgumentException: El parámetro no es válido
- 23. ¿Qué es el parámetro "Func <object> modelAccessor" para en el DataAnnotationsModelMetadataProvider de MVC?
- 24. Configuración del aumento de semilla :: aleatorio
- 25. ¿Qué significa el parámetro -clean en el IDE de Eclipse?
- 26. ¿Qué es útil sobre un parámetro referencia-a-matriz?
- 27. Pasando Clase derivada como parámetro de un método cuando el tipo de parámetro es clase base
- 28. django - ¿Qué entra en el parámetro de acción de formulario cuando la vista requiere un parámetro?
- 29. Establecer semilla aleatoria temporalmente, como "new Random()"
- 30. Secuencia al azar Python con semilla
Esto está relacionado con, pero no exactamente equivalente a, la idea de [hashing universal] (http://en.wikipedia.org/wiki/Universal_hashing): en lugar de tener una función de hash, tienes una familia completa (en este caso, MurmurHash3 es la familia, con cada posible valor inicial que le da una función particular dentro de esa familia). Si descubres que tus datos de entrada producen hashes mal distribuidos (por ejemplo, debido a un ataque), puedes elegir un nuevo valor de inicialización aleatorio y volver a generar los datos; es poco probable que los datos produzcan una mala distribución para su nuevo valor de inicialización, por lo que supera el ataque. –