2010-07-23 42 views
6

Lector de larga duración, primer póster. ¡Y comienzo con uno críptico!¿Puede MySQL (Windows) hacer hash SHA-256 y HMAC?

Lo que estoy tratando de hacer es cifrar una cadena con el algoritmo SHA-256, y hash con una clave.

Descubrí que alguien había hecho un excelente trabajo al crear un algoritmo para el cifrado SHA-2 "normal" como una función almacenada en: http://blog.darkrainfall.org/sha-256-in-mysql/ que probablemente sea de ayuda para otros, pero necesito poder hacerlo con una llave.

¿Alguien sabe si esto es posible? Soy totalmente novato en encriptación, me temo.

Estoy usando mySQL 5.1 en el servidor de Windows 2003.

Saludos.

Respuesta

1

No está claro cuál es su objetivo final, pero la implementación de SHA a la que hizo referencia debería ser capaz de hacer la mezcla que desea. Un significado de "hash algo con una clave" para la autenticación de mensajes puede ser que tomes una clave secreta y la antepongas a datos y luego hash todo el resultado. La siempre útil Wikipedia tiene información sobre HMAC.

Tenga en cuenta que hash no es cifrado. La pregunta parece implicar que hashing algo es lo mismo que encriptarlo. Un hash, sin embargo, toma algunos datos y los ejecuta a través de un mezclador de datos y produce un fragmento de datos (típicamente) de longitud fija. Con una función hash criptográficamente fuerte, se supone que es imposible (desde un punto de vista práctico) encontrar una entrada que dé como resultado un valor hash dado. La encriptación, por otra parte, toma una llave y un trozo de datos y los ejecuta a través de un mezclador de datos y produce una porción de datos que luego pueden ser "no mezclados" junto con la clave original para producir los datos originales.

+0

Solo una nota. Hashing con una clave * no * necesariamente significa anteponer el hashable con la tecla. Típicamente, el hash salado implica preceder al hashable con la sal. HMAC es una función que toma, como argumentos, un algoritmo hash y una clave, y devuelve un nuevo algoritmo hash. Este nuevo algoritmo hash transformará el hashable con la clave a través de un mecanismo más complejo y más seguro. – yfeldblum

+0

@Justice - Eso es verdad. Estaba simplificando con un posible escenario. Intentaré actualizarlo para ser más preciso. –

+0

Guau, eso fue rápido. Disculpa, me preguntaba si estaba siendo claro y me has aclarado. Quiero ser capaz de hacer algo como esto en una sentencia SQL: SELECT hash_hmac ('sha256', '$ variable', '$ llave') como hashed_response Sé que puedo hacer lo sha256 con la función almacenada que mencioné, pero me preguntaba cómo podría extenderla a HMAC. Aunque por lo que dice anteriormente, el script, aunque comparte el cifrado correcto, puede no ser un comienzo para lo que estoy tratando de hacer. ¡Solo he estado trabajando en esto durante 24 horas, así que sea gentil conmigo! – Dave

Cuestiones relacionadas