Necesito una función segura (criptografía) hash con las siguientes propiedades:simple (con el código) la función hash seguro
- puede ser codificado en tan pocas líneas como sea posible (en R5RS Scheme). Esperanzadamente debajo de 50.
- Memoria y funcionamiento de la CPU dentro de la razón para los datos de la longitud de la contraseña. (por ejemplo, no tiene que ser súper eficiente o crear hashes para millones de bytes de datos)
Las funciones hash más seguras que puedo encontrar están diseñadas teniendo en cuenta la velocidad/la eficiencia de la memoria y son complejas para codificar como resultado .
El candidato actual es Mash-1 (o Mash-2): Handbook of applied cryptography. Google Books
Gracias.
Edit: Gracias a todos por sus respuestas hasta el momento. Por favor, perdónenme si lo siguiente es grosero, solo quiero ser claro. Por favor, créame que hice mi tarea y consideré las opciones "estándar". Sé que lo más fácil es usar uno de esos, pero eso no es lo que estoy buscando.
La única pregunta que intento responder es: ¿Qué algoritmo hash criptográficamente seguro se puede implementar en la menor cantidad de código "legible"?
Ya he publicado el mejor candidato que pude encontrar. Cualquier sugerencia sobre algo más simple, o comentario sobre Mash-1/2 sería de gran ayuda.
¿Estás haciendo esto como un ejercicio de aprendizaje porque francamente no confiaría en nada además de los algoritmos comúnmente conocidos. –
El problema que tienes es que nadie está dispuesto a poner su mano en su corazón y decir "X es seguro" cuando X es un primitivo criptogénico poco estudiado. Esto se debe a que "seguro" generalmente significa "no se ha roto aún, a pesar de la atención significativa". – caf
Realmente necesita aclarar sus requisitos de seguridad: si no elige uno de los algoritmos hash más comunes, está realizando una transacción de seguridad, ya que es mucho más probable que tenga una debilidad desconocida. "Seguro" no es un valor binario. No está dispuesto a usar SHA-512 porque es demasiado complejo de implementar. Así que ayúdanos a descubrir cuánta seguridad estás dispuesto a intercambiar para una implementación más fácil. ¿Simplemente está buscando el hash _most_ secure que se puede implementar en 50 líneas de Scheme? Incluso si ese algoritmo es probable que se rompa dentro de, digamos, 10 años? –