{"id":16848,"date":"2020-10-27T08:29:15","date_gmt":"2020-10-27T07:29:15","guid":{"rendered":"https:\/\/protecciondatos-lopd.com\/empresas\/?p=16848"},"modified":"2024-11-07T17:35:17","modified_gmt":"2024-11-07T16:35:17","slug":"hash","status":"publish","type":"post","link":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/","title":{"rendered":"\u00bfQu\u00e9 es y para qu\u00e9 sirve un Hash?"},"content":{"rendered":"<p>Un concepto que encontrar\u00e1s una y otra vez en cualquier discusi\u00f3n sobre ciberseguridad es el concepto de <strong>hash<\/strong>. Estas largas cadenas de n\u00fameros y letras aparentemente aleatorios se generan y utilizan de varias formas importantes. Algunas soluciones antivirus se basan en ellos casi exclusivamente para fines de detecci\u00f3n, pero aunque es una forma bastante limitada y f\u00e1cil de derrotar para detectar malware moderno, los hash tienen un gran valor para establecer la identidad y se utilizan de muchas formas diferentes. En esta publicaci\u00f3n, veremos algunos de ellos mientras exploramos qu\u00e9 es un hash y c\u00f3mo funciona.<\/p>\n<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contenido del art&iacute;culo<\/p><ul class=\"toc_list\"><li><a href=\"#Que_es_un_hash\">\u00bfQu\u00e9 es un hash?<\/a><\/li><li><a href=\"#Como_funcionan\"> \u00bfC\u00f3mo funcionan?<\/a><\/li><li><a href=\"#Para_que_sirven_los_valores_hash\">\u00bfPara qu\u00e9 sirven los valores hash?<\/a><\/li><li><a href=\"#Tipos_de_funciones_hash\">Tipos de funciones hash<\/a><ul><li><a href=\"#Codigo_de_deteccion_de_modificaciones\">C\u00f3digo de detecci\u00f3n de modificaciones<\/a><\/li><li><a href=\"#Codigo_de_autenticacion_de_mensajes\">C\u00f3digo de autenticaci\u00f3n de mensajes<\/a><\/li><\/ul><\/li><li><a href=\"#Propiedades_de_las_funciones_hash\">Propiedades de las funciones hash<\/a><ul><li><a href=\"#Bajo_coste\">Bajo coste<\/a><\/li><li><a href=\"#Compresion\">Compresi\u00f3n<\/a><\/li><li><a href=\"#Uniformidad\">Uniformidad<\/a><\/li><li><a href=\"#Rango_variable\">Rango variable<\/a><\/li><li><a href=\"#Inyectividad\">Inyectividad<\/a><\/li><li><a href=\"#Determinismo\">Determinismo<\/a><\/li><li><a href=\"#Analisis_de_resistencia_frente_a_colisiones\">An\u00e1lisis de resistencia frente a colisiones<\/a><\/li><li><a href=\"#Normalizacion_de_datos\">Normalizaci\u00f3n de datos<\/a><\/li><li><a href=\"#Continuidad\">Continuidad<\/a><\/li><\/ul><\/li><li><a href=\"#Aplicaciones_de_las_funciones_hash\">Aplicaciones de las funciones hash<\/a><ul><li><a href=\"#Almacenamiento_de_contrasena\">Almacenamiento de contrase\u00f1a<\/a><\/li><li><a href=\"#Comprobacion_de_la_integridad_de_los_datos\">Comprobaci\u00f3n de la integridad de los datos<\/a><\/li><li><a href=\"#Firma_digital\">Firma digital<\/a><\/li><\/ul><\/li><li><a href=\"#Generadores_de_hash_online\">Generadores de hash online<\/a><ul><li><a href=\"#Hash_Generator\">Hash Generator<\/a><\/li><li><a href=\"#60_Tools\">60 Tools<\/a><\/li><li><a href=\"#HashMyFiles\">HashMyFiles<\/a><\/li><li><a href=\"#HashTab\">HashTab<\/a><\/li><li><a href=\"#QuickHash\">QuickHash<\/a><\/li><li><a href=\"#MultiHasher\">MultiHasher<\/a><\/li><\/ul><\/li><\/ul><\/div>\n<h2><span id=\"Que_es_un_hash\"><strong>\u00bfQu\u00e9 es un hash?<\/strong><\/span><\/h2>\n<p>Los hash son la salida de un <strong>algoritmo de hash<\/strong> como MD5 (Message Digest 5) o SHA (algoritmo de hash seguro). B\u00e1sicamente, estos algoritmos tienen como objetivo producir una cadena \u00fanica de longitud fija, el valor hash o &#8220;resumen del mensaje&#8221;, para cualquier dato o &#8220;mensaje&#8221; dado.<\/p>\n<p>Como cada archivo en una computadora son, en \u00faltima instancia, solo datos que se pueden representar en forma binaria, un algoritmo hash puede tomar esos datos y ejecutar un c\u00e1lculo complejo en ellos y generar una cadena de longitud fija como resultado del c\u00e1lculo. El resultado es el <strong>valor hash<\/strong> del archivo o el resumen del mensaje.<\/p>\n<p>El hash est\u00e1 dise\u00f1ado para resolver el problema de tener que buscar o almacenar de manera eficiente un art\u00edculo en una colecci\u00f3n.<\/p>\n<p>Por ejemplo, si tenemos una lista de 10,000 palabras en ingl\u00e9s y queremos verificar si una palabra determinada est\u00e1 en la lista, ser\u00eda ineficaz comparar sucesivamente la palabra con los 10,000 elementos hasta que encontremos una coincidencia. Incluso si la lista de palabras est\u00e1 ordenada lexicogr\u00e1ficamente, como en un diccionario, necesitar\u00e1s algo de tiempo para encontrar la palabra que est\u00e1s buscando.<\/p>\n<p>El <strong>significado de hash<\/strong> lo considera una t\u00e9cnica para hacer las cosas m\u00e1s eficientes al reducir efectivamente la b\u00fasqueda desde el principio.<\/p>\n<p>Hashing significa usar alguna funci\u00f3n o algoritmo para mapear datos de objeto a alg\u00fan valor entero representativo.<\/p>\n<p>Este llamado <strong>c\u00f3digo hash<\/strong> (o simplemente hash) se puede utilizar como una forma de delimitar nuestra b\u00fasqueda al buscar el elemento en el mapa.<\/p>\n<p>Generalmente, estos c\u00f3digos hash se utilizan para generar un \u00edndice, en el que se almacena el valor.<\/p>\n<h2><span id=\"Como_funcionan\"><strong> \u00bfC\u00f3mo funcionan?<\/strong><\/span><\/h2>\n<p>En las <strong>tablas hash<\/strong>, almacena datos en forma de pares de clave y valor. La clave, que se utiliza para identificar los datos, se proporciona como entrada a la funci\u00f3n hash. El c\u00f3digo hash, que es un n\u00famero entero, se asigna al tama\u00f1o fijo que tenemos.<\/p>\n<p>Las tablas hash deben admitir 3 funciones.<\/p>\n<ul>\n<li>insertar (clave, valor)<\/li>\n<li>obtener (la clave)<\/li>\n<li>borrar (clave)<\/li>\n<\/ul>\n<p>Simplemente como un ejemplo para ayudarnos a comprender el concepto, supongamos que queremos asignar una lista de claves de cadena a valores de cadena (por ejemplo, asignar una lista de pa\u00edses a sus ciudades capitales).<\/p>\n<p>Y supongamos que nuestra <strong>funci\u00f3n hash<\/strong> es simplemente tomar la longitud de la cadena.<\/p>\n<p>Para simplificar, tendremos dos matrices: una para nuestras claves y otra para los valores.<br \/>\nEntonces, para colocar un elemento en la tabla hash, calculamos su c\u00f3digo hash (en este caso, simplemente contamos el n\u00famero de caracteres), luego colocamos la clave y el valor en las matrices en el \u00edndice correspondiente.<\/p>\n<p>Por ejemplo, Cuba tiene un c\u00f3digo hash (longitud) de 4. As\u00ed que almacenamos Cuba en la 4\u00aa posici\u00f3n en la matriz de claves y La Habana en el 4\u00ba \u00edndice de la matriz de valores, etc.<\/p>\n<p>Ahora, en este ejemplo espec\u00edfico, las cosas funcionan bastante bien. Nuestra matriz debe ser lo suficientemente grande para acomodar la cuerda m\u00e1s larga, pero en este caso son solo 11 ranuras.<br \/>\nPerdemos un poco de espacio porque, por ejemplo, no hay claves de 1 letra en nuestros datos, ni claves entre 8 y 10 letras.<\/p>\n<p>Pero en este caso, el espacio desperdiciado tampoco es tan malo. Tomar la longitud de una cadena es agradable y r\u00e1pido, al igual que el proceso de encontrar el valor asociado con una clave determinada.<\/p>\n<p>Pero, \u00bfqu\u00e9 hacemos si nuestro conjunto de datos tiene una cadena que tiene m\u00e1s de 11 caracteres?<\/p>\n<p>\u00bfQu\u00e9 pasa si tenemos otra palabra con 5 caracteres, &#8220;India&#8221;, e intentamos asignarla a un \u00edndice usando nuestra funci\u00f3n hash? Dado que el \u00edndice 5 ya est\u00e1 ocupado, tenemos que hacer una llamada sobre qu\u00e9 hacer con \u00e9l. A esto se le llama colisi\u00f3n.<\/p>\n<p>Si nuestro conjunto de datos tuviera una cadena con mil caracteres y crearas una matriz de miles de \u00edndices para almacenar los datos, resultar\u00eda en un desperdicio de espacio. Si nuestras claves fueran palabras aleatorias del ingl\u00e9s, donde hay tantas palabras con la misma longitud, usar la longitud como funci\u00f3n hash ser\u00eda bastante in\u00fatil.<\/p>\n<h2 data-pm-slice=\"1 1 []\"><span id=\"Para_que_sirven_los_valores_hash\"><strong>\u00bfPara qu\u00e9 sirven los valores hash?<\/strong><\/span><\/h2>\n<p>Dado un <strong>identificador \u00fanico<\/strong> para un archivo, podemos usar esta informaci\u00f3n de varias formas.<\/p>\n<p>Algunas soluciones <strong>antivirus<\/strong> se basan completamente en valores hash para determinar si un archivo es malicioso o no, sin examinar el contenido o el comportamiento del archivo. Para ello, mantienen una base de datos interna de valores hash que pertenecen a <a href=\"https:\/\/protecciondatos-lopd.com\/empresas\/malware-tipos-virus\/\">malware<\/a> conocido. Al escanear un sistema, el motor AV calcula un valor hash para cada archivo ejecutable en la m\u00e1quina del usuario y prueba para ver si hay una coincidencia en su base de datos.<\/p>\n<p>Esto debe haber parecido una buena soluci\u00f3n en los primeros d\u00edas de la <strong>seguridad cibern\u00e9tica<\/strong>, pero no es dif\u00edcil ver los fallos en confiar en los valores hash en retrospectiva.<\/p>\n<p>Primero, a medida que la cantidad de muestras de malware se ha disparado, mantener una <strong>base de datos de firmas<\/strong> se ha convertido en una tarea que simplemente no escala. Se ha estimado que cada d\u00eda aparecen m\u00e1s de 500.000 muestras de malware \u00fanicas. Es muy probable que esto se deba en gran parte a que los autores de malware se dan cuenta de que pueden enga\u00f1ar a los <strong>motores antivirus<\/strong> que dependen de <strong>hashes<\/strong> para que no reconozcan una muestra con mucha facilidad. Todo lo que el atacante tiene que hacer es agregar un byte extra al final de un archivo y producir\u00e1 un hash diferente.<\/p>\n<p>Este es un proceso tan simple que los autores de malware pueden automatizar el proceso de modo que la misma URL entregue el mismo malware a las v\u00edctimas con un hash diferente cada pocos segundos.<\/p>\n<p>En segundo lugar, el fallo en el antivirus siempre ha sido que la detecci\u00f3n requiere el conocimiento previo de la amenaza, por lo que una soluci\u00f3n anti-malware por dise\u00f1o que se basa en una base de datos de valores hash conocidos siempre est\u00e1 un paso por detr\u00e1s del pr\u00f3ximo ataque.<\/p>\n<p>La respuesta a eso, por supuesto, es una soluci\u00f3n de seguridad que aprovecha la inteligencia artificial del comportamiento y que adopta un enfoque de defensa en profundidad.<\/p>\n<p>Sin embargo, eso no significa que los valores hash no tengan valor. Por el contrario, poder identificar un archivo de forma \u00fanica todav\u00eda tiene importantes beneficios. Ver\u00e1s valores hash proporcionados en firmas digitales y certificados en muchos contextos, como firma de c\u00f3digo y SSL, para ayudar a establecer que un archivo, sitio web o descarga es genuino.<\/p>\n<p>Los valores hash tambi\u00e9n son de gran ayuda para los investigadores de seguridad, los equipos de SOC, los cazadores de malware y los ingenieros inversos. Uno de los usos m\u00e1s comunes de los hash que ver\u00e1s en muchos informes t\u00e9cnicos es compartir indicadores de compromiso. Mediante el uso de valores hash, los investigadores pueden hacer referencia a muestras de malware y compartirlas con otros a trav\u00e9s de repositorios de malware como VirusTotal, VirusBay, Malpedia y MalShare.<\/p>\n<h2><span id=\"Tipos_de_funciones_hash\"><strong>Tipos de funciones hash<\/strong><\/span><\/h2>\n<p>Las funciones hash son funciones o t\u00e9cnicas que se utilizan para codificar contrase\u00f1as y otro texto sin formato en texto ilegible para almacenar y transmitir. Hay muchos <strong>tipos de Hash<\/strong> basadas en la forma en que se codifica el texto sin formato.<\/p>\n<p>Estas funciones pueden ser de dos tipos:<\/p>\n<h3 data-pm-slice=\"1 1 []\"><span id=\"Codigo_de_deteccion_de_modificaciones\"><strong>C\u00f3digo de detecci\u00f3n de modificaciones<\/strong><\/span><\/h3>\n<p>El c\u00f3digo de detecci\u00f3n de modificaciones (<strong>MDC<\/strong>) es una verificaci\u00f3n de integridad para los mensajes OpenPGP que ayuda a detectar si los mensajes han sido manipulados. MDC se introdujo en 2001 y est\u00e1 habilitado de forma predeterminada para nuevas claves en GnuPG desde 2003. Sin embargo, las claves antiguas que utilizan algoritmos antiguos no se benefician autom\u00e1ticamente de MDC.<\/p>\n<p>El m\u00e9todo de c\u00e1lculo del C\u00f3digo de detecci\u00f3n de modificaciones (MDC) define una funci\u00f3n criptogr\u00e1fica unidireccional.<\/p>\n<p>Una funci\u00f3n criptogr\u00e1fica unidireccional es una funci\u00f3n en la que es f\u00e1cil calcular la entrada en la salida pero muy dif\u00edcil calcular la salida en la entrada. MDC usa solo cifrado DES y una clave predeterminada.<\/p>\n<h3 data-pm-slice=\"1 1 []\"><span id=\"Codigo_de_autenticacion_de_mensajes\"><strong>C\u00f3digo de autenticaci\u00f3n de mensajes<\/strong><\/span><\/h3>\n<p>Un c\u00f3digo de autenticaci\u00f3n de mensajes (<strong>MAC<\/strong>) es una suma de comprobaci\u00f3n criptogr\u00e1fica de datos que utiliza una clave de sesi\u00f3n para detectar modificaciones tanto accidentales como intencionales de los datos.<\/p>\n<p>Un MAC requiere dos entradas: un mensaje y una clave secreta conocida solo por el originador del mensaje y sus destinatarios previstos. Esto permite al destinatario del mensaje verificar la integridad del mensaje y autenticar que el remitente del mensaje tiene la clave secreta compartida. Si un remitente no conoce la clave secreta, el valor hash ser\u00eda diferente, lo que le dir\u00eda al destinatario que el mensaje no es del remitente original.<\/p>\n<p>Hay cuatro tipos de MAC:<\/p>\n<ul>\n<li>incondicionalmente seguro,<\/li>\n<li>basado en funciones hash,<\/li>\n<li>basado en cifrado de flujo y<\/li>\n<li>fundamentado en cifrado de bloque<\/li>\n<\/ul>\n<p>En el pasado, el enfoque m\u00e1s com\u00fan para crear un MAC era utilizar cifrado de bloque como el Est\u00e1ndar de cifrado de datos (DES), pero Los MAC basados \u200b\u200ben hash (HMAC) que utilizan una clave secreta junto con una funci\u00f3n de hash criptogr\u00e1fica para producir un hash, se han vuelto m\u00e1s utilizados.<\/p>\n<h2><span id=\"Propiedades_de_las_funciones_hash\"><strong>Propiedades de las funciones hash<\/strong><\/span><\/h2>\n<p>Dado que existen varias <strong>hash function<\/strong> o funciones de hash diferentes, es mejor buscar las que tengan las siguientes caracter\u00edsticas.<\/p>\n<h3><span id=\"Bajo_coste\"><strong>Bajo coste<\/strong><\/span><\/h3>\n<p>El c\u00e1lculo del valor hash conlleva un coste reducido, tanto de memoria como computacional.<\/p>\n<h3 data-pm-slice=\"1 1 []\"><span id=\"Compresion\"><strong>Compresi\u00f3n<\/strong><\/span><\/h3>\n<p>Una funci\u00f3n hash comprime datos si tiene la opci\u00f3n de mapear un dominio con datos de longitud muy grande a datos con longitud m\u00e1s peque\u00f1a.<\/p>\n<h3><span id=\"Uniformidad\"><strong>Uniformidad<\/strong><\/span><\/h3>\n<p>Una funci\u00f3n hash es uniforme si para una clave escogida de forma aleatoria es igualmente posible tener un valor resumen determinado, con independencia de cualquier otro elemento.<\/p>\n<h3><span id=\"Rango_variable\"><strong>Rango variable<\/strong><\/span><\/h3>\n<p>En algunas funciones hash el rango de valores resumen puede ser distinto a lo largo del tiempo.<\/p>\n<p>Por ejemplo, funciones hash utilizadas para tablas resumen que necesitan expandirse. En estos casos es necesario pasar a la funci\u00f3n hash un par\u00e1metro que le permita conocer en qu\u00e9 rango se mueve la ejecuci\u00f3n para calcular el valor resumen.<\/p>\n<h3 data-pm-slice=\"1 1 []\"><span id=\"Inyectividad\"><strong>Inyectividad<\/strong><\/span><\/h3>\n<p>Se dice que la funci\u00f3n hash es inyectiva cuando cada dato de entrada se mapea a un valor resumen distinto. En este caso, se considera la funci\u00f3n hash como perfecta. Para que se d\u00e9, es necesario que la cardinalidad del conjunto dominio sea inferior o igual a la cardinalidad del conjunto imagen.<\/p>\n<p>Normalmente, s\u00f3lo se dan funciones hash perfectas cuando las entradas est\u00e1n preestablecidas. Por ejemplo, mapear los d\u00edas del a\u00f1o en n\u00fameros del 1 al 366 seg\u00fan el orden de aparici\u00f3n.<\/p>\n<h3 data-pm-slice=\"1 1 []\"><span id=\"Determinismo\"><strong>Determinismo<\/strong><\/span><\/h3>\n<p>Una funci\u00f3n hash se considera determinista cuando dada una cadena de entrada siempre devuelve el mismo valor hash. Es decir, el valor hash es el resultado de aplicar un algoritmo que opera solo sobre la cadena de entrada.<\/p>\n<p>Ejemplos de funciones hash no deterministas son aquellas que dependen de par\u00e1metros externos, como generadores de n\u00fameros pseudoaleatorios o la fecha. Tampoco son deterministas aquellas funciones hash que dependen de la direcci\u00f3n de memoria en la que est\u00e1 almacenada la cadena de entrada. Esa direcci\u00f3n es accidental y no se considera un cambio de la cadena entrada en s\u00ed.<\/p>\n<h3 data-pm-slice=\"1 1 []\"><span id=\"Analisis_de_resistencia_frente_a_colisiones\"><strong>An\u00e1lisis de resistencia frente a colisiones<\/strong><\/span><\/h3>\n<p>Se dice que una funci\u00f3n hash tiene resistencia a colisiones cuando es dif\u00edcil encontrar dos entradas que tengan el mismo valor resumen.<\/p>\n<p>Como encontrar una segunda preimagen no puede ser m\u00e1s f\u00e1cil que encontrar una colisi\u00f3n, entonces la resistencia a colisiones incluye la propiedad de resistencia a la segunda preimagen.<\/p>\n<h3 data-pm-slice=\"1 1 []\"><span id=\"Normalizacion_de_datos\"><strong>Normalizaci\u00f3n de datos<\/strong><\/span><\/h3>\n<p>En algunas aplicaciones, las cadenas de entrada pueden contener caracter\u00edsticas que son irrelevantes cuando comparamos las cadenas.<\/p>\n<p>Por ejemplo en algunas aplicaciones las may\u00fasculas pueden ser irrelevantes. Por tanto para hallar el valor hash es interesante ignorar las distinciones no relevantes entre las cadenas de entrada. De esta forma cadenas distintas con diferencias no relevantes, tienen asociados valores hash iguales.<\/p>\n<h3><span id=\"Continuidad\"><strong>Continuidad<\/strong><\/span><\/h3>\n<p>Una funci\u00f3n hash es continua cuando una modificaci\u00f3n min\u00fascula en la cadena de entrada ocasiona peque\u00f1os cambios en el valor hash.<\/p>\n<p>En una funci\u00f3n hash no existe correlaci\u00f3n cuando los bits de las cadenas de entrada y los bits de las cadenas de salida no est\u00e1n relacionados, es decir, cuando una peque\u00f1a modificaci\u00f3n en la cadena de entrada produce cambios en el valor hash comparables a un cambio de cualquier otro tipo.<\/p>\n<h2 data-pm-slice=\"1 1 []\"><span id=\"Aplicaciones_de_las_funciones_hash\"><strong>Aplicaciones de las funciones hash<\/strong><\/span><\/h2>\n<p>Dentro de las aplicaciones de las funciones hash, destacamos las siguientes:<\/p>\n<h3><span id=\"Almacenamiento_de_contrasena\"><strong>Almacenamiento de contrase\u00f1a<\/strong><\/span><\/h3>\n<p>Debido a la propiedad de resistencia previa a la imagen y resistencia a colisiones, las funciones hash son ideales para almacenar las <strong>contrase\u00f1as<\/strong>. Por lo tanto, los valores que se almacenan en la base de datos son el ID de usuario en su forma original y el valor hash de la contrase\u00f1a. Cada vez que se introduce el Id y la contrase\u00f1a en un sistema, busca el Id de usuario, si est\u00e1 disponible, coincide con los valores hash de la contrase\u00f1a ingresada y la contrase\u00f1a que ya est\u00e1 en la base de datos. Si ambos son iguales, se concede acceso.<\/p>\n<p>Esto proporciona:<\/p>\n<ul>\n<li>Autenticaci\u00f3n: Siempre que el usuario ingresa la identificaci\u00f3n y la contrase\u00f1a, la identificaci\u00f3n se compara con la que tiene el presente en la base de datos, y la contrase\u00f1a ingresada se convierte en su valor hash y se compara con la almacenada en la base de datos.<\/li>\n<li>Seguridad de alto nivel: la t\u00e9cnica de la funci\u00f3n hash proporciona un nivel de seguridad extremo, porque incluso si el pirata inform\u00e1tico o atacante tiene \u00e9xito en ingresar a la base de datos del sistema, todo lo que obtiene es el ID de usuario y el valor hash de la contrase\u00f1a.<\/li>\n<\/ul>\n<h3><span id=\"Comprobacion_de_la_integridad_de_los_datos\">Comprobaci\u00f3n de la integridad de los datos<\/span><\/h3>\n<p>Para mantener la integridad de los datos, el remitente env\u00eda tanto el mensaje como su valor hash al usuario. El receptor luego verifica si el valor hash del mensaje es el mismo que el valor hash enviado por el remitente.<\/p>\n<p>Esto asegura que no se haya realizado ninguna modificaci\u00f3n en los datos mientras se transmiten. Este proceso de verificaci\u00f3n de integridad se puede ver en sistemas de correo electr\u00f3nico, aplicaciones de mensajer\u00eda, etc. Sin embargo, como todo ocurre en el back-end, el usuario no puede identificar este proceso.<\/p>\n<h3><span id=\"Firma_digital\"><strong>Firma digital<\/strong><\/span><\/h3>\n<p>Por lo general, se utiliza una firma para vincular al signatario al mensaje. La firma digital es, por tanto, una t\u00e9cnica que vincula a una persona o entidad a los datos digitales.<\/p>\n<p>Esta vinculaci\u00f3n asegura que la persona que env\u00eda los datos es la \u00fanica responsable de serlo y esta vinculaci\u00f3n puede ser verificada por el receptor y el tercero. Esta firma digital tambi\u00e9n se almacena mediante funciones hash para que la firma de nadie pueda ser robada o mal utilizada.<\/p>\n<h2 data-pm-slice=\"1 1 []\"><span id=\"Generadores_de_hash_online\"><strong>Generadores de hash online<\/strong><\/span><\/h2>\n<p>Para finalizar, vamos a ver los principales generadores de hash online.<\/p>\n<h3><span id=\"Hash_Generator\"><strong>Hash Generator<\/strong><\/span><\/h3>\n<p>Hash Generator es la herramienta de generaci\u00f3n de hash universal gratuita que automatiza la generaci\u00f3n de 14 tipos diferentes de hashes o sumas de comprobaci\u00f3n.<\/p>\n<p>Admite la mayor\u00eda de los hash populares, incluida la familia MD5, la familia SHA, BASE64, LM , NTLM, CRC32, ROT13, RIPEMD, ALDER32, HAVAL, WHIRLPOOL, etc.<\/p>\n<p>Incluso puede generar hash para el archivo, as\u00ed como tambi\u00e9n la entrada de texto. El usuario puede ingresar o pegar directamente cualquier texto del portapapeles y generar hash. Tambi\u00e9n es compatible con la &#8216;interfaz de arrastrar y soltar&#8217;, que te permite arrastrar r\u00e1pidamente archivos a la herramienta para generar hash.<\/p>\n<p>HashGenerator es una aplicaci\u00f3n GUI que viene con una interfaz simple y la hace f\u00e1cil de usar incluso para principiantes.<\/p>\n<h3><span id=\"60_Tools\"><strong>60 Tools<\/strong><\/span><\/h3>\n<p>Es un <strong>generador de hash<\/strong> en l\u00ednea genera hashes (tambi\u00e9n llamados sumas de comprobaci\u00f3n) con muchos algoritmos de hash. Esta herramienta tambi\u00e9n permite hash de iteraciones en una ejecuci\u00f3n. Tambi\u00e9n puede generar una suma de comprobaci\u00f3n de archivo .<\/p>\n<p>Se admiten los siguientes algoritmos <strong>hash<\/strong>: <strong>md5<\/strong>, sha1, sha256, sha512, ripemd160, ripemd320, whirlpool, tiger192,4, snefru256, gost, gost-crypto, haval256,5.<\/p>\n<h3><span id=\"HashMyFiles\"><strong>HashMyFiles<\/strong><\/span><\/h3>\n<p>Desarrolladores de software siempre presentes, HashMyFiles de Nirsoft es un \u00fatil generador de hash port\u00e1til. Aparte de la mayor\u00eda de las herramientas, HashMyFiles permite la generaci\u00f3n de hash por lotes. Puedes cargar HashMyFiles con una lista de archivos para los que deseas el hash, configurarlo para que funcione y recibir hash para toda la lista.<\/p>\n<p>HashMyFiles mostrar\u00e1 hashes para MD5, SHAxxx y CRC32. Al igual que Hash Generator, puedes agregar una entrada HashMyFiles a tu men\u00fa contextual del bot\u00f3n derecho. Sin embargo, HashMyFiles te permite agregar una carpeta completa para hash a trav\u00e9s del men\u00fa contextual, en lugar de la opci\u00f3n de archivo \u00fanico de Hash Generator.<\/p>\n<h3><span id=\"HashTab\"><strong>HashTab<\/strong><\/span><\/h3>\n<p>HashTab es una versi\u00f3n diferente de la generaci\u00f3n de hash de archivos. En lugar de usar una interfaz separada para generar los hashes de tus archivos, HashTab agrega una pesta\u00f1a a su men\u00fa Propiedades. Luego, en lugar de arrastrar y soltar un archivo en el programa, haz clic con el bot\u00f3n derecho en el archivo, selecciona Propiedades y abre la pesta\u00f1a File Hashes.<\/p>\n<p>HashTab genera hashes para MD5, CRC32 y SHA1 de forma predeterminada. Las opciones HashTab te permiten agregar hash para m\u00e1s de 25 hash adicionales, incluida la familia SHA, RIPEMD, TIGER y WHIRLPOOL.<\/p>\n<p>Puedes agregar m\u00e1s hashes a la pesta\u00f1a File Hashes abriendo el men\u00fa Propiedades, seleccionando la pesta\u00f1a File Hashes y seleccionando Configuraci\u00f3n. Marca los hashes que deseas agregar y presiona OK.<\/p>\n<p>Otra buena caracter\u00edstica de HashTab es el comprobador de archivos integrado. Puedes realizar una referencia cruzada de cualquier archivo desde la pesta\u00f1a Hash de archivo utilizando la opci\u00f3n de men\u00fa Comparar un archivo.<\/p>\n<h3><span id=\"QuickHash\"><strong>QuickHash<\/strong><\/span><\/h3>\n<p>QuickHash es un generador de hash de c\u00f3digo abierto para Windows, macOS y Linux. Tambi\u00e9n es una de las opciones de verificaci\u00f3n y generaci\u00f3n de hash con m\u00e1s funciones en esta lista.<\/p>\n<p>Aunque la cantidad de hashes que puede usar es peque\u00f1a, solo MD5, SHA1, SHA256, SHA512 y xxHash64, Quick Hash tiene un mont\u00f3n de funciones adicionales.<\/p>\n<p>QuickHash puede aplicar hash a una carpeta completa, comparar dos archivos individuales, comparar directorios completos o un disco completo. Por supuesto, este \u00faltimo toma una cantidad considerable de tiempo debido al tama\u00f1o, pero la opci\u00f3n es agradable de ver. Tambi\u00e9n puede trabajar en un documento de texto l\u00ednea por l\u00ednea, aplicando el hash de cada uno a medida que avanza.<\/p>\n<h3><span id=\"MultiHasher\"><strong>MultiHasher<\/strong><\/span><\/h3>\n<p>MultiHasher presenta a los usuarios una amplia gama de herramientas de verificaci\u00f3n y generaci\u00f3n de hash en un solo paquete. Como muchos de los mejores programas de verificaci\u00f3n y generaci\u00f3n de hash, MultiHasher tiene varias opciones de hash. Puede arrastrar y soltar un solo archivo o una carpeta completa para hacer hash o generar un hash para una cadena de texto.<\/p>\n<p>MultiHasher genera hashes en MD5, SHA1, SHA256, SHA384, SHA512 o RIPEMD-160.<\/p>\n<p>MultiHasher tambi\u00e9n tiene una caracter\u00edstica que no he visto en ning\u00fan otro generador y verificador de hash de archivos: integra la base de datos de verificaci\u00f3n de archivos maliciosos de VirusTotal. Puede verificar que el hash del archivo descargado coincida con la fuente de descarga, as\u00ed como informar a VirusTotal de cualquier cosa adversa o maliciosa al mismo tiempo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un concepto que encontrar\u00e1s una y otra vez en cualquier discusi\u00f3n sobre ciberseguridad es el concepto de hash. Estas largas cadenas de&#8230;<\/p>\n","protected":false},"author":5,"featured_media":16971,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[523],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u25b7 \u00bfQu\u00e9 es y para qu\u00e9 sirve un hash? | Grupo Atico34<\/title>\n<meta name=\"description\" content=\"Todo lo que debes saber sobre el hash, qu\u00e9 es, c\u00f3mo funciona, para qu\u00e9 sirve. tipos de funciones hash y generadores m\u00e1s recomendados \u00a1Descubre m\u00e1s aqu\u00ed!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u25b7 \u00bfQu\u00e9 es y para qu\u00e9 sirve un hash? | Grupo Atico34\" \/>\n<meta property=\"og:description\" content=\"Todo lo que debes saber sobre el hash, qu\u00e9 es, c\u00f3mo funciona, para qu\u00e9 sirve. tipos de funciones hash y generadores m\u00e1s recomendados \u00a1Descubre m\u00e1s aqu\u00ed!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/\" \/>\n<meta property=\"og:site_name\" content=\"Grupo Atico34\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/grupoatico34\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-27T07:29:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-07T16:35:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/protecciondatos-lopd.com\/empresas\/wp-content\/uploads\/2020\/10\/hash.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"933\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@grupoatico34\" \/>\n<meta name=\"twitter:site\" content=\"@grupoatico34\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marina\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/#organization\",\"name\":\"\\u00c1tico34 Protecci\\u00f3n de datos para empresas y aut\\u00f3nomos\",\"url\":\"https:\/\/protecciondatos-lopd.com\/empresas\/\",\"sameAs\":[\"https:\/\/www.facebook.com\/grupoatico34\/\",\"https:\/\/twitter.com\/grupoatico34\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/#logo\",\"inLanguage\":\"es\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"\\u00c1tico34 Protecci\\u00f3n de datos para empresas y aut\\u00f3nomos\"},\"image\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/#website\",\"url\":\"https:\/\/protecciondatos-lopd.com\/empresas\/\",\"name\":\"Grupo Atico34\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/protecciondatos-lopd.com\/empresas\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#primaryimage\",\"inLanguage\":\"es\",\"url\":\"https:\/\/protecciondatos-lopd.com\/empresas\/wp-content\/uploads\/2020\/10\/hash.jpg\",\"contentUrl\":\"https:\/\/protecciondatos-lopd.com\/empresas\/wp-content\/uploads\/2020\/10\/hash.jpg\",\"width\":1400,\"height\":933,\"caption\":\"hash\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#webpage\",\"url\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/\",\"name\":\"\\u25b7 \\u00bfQu\\u00e9 es y para qu\\u00e9 sirve un hash? | Grupo Atico34\",\"isPartOf\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#primaryimage\"},\"datePublished\":\"2020-10-27T07:29:15+00:00\",\"dateModified\":\"2024-11-07T16:35:17+00:00\",\"description\":\"Todo lo que debes saber sobre el hash, qu\\u00e9 es, c\\u00f3mo funciona, para qu\\u00e9 sirve. tipos de funciones hash y generadores m\\u00e1s recomendados \\u00a1Descubre m\\u00e1s aqu\\u00ed!\",\"breadcrumb\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/protecciondatos-lopd.com\/empresas\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\\u00bfQu\\u00e9 es y para qu\\u00e9 sirve un Hash?\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#webpage\"},\"author\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/#\/schema\/person\/9339deda9efa24457e287ee173035725\"},\"headline\":\"\\u00bfQu\\u00e9 es y para qu\\u00e9 sirve un Hash?\",\"datePublished\":\"2020-10-27T07:29:15+00:00\",\"dateModified\":\"2024-11-07T16:35:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#webpage\"},\"wordCount\":3449,\"publisher\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/#organization\"},\"image\":{\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/protecciondatos-lopd.com\/empresas\/wp-content\/uploads\/2020\/10\/hash.jpg\",\"articleSection\":[\"Ciberseguridad\"],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/protecciondatos-lopd.com\/empresas\/#\/schema\/person\/9339deda9efa24457e287ee173035725\",\"name\":\"Marina\",\"url\":\"https:\/\/protecciondatos-lopd.com\/empresas\/author\/ana\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u25b7 \u00bfQu\u00e9 es y para qu\u00e9 sirve un hash? | Grupo Atico34","description":"Todo lo que debes saber sobre el hash, qu\u00e9 es, c\u00f3mo funciona, para qu\u00e9 sirve. tipos de funciones hash y generadores m\u00e1s recomendados \u00a1Descubre m\u00e1s aqu\u00ed!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/","og_locale":"es_ES","og_type":"article","og_title":"\u25b7 \u00bfQu\u00e9 es y para qu\u00e9 sirve un hash? | Grupo Atico34","og_description":"Todo lo que debes saber sobre el hash, qu\u00e9 es, c\u00f3mo funciona, para qu\u00e9 sirve. tipos de funciones hash y generadores m\u00e1s recomendados \u00a1Descubre m\u00e1s aqu\u00ed!","og_url":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/","og_site_name":"Grupo Atico34","article_publisher":"https:\/\/www.facebook.com\/grupoatico34\/","article_published_time":"2020-10-27T07:29:15+00:00","article_modified_time":"2024-11-07T16:35:17+00:00","og_image":[{"width":1400,"height":933,"url":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-content\/uploads\/2020\/10\/hash.jpg","path":"\/home\/protecc1\/public_html\/empresas\/wp-content\/uploads\/2020\/10\/hash.jpg","size":"full","id":16971,"alt":"hash","pixels":1306200,"type":"image\/jpeg"}],"twitter_card":"summary","twitter_creator":"@grupoatico34","twitter_site":"@grupoatico34","twitter_misc":{"Escrito por":"Marina","Tiempo de lectura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/protecciondatos-lopd.com\/empresas\/#organization","name":"\u00c1tico34 Protecci\u00f3n de datos para empresas y aut\u00f3nomos","url":"https:\/\/protecciondatos-lopd.com\/empresas\/","sameAs":["https:\/\/www.facebook.com\/grupoatico34\/","https:\/\/twitter.com\/grupoatico34"],"logo":{"@type":"ImageObject","@id":"https:\/\/protecciondatos-lopd.com\/empresas\/#logo","inLanguage":"es","url":"","contentUrl":"","caption":"\u00c1tico34 Protecci\u00f3n de datos para empresas y aut\u00f3nomos"},"image":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/#logo"}},{"@type":"WebSite","@id":"https:\/\/protecciondatos-lopd.com\/empresas\/#website","url":"https:\/\/protecciondatos-lopd.com\/empresas\/","name":"Grupo Atico34","description":"","publisher":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/protecciondatos-lopd.com\/empresas\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"ImageObject","@id":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#primaryimage","inLanguage":"es","url":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-content\/uploads\/2020\/10\/hash.jpg","contentUrl":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-content\/uploads\/2020\/10\/hash.jpg","width":1400,"height":933,"caption":"hash"},{"@type":"WebPage","@id":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#webpage","url":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/","name":"\u25b7 \u00bfQu\u00e9 es y para qu\u00e9 sirve un hash? | Grupo Atico34","isPartOf":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/#website"},"primaryImageOfPage":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#primaryimage"},"datePublished":"2020-10-27T07:29:15+00:00","dateModified":"2024-11-07T16:35:17+00:00","description":"Todo lo que debes saber sobre el hash, qu\u00e9 es, c\u00f3mo funciona, para qu\u00e9 sirve. tipos de funciones hash y generadores m\u00e1s recomendados \u00a1Descubre m\u00e1s aqu\u00ed!","breadcrumb":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/protecciondatos-lopd.com\/empresas\/hash\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/protecciondatos-lopd.com\/empresas\/"},{"@type":"ListItem","position":2,"name":"\u00bfQu\u00e9 es y para qu\u00e9 sirve un Hash?"}]},{"@type":"Article","@id":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#article","isPartOf":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#webpage"},"author":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/#\/schema\/person\/9339deda9efa24457e287ee173035725"},"headline":"\u00bfQu\u00e9 es y para qu\u00e9 sirve un Hash?","datePublished":"2020-10-27T07:29:15+00:00","dateModified":"2024-11-07T16:35:17+00:00","mainEntityOfPage":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#webpage"},"wordCount":3449,"publisher":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/#organization"},"image":{"@id":"https:\/\/protecciondatos-lopd.com\/empresas\/hash\/#primaryimage"},"thumbnailUrl":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-content\/uploads\/2020\/10\/hash.jpg","articleSection":["Ciberseguridad"],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/protecciondatos-lopd.com\/empresas\/#\/schema\/person\/9339deda9efa24457e287ee173035725","name":"Marina","url":"https:\/\/protecciondatos-lopd.com\/empresas\/author\/ana\/"}]}},"_links":{"self":[{"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/posts\/16848"}],"collection":[{"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/comments?post=16848"}],"version-history":[{"count":4,"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/posts\/16848\/revisions"}],"predecessor-version":[{"id":45856,"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/posts\/16848\/revisions\/45856"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/media\/16971"}],"wp:attachment":[{"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/media?parent=16848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/categories?post=16848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/protecciondatos-lopd.com\/empresas\/wp-json\/wp\/v2\/tags?post=16848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}