{"id":71359,"date":"2023-11-07T11:03:08","date_gmt":"2023-11-07T10:03:08","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=71359&#038;preview=true&#038;preview_id=71359"},"modified":"2023-11-16T10:03:52","modified_gmt":"2023-11-16T09:03:52","slug":"python-hashing","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/","title":{"rendered":"Lo Que Tienes que Saber sobre el Hashing en Python"},"content":{"rendered":"<p>Los <a href=\"https:\/\/kinsta.com\/es\/blog\/programacion-orientada-objetos-python\/\">programadores de Python<\/a> utilizan el hashing para transformar los datos de entrada en un valor de tama\u00f1o fijo. Este valor representa los datos de forma \u00fanica, y la t\u00e9cnica de hashing facilita la transmisi\u00f3n y el almacenamiento seguro de diversas formas de datos.<\/p>\n<p>El hashing protege los datos de accesos no autorizados y manipulaciones. Es un ingrediente esencial en los casos de uso de integridad y <a href=\"https:\/\/kinsta.com\/es\/blog\/seguridad-nube\/\">seguridad<\/a> de los datos.<\/p>\n<p>Este art\u00edculo explora todo lo que necesitas saber sobre el hashing en Python. Se sumerge en los usos del hashing y destaca varios algoritmos de hashing que hacen que tu c\u00f3digo sea m\u00e1s eficiente, seguro y fiable.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>\u00bfQu\u00e9 Es el Hashing en Python?<\/h2>\n<p>El hashing convierte los datos de entrada, como una cadena, un archivo o un objeto, en una cadena de bytes de tama\u00f1o fijo. El hash o resumen representa la entrada de una forma \u00fanica y reproducible.<\/p>\n<p>El hash desempe\u00f1a un papel importante en la detecci\u00f3n de la manipulaci\u00f3n de datos y en la mejora de la seguridad. Puede calcular un valor hash para un archivo, mensaje u otros datos. Una aplicaci\u00f3n almacena el hash de forma segura para verificar posteriormente que los datos no han sido manipulados.<\/p>\n<p>Uno de los usos m\u00e1s comunes del hash en seguridad es el <a href=\"https:\/\/kinsta.com\/es\/blog\/administradores-contrasenas\/\">almacenamiento de contrase\u00f1as<\/a>. El hash es una alternativa viable al almacenamiento de contrase\u00f1as en texto plano en una base de datos. Cuando un usuario introduce su contrase\u00f1a, el sistema la somete a hashing antes de almacenarla en la base de datos. Si un hacker accede a la base de datos, comprobar\u00e1 que la contrase\u00f1a es dif\u00edcil de robar.<\/p>\n<p>Las funciones hash de Python hacen que todo esto sea posible. Estas funciones matem\u00e1ticas permiten a una aplicaci\u00f3n manipular datos en valores hash.<\/p>\n<h2>C\u00f3mo Hacer una Funci\u00f3n Hashing Eficaz<\/h2>\n<p>Una funci\u00f3n hash debe cumplir los siguientes criterios para ser eficaz y segura:<\/p>\n<ul>\n<li><strong>Determinista<\/strong> \u2014 Dando la misma entrada, la funci\u00f3n debe devolver siempre la misma salida.<\/li>\n<li><strong>Eficiente <\/strong>\u2014 Debe ser eficiente computacionalmente al calcular el valor hash de cualquier entrada dada.<\/li>\n<li><strong>Resistente a las colisiones<\/strong> \u2014 La funci\u00f3n debe minimizar la posibilidad de que dos entradas obtengan el mismo valor hash.<\/li>\n<li><strong>Uniforme <\/strong>\u2014 Los resultados de la funci\u00f3n deben distribuirse uniformemente en el rango de posibles valores hash.<\/li>\n<li><strong>No invertible<\/strong> \u2014\u00a0 Debe ser improbable que un ordenador calcule el valor de entrada de la funci\u00f3n bas\u00e1ndose en el valor hash.<\/li>\n<li><strong>No predecible<\/strong> \u2014 Predecir las salidas de la funci\u00f3n debe ser un reto, si se dan un conjunto de entradas.<\/li>\n<li><strong>Sensible a los cambios de entrada<\/strong> \u2014 La funci\u00f3n debe ser sensible a peque\u00f1as diferencias en la entrada. Los cambios leves deben provocar una gran diferencia en el valor hash resultante.<\/li>\n<\/ul>\n<h2>Casos de Uso del Hashing<\/h2>\n<p>Una vez que tengas una funci\u00f3n hashing adecuada con todas estas caracter\u00edsticas, puedes aplicarla a varios casos de uso. Las funciones hashing funcionan bien para:<\/p>\n<ul>\n<li><strong>Almacenamiento de contrase\u00f1as<\/strong> \u2014 El hashing es una de las mejores formas de almacenar las contrase\u00f1as de los usuarios en los sistemas modernos. Python combina varios m\u00f3dulos para hacer hash y asegurar las contrase\u00f1as antes de almacenarlas en una base de datos.<\/li>\n<li><strong>Almacenamiento en cach\u00e9<\/strong> \u2014 El hashing almacena la salida de una funci\u00f3n para ahorrar tiempo al llamarla m\u00e1s tarde.<\/li>\n<li><strong>Recuperaci\u00f3n de datos<\/strong> \u2014 Python utiliza una tabla hash con una estructura de datos de diccionario incorporada para recuperar r\u00e1pidamente valores por clave.<\/li>\n<li><strong>Firmas digitales<\/strong> \u2014 El hashing puede verificar la autenticidad de los mensajes que tienen firmas digitales.<\/li>\n<li><strong>Comprobaci\u00f3n de la integridad de los archivos<\/strong> \u2014 El hashing puede comprobar la integridad de un archivo durante su transferencia y descarga.<\/li>\n<\/ul>\n<h2>Funci\u00f3n Hashing Integrada en Python<\/h2>\n<p>La funci\u00f3n hashing integrada de Python, <code>hash()<\/code>, devuelve un valor entero que representa el objeto de entrada. El c\u00f3digo utiliza el valor hash resultante para determinar la ubicaci\u00f3n del objeto en la tabla hash. Esta tabla hash es una estructura de datos que implementa diccionarios y conjuntos.<\/p>\n<p>El siguiente c\u00f3digo muestra c\u00f3mo funciona la funci\u00f3n <code>hash()<\/code>:<\/p>\n<pre><code class=\"language-python\">my_string = \"hello world\"\n\n# Calculate the hash value of the string\nhash_value = hash(my_string)\n\n# Print the string and its hash value\nprint(\"String: \", my_string)\nprint(\"Hash value: \", hash_value)<\/code><\/pre>\n<p>Si guardamos ese c\u00f3digo en un archivo llamado <strong>hash.py<\/strong>, podemos ejecutarlo (y ver la salida) as\u00ed:<\/p>\n<pre><code class=\"language-bash\">% python3 hash.py\nString:  hello world\nHash value:  2213812294562653681<\/code><\/pre>\n<p>Ejecut\u00e9moslo de nuevo:<\/p>\n<pre><code class=\"language-bash\">% python3 hash.py\nString:  hello world\nHash value:  -631897764808734609<\/code><\/pre>\n<p>El valor hash es diferente cuando se invoca por segunda vez porque las versiones recientes de Python (a partir de la 3.3) aplican, por defecto, una semilla hash aleatoria para esta funci\u00f3n. La semilla cambia en cada invocaci\u00f3n de Python. Dentro de una misma instancia, los resultados ser\u00e1n id\u00e9nticos.<\/p>\n<p>Por ejemplo, pongamos este c\u00f3digo en nuestro archivo <strong>hash.py<\/strong>:<\/p>\n<pre><code class=\"language-python\">my_string = \"hello world\"\n\n# Calculate 2 hash values of the string\nhash_value1 = hash(my_string)\nhash_value2 = hash(my_string)\n\n# Print the string and its hash values\nprint(\"String: \", my_string)\nprint(\"Hash value 1: \", hash_value1)\nprint(\"Hash value 2: \", hash_value2)<\/code><\/pre>\n<p>Cuando se ejecuta, vemos algo as\u00ed<\/p>\n<pre><code class=\"language-bash\">String: hello world\nHash value 1:  -7779434013116951864\nHash value 2:  -7779434013116951864<\/code><\/pre>\n<h3>Limitaciones del Hashing<\/h3>\n<p>Aunque la funci\u00f3n hash de Python es prometedora para diversos casos de uso, sus limitaciones la hacen inadecuada para fines de seguridad. Aqu\u00ed te explicamos c\u00f3mo:<\/p>\n<ul>\n<li><strong>Ataques de colisi\u00f3n<\/strong> \u2014 Se produce una colisi\u00f3n cuando dos entradas diferentes producen el mismo valor hash. Un atacante podr\u00eda utilizar el mismo m\u00e9todo de generaci\u00f3n de entradas para eludir las medidas de seguridad que se basan en valores hash para la autenticaci\u00f3n o la comprobaci\u00f3n de la integridad de los datos.<\/li>\n<li><strong>Tama\u00f1o de entrada limitado<\/strong> \u2014 Dado que las funciones hash producen una salida de tama\u00f1o fijo independientemente del tama\u00f1o de la entrada, una entrada de tama\u00f1o mayor que la salida de la funci\u00f3n hash puede provocar una colisi\u00f3n.<\/li>\n<li><strong>Previsibilidad <\/strong>\u2014 Una funci\u00f3n hash debe ser determinista, dando la misma salida cada vez que proporciones la misma entrada. Los atacantes podr\u00edan aprovecharse de esta debilidad precompilando valores hash para muchas entradas, y compar\u00e1ndolos despu\u00e9s con los hashes de los valores objetivo para encontrar una coincidencia. Este proceso se denomina ataque de tabla arco iris.<\/li>\n<\/ul>\n<p>Para evitar ataques y mantener tus datos a salvo, utiliza algoritmos hash seguros dise\u00f1ados para resistir estas vulnerabilidades.<\/p>\n<h2>Utilizar hashlib para un Hashing Seguro en Python<\/h2>\n<p>En lugar de utilizar el m\u00f3dulo incorporado de Python <code>hash()<\/code>, utiliza <strong>hashlib<\/strong> para un hashing m\u00e1s seguro. Este m\u00f3dulo de Python ofrece una variedad de algoritmos hash para hacer hash de datos de forma segura. Estos algoritmos incluyen MD5, SHA-1 y la familia m\u00e1s segura SHA-2, que incluye SHA-256, SHA-384, SHA-512 y otros.<\/p>\n<h3>MD5<\/h3>\n<p>El algoritmo criptogr\u00e1fico MD5, ampliamente utilizado, revela un valor hash de 128 bits. Utiliza un c\u00f3digo como el siguiente para generar un hash MD5 utilizando el constructor <code>md5<\/code> de <strong>hashlib<\/strong>:<\/p>\n<pre><code class=\"language-python\">import hashlib\n\ntext = \"Hello World\"\nhash_object = hashlib.md5(text.encode())\nprint(hash_object.hexdigest())<\/code><\/pre>\n<p>El resultado de lo anterior (en nuestro archivo <strong>hash.py<\/strong> ) ser\u00e1 consistente en todas las invocaciones:<\/p>\n<p><code>b10a8db164e0754105b7a99be72e3fe5<\/code><\/p>\n<p><strong>Nota:<\/strong> El m\u00e9todo <code>hexdigest()<\/code> del c\u00f3digo anterior devuelve el hash en un formato hexadecimal seguro para cualquier presentaci\u00f3n no binaria (como el correo electr\u00f3nico).<\/p>\n<h3>SHA-1<\/h3>\n<p>La funci\u00f3n hash SHA-1 asegura los datos haciendo un valor hash de 160 bits. Utiliza el c\u00f3digo siguiente con el constructor <code>sha1<\/code> para el hash SHA-1 del m\u00f3dulo <strong>hashlib<\/strong>:<\/p>\n<pre><code class=\"language-python\">import hashlib\n\ntext = \"Hello World\"\nhash_object = hashlib.sha1(text.encode())\nprint(hash_object.hexdigest())<\/code><\/pre>\n<p>La salida de lo anterior:<\/p>\n<p><code>0a4d55a8d778e5022fab701977c5d840bbc486d0<\/code><\/p>\n<h3>SHA-256<\/h3>\n<p>Hay varias opciones de hash en la familia SHA-2. El constructor <strong>hashlib<\/strong> SHA-256 genera una versi\u00f3n m\u00e1s segura de esa familia con un valor hash de 256 bits.<\/p>\n<p>Los programadores suelen utilizar SHA-256 para criptograf\u00eda, como firmas digitales o c\u00f3digos de autenticaci\u00f3n de mensajes. El siguiente c\u00f3digo muestra c\u00f3mo generar un hash SHA-256:<\/p>\n<pre><code class=\"language-python\">import hashlib\n\ntext = \"Hello World\"\nhash_object = hashlib.sha256(text.encode())\nprint(hash_object.hexdigest())<\/code><\/pre>\n<p>El resultado de lo anterior:<\/p>\n<p><code>a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e<\/code><\/p>\n<h3>SHA-384<\/h3>\n<p>SHA-384 es un valor hash de 384 bits. Los programadores suelen utilizar la funci\u00f3n SHA-384 en aplicaciones que necesitan una mayor seguridad de los datos.<\/p>\n<p>Bas\u00e1ndote en los ejemplos anteriores, probablemente puedas adivinar que \u00e9sta es una sentencia que generar\u00e1 un hash SHA-384:<\/p>\n<pre><code class=\"language-python\">hash_object = hashlib.sha384(text.encode())<\/code><\/pre>\n<h3>SHA-512<\/h3>\n<p>SHA-512 es el miembro m\u00e1s seguro de la familia SHA-2. Genera un valor hash de 512 bits. Los programadores lo utilizan para aplicaciones de alto rendimiento, como la comprobaci\u00f3n de la integridad de los datos. El c\u00f3digo siguiente muestra c\u00f3mo generar un hash SHA-512 con el m\u00f3dulo <strong>hashlib<\/strong> de Python:<\/p>\n<pre><code class=\"language-python\">hash_object = hashlib.sha512(text.encode())<\/code><\/pre>\n<h2>C\u00f3mo Elegir un Algoritmo Hashing<\/h2>\n<p>Como estos algoritmos son distintos, selecciona tu algoritmo hashing en funci\u00f3n de tu caso de uso y de sus requisitos de seguridad. Aqu\u00ed tienes algunos pasos a seguir:<\/p>\n<ul>\n<li><strong>Comprende el caso de uso<\/strong> \u2014 Tu caso de uso determina qu\u00e9 tipo de algoritmo utilizar. Por ejemplo, al almacenar datos sensibles, como contrase\u00f1as, tu algoritmo hashing debe proteger contra ataques de fuerza bruta.<\/li>\n<li><strong>Considera tus requisitos de seguridad<\/strong> \u2014 Los requisitos de seguridad de tu caso de uso dependen del tipo de datos que pretendas almacenar, y determinan qu\u00e9 tipo de algoritmo elegir. Por ejemplo, un algoritmo hashing robusto es mejor para almacenar informaci\u00f3n muy sensible.<\/li>\n<li><strong>Investiga los algoritmos hashing disponibles<\/strong> \u2014 Explora cada tipo de hashing para comprender sus puntos fuertes y d\u00e9biles. Esta informaci\u00f3n te ayuda a seleccionar la mejor opci\u00f3n para tu caso de uso.<\/li>\n<li><strong>Eval\u00faa el algoritmo hashing seleccionado<\/strong> \u2014 Una vez elegido un algoritmo hashing, eval\u00faa si cumple tus requisitos de seguridad. Este proceso puede implicar probarlo contra ataques o vulnerabilidades conocidos.<\/li>\n<li><strong>Implementa y prueba el algoritmo hashing<\/strong> \u2014 Por \u00faltimo, implementa y prueba el algoritmo a fondo para asegurarte de que funciona correctamente y con seguridad.<\/li>\n<\/ul>\n<h2>C\u00f3mo Utilizar el Hashing para Almacenar Contrase\u00f1as<\/h2>\n<p>El hashing tiene un potencial excelente para almacenar contrase\u00f1as, un componente cr\u00edtico de la ciberseguridad.<\/p>\n<p>Lo ideal es que la aplicaci\u00f3n realice el hash y almacene las contrase\u00f1as en una base de datos segura para evitar accesos no autorizados y violaciones de datos. Sin embargo, el hashing por s\u00ed solo podr\u00eda no ser suficiente para proteger la informaci\u00f3n. Las contrase\u00f1as troceadas siguen siendo susceptibles a los ataques de fuerza bruta y de diccionario. Los hackers suelen utilizar estas pr\u00e1cticas para adivinar las contrase\u00f1as y obtener acceso no autorizado a las cuentas.<\/p>\n<p>Una forma m\u00e1s segura de utilizar el hashing para almacenar contrase\u00f1as es la t\u00e9cnica del salting. El salting a\u00f1ade cadenas o caracteres aleatorios y \u00fanicos a cada contrase\u00f1a antes de aplicar el hashing. El salt es \u00fanico para cada contrase\u00f1a, y la aplicaci\u00f3n lo almacena junto a la contrase\u00f1a hash en la base de datos.<\/p>\n<p>Cada vez que un usuario se conecta, la aplicaci\u00f3n recupera el salt de la base de datos, lo a\u00f1ade a la contrase\u00f1a introducida y, a continuaci\u00f3n, aplica el hash a la combinaci\u00f3n de salt y contrase\u00f1a.<\/p>\n<p>Si un atacante consigue acceder a la base de datos, deber\u00e1 calcular el hash para cada contrase\u00f1a y cada posible valor del salt. El salting hace que estos ataques sean m\u00e1s complejos, por lo que es una t\u00e9cnica \u00fatil para disuadir los ataques de diccionario.<\/p>\n<p>El m\u00f3dulo <strong>secrets<\/strong> de Python facilita el salting. Este m\u00f3dulo genera salts aleatorios, almacenando contrase\u00f1as de forma segura y gestionando tokens y claves criptogr\u00e1ficas.<\/p>\n<p>El siguiente c\u00f3digo utiliza la biblioteca <strong>hashlib<\/strong> y el m\u00f3dulo <strong>secrets<\/strong> para asegurar a\u00fan m\u00e1s las contrase\u00f1as de los usuarios:<\/p>\n<pre><code class=\"language-python\">import hashlib\nimport secrets\n\n# Generate a random salt using the secrets module\nsalt = secrets.token_hex(16)\n\n# Get the user's password from input\npassword = input(\"Enter your password: \")\n\n# Hash the password using the salt and the SHA-256 algorithm\nhash_object = hashlib.sha256((password + salt).encode())\n\n# Get the hexadecimal representation of the hash\nhash_hex = hash_object.hexdigest()\n\n# Store the salt and hash_hex in your database<\/code><\/pre>\n<h2>C\u00f3mo Utilizar el Hashing para Comprobar la Integridad de los Datos<\/h2>\n<p>El hashing tambi\u00e9n ayuda a comprobar la integridad de los datos y a proteger los datos transmitidos de modificaciones y manipulaciones. Esta t\u00e9cnica de cuatro pasos utiliza una funci\u00f3n hash criptogr\u00e1fica para dar al archivo un valor hash \u00fanico.<\/p>\n<p>Primero, selecciona la funci\u00f3n hash adecuada y util\u00edzala para generar un valor hash para los datos de entrada. Almacena ese valor hash y util\u00edzalo para compararlo cuando sea necesario. Siempre que necesites verificar la integridad de los datos, la aplicaci\u00f3n genera el valor hash de los datos actuales utilizando la misma funci\u00f3n hash. Despu\u00e9s, la aplicaci\u00f3n compara el nuevo valor hash con el valor almacenado para asegurarse de que son id\u00e9nticos. Si es as\u00ed, los datos est\u00e1n intactos.<\/p>\n<p>El valor hash es \u00fanico, e incluso un cambio min\u00fasculo en los datos de entrada desencadena un valor hash significativamente diferente. Esto facilita la detecci\u00f3n de cualquier cambio o modificaci\u00f3n no autorizados de los datos transmitidos.<\/p>\n<p>Los pasos siguientes demuestran el uso de una funci\u00f3n hash para comprobar la integridad de los datos.<\/p>\n<h3>Paso 1: Importar el m\u00f3dulo hashlib<\/h3>\n<pre><code class=\"language-python\">import hashlib<\/code><\/pre>\n<h3>Paso 2: Utilizar un Algoritmo Hash hashlib<\/h3>\n<pre><code class=\"language-python\">def generate_hash(file_path):\n\n    # Open the file in binary mode\n    with open(file_path, \"rb\") as f:\n\n        # Read the contents of the file\n        contents = f.read()\n\n        # Generate the SHA-256 hash of the contents\n        hash_object = hashlib.sha256(contents)\n\n        # Return the hexadecimal representation of the hash\n        return hash_object.hexdigest()<\/code><\/pre>\n<h3>Paso 3: Llama a la Funci\u00f3n e Introduce la Ruta del Archivo<\/h3>\n<pre><code class=\"language-python\">file_path = \"path\/to\/my\/file.txt\"\nhash_value = generate_hash(file_path)\nprint(hash_value)<\/code><\/pre>\n<h3>Paso 4: Generar Hashes para el Archivo Original y el Archivo Transmitido o Modificado<\/h3>\n<pre><code class=\"language-python\"># Generate the hash of the original file\noriginal_file_path = \"path\/to\/my\/file.txt\"\noriginal_file_hash = generate_hash(original_file_path)\n\n# Transmit or modify the file (for example, by copying it to a different location)\ntransmitted_file_path = \"path\/to\/transmitted\/file.txt\"\n\n# Generate the hash of the transmitted file\ntransmitted_file_hash = generate_hash(transmitted_file_path)<\/code><\/pre>\n<h3>Paso 5: Comparar los Dos Hashes<\/h3>\n<pre><code class=\"language-python\">if original_file_hash == transmitted_file_hash:\n    print(\"The file has not been tampered with\")\nelse:\n    print(\"The file has been tampered with\")<\/code><\/pre>\n<h2>Resumen<\/h2>\n<p>El hashing tiene un valor incalculable para la integridad de los datos y la seguridad de las contrase\u00f1as. Sacar\u00e1s el m\u00e1ximo partido de una funci\u00f3n hashing cuando pongas en pr\u00e1ctica t\u00e9cnicas de hashing seguras, como el uso del m\u00f3dulo <strong>hashlib<\/strong> y el salting.<\/p>\n<p>Estas t\u00e9cnicas ayudan a evitar los ataques arco iris, los ataques de colisi\u00f3n y otras vulnerabilidades de seguridad que afectan al hashing. Los programadores suelen utilizar estas t\u00e9cnicas con funciones hashing en Python para garantizar la integridad de los datos de los archivos y almacenar contrase\u00f1as de forma segura.<\/p>\n<p>Ahora que has aprendido m\u00e1s sobre las t\u00e9cnicas de hashing en Python, util\u00edzalas para mejorar la seguridad de tu propia aplicaci\u00f3n. Explora m\u00e1s <a href=\"https:\/\/kinsta.com\/es\/secciones\/python\/\">art\u00edculos sobre Python<\/a> en el blog de Kinsta para ampliar tus conocimientos, y luego considera desplegar tu pr\u00f3xima aplicaci\u00f3n Python en la plataforma de <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Alojamiento de Aplicaciones<\/a> de Kinsta.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los programadores de Python utilizan el hashing para transformar los datos de entrada en un valor de tama\u00f1o fijo. Este valor representa los datos de forma &#8230;<\/p>\n","protected":false},"author":259,"featured_media":71360,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1336,1320],"class_list":["post-71359","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-lenguajes-desarrollo-web","topic-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Lo Que Tienes que Saber sobre el Hashing en Python - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"\u00bfNecesitas aumentar la seguridad de tus aplicaciones? Descubre los m\u00e9todos hashing de Python y consigue bloquear esas aplicaciones.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lo Que Tienes que Saber sobre el Hashing en Python\" \/>\n<meta property=\"og:description\" content=\"\u00bfNecesitas aumentar la seguridad de tus aplicaciones? Descubre los m\u00e9todos hashing de Python y consigue bloquear esas aplicaciones.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-07T10:03:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-16T09:03:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1999\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"\u00bfNecesitas aumentar la seguridad de tus aplicaciones? Descubre los m\u00e9todos hashing de Python y consigue bloquear esas aplicaciones.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"Lo Que Tienes que Saber sobre el Hashing en Python\",\"datePublished\":\"2023-11-07T10:03:08+00:00\",\"dateModified\":\"2023-11-16T09:03:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/\"},\"wordCount\":2271,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/\",\"name\":\"Lo Que Tienes que Saber sobre el Hashing en Python - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png\",\"datePublished\":\"2023-11-07T10:03:08+00:00\",\"dateModified\":\"2023-11-16T09:03:52+00:00\",\"description\":\"\u00bfNecesitas aumentar la seguridad de tus aplicaciones? Descubre los m\u00e9todos hashing de Python y consigue bloquear esas aplicaciones.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png\",\"width\":1999,\"height\":1000},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Lo Que Tienes que Saber sobre el Hashing en Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Lo Que Tienes que Saber sobre el Hashing en Python - Kinsta\u00ae","description":"\u00bfNecesitas aumentar la seguridad de tus aplicaciones? Descubre los m\u00e9todos hashing de Python y consigue bloquear esas aplicaciones.","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:\/\/kinsta.com\/es\/blog\/python-hashing\/","og_locale":"es_ES","og_type":"article","og_title":"Lo Que Tienes que Saber sobre el Hashing en Python","og_description":"\u00bfNecesitas aumentar la seguridad de tus aplicaciones? Descubre los m\u00e9todos hashing de Python y consigue bloquear esas aplicaciones.","og_url":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2023-11-07T10:03:08+00:00","article_modified_time":"2023-11-16T09:03:52+00:00","og_image":[{"width":1999,"height":1000,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"\u00bfNecesitas aumentar la seguridad de tus aplicaciones? Descubre los m\u00e9todos hashing de Python y consigue bloquear esas aplicaciones.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png","twitter_creator":"@Kinsta_ES","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Steve Bonisteel","Tiempo de lectura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"Lo Que Tienes que Saber sobre el Hashing en Python","datePublished":"2023-11-07T10:03:08+00:00","dateModified":"2023-11-16T09:03:52+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/"},"wordCount":2271,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png","inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/python-hashing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/","url":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/","name":"Lo Que Tienes que Saber sobre el Hashing en Python - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png","datePublished":"2023-11-07T10:03:08+00:00","dateModified":"2023-11-16T09:03:52+00:00","description":"\u00bfNecesitas aumentar la seguridad de tus aplicaciones? Descubre los m\u00e9todos hashing de Python y consigue bloquear esas aplicaciones.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/python-hashing\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/11\/python-hash.png","width":1999,"height":1000},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/python-hashing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/kinsta.com\/es\/secciones\/python\/"},{"@type":"ListItem","position":3,"name":"Lo Que Tienes que Saber sobre el Hashing en Python"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/es\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/71359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=71359"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/71359\/revisions"}],"predecessor-version":[{"id":71558,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/71359\/revisions\/71558"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/71359\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/71359\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/71359\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/71359\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/71359\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/71359\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/71359\/translations\/es"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/71359\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/71360"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=71359"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=71359"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=71359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}