¿Cómo se cifran las contraseñas usando “EncryptByPassPhrase”?

Si bien puede ser una práctica popular el almacenar las contraseñas en una base de datos, por lo general no es tan común almacenarlas correctamente. Tienes tres opciones para hacerlo cuando guardas una contraseña en una base de datos. Puedes guardar tu contraseña como:

  • Texto no encriptado que puede ser visto por cualquiera que tenga acceso de lectura a la tabla
  • Texto encriptado que puede ser desencriptado
  • Texto encriptado que nunca puede ser desencriptado

Normalmente, necesitamos desencriptar nuestros valores encriptados por varias razones. Así que la opción 2 “Texto encriptado que puede ser desencriptado” es usualmente seguida para este propósito.

En este artículo, discutiremos cómo encriptar y desencriptar el texto, qué errores surgen al hacerlo y cuál es la forma recomendada de seguir.

Texto encriptado que puede ser desencriptado:

Todo el mundo entiende lo que es una contraseña, menos personas están familiarizadas con las frases de contraseña. La frase de contraseña es comparativamente más segura. “Entropía” es una noción en la teoría de la tecnología de la información que se refiere a la cantidad de aleatoriedad que tiene una contraseña. Normalmente, cuanto más aleatoria es una contraseña, más difícil es que los hackers la rompan. Esa es la razón por la que se prefieren las contraseñas más largas, ya que probablemente son más ” aleatorias “. Añadiendo palabras a la contraseña se puede aumentar la entropía. En SQL Server 2008 y superior la función “ENCRYPTBYPASSPHRASE” soporta la encriptación de la frase de contraseña donde puedes usar frases como “I would love some ice cream” como tu contraseña que las contraseñas que no soportan espacios. Además, puede encriptar tu contraseña más segura.

También te puede interesar:  ¿Qué es ekrn.exe y debería quitarlo?

La función “ENCRYPTBYPASSPHRASE” nos permite encriptar cualquier cadena o valor VARBINARIO hasta 7975 bytes. Necesita dos parámetros, @passphrase , y @cleartext , y devuelve un valor que contiene los valores cifrados de tipo VARBINARY(8000) .

Cifrar la información de la frase de paso usando el algoritmo TRIPLE DES de 128 teclas de longitud de bits. Una frase de contraseña es un espacio que incluye una contraseña. El beneficio de usar una frase de contraseña es que recordar una oración o frase significativa es más simple que recordar una cadena de caracteres comparativamente larga.

FRASE DE ENCRIPTACIÓN:

“ENCRYPTBYPASSPHRASE” ofrece una forma rápida y fácil de encriptar las columnas de datos del servidor SQL. Esta función está disponible en SQL Server 2008 y en adelante.

Sintaxis:

Encriptar por frase de paso (@passphrase, @cleartext)

Argumentos:

@passphrase:

Una clave asimétrica se genera a partir de una frase clave. Esta puede ser una variable de tipo varchar, char, varchar, binaria, VARBINARIA, o NCHAR que contiene una frase de paso a partir de la cual se produce una clave simétrica. Cualquier otro tipo de datos, como una FECHA, primero debe convertirse explícitamente a un valor binario para cifrar una fecha de nacimiento.

@cleartext:

Una variable de tipo NVARCHAR , char , varchar , binaria , VARBINARIA, o NCHAR que contiene el texto plano. El tamaño máximo de es de ocho mil bytes .

Tipos de retorno:

VARBINARIO con 8.000 bytes tamaño máximo.

Aplicación:

CREATE TABLE dbo.encrypted_data
(
  [Id] INT IDENTIDAD(1,1) CLAVE PRIMARIA,
  VARBINARIO(8000)
);

Creando una tabla llamada “encrypted_data”

El valor de identificación permanecerá sin cifrar, mientras que la columna de contraseña es del tipo VARBINARY(8000) , que coincide con el tipo de retorno de la función ENCRYPTBYPASSPHRASE .

INSERTAR EN dbo.encrypted_data([contraseña])
VALORES(ENCRYPTBYPASSPHRASE($0027SQL SERVER 2017$0027,$0027¡Este es mi número de tarjeta de crédito!$0027));

Insertar datos en la tabla llamada “encrypted_data”

También te puede interesar:  Corregir: Error CE-32937-4 en la Play Station 4

Se ve que el primer parámetro es la frase clave que proporciona una clave simétrica. Mientras que el segundo es el valor del texto que necesita ser encriptado.

select * from encrypted_data

Seleccionando datos de la tabla llamada “encrypted_data”

El conjunto de resultados se verá como.

Esa declaración de SELECT devuelve un valor de VARBINARIO como:

“0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D”

Esta figura muestra que el valor VARBINARIO devuelto de ENCRYPTBYPASSPHRASE es no determinístico

Es importante señalar que el valor VARBINARIO devuelto de ENCRIPTOBIFASFRASE es no determinístico. Esto significa que no generará el mismo resultado cada vez incluso con la misma entrada. Así que la misma sentencia SELECT si la ejecutamos dos veces, podemos obtener dos salidas diferentes.

SELECT ENCRYPTBYPASSPHRASE($0027SQL SERVER 2017$0027,$0027¡Este es el número de mi tarjeta de crédito!$0027);
SELECCIONE ENCRYPTBYPASSPHRASE($0027SQL SERVER 2017$0027,$0027¡Este es el número de mi tarjeta de crédito!$0027);
SELECCIONE ENCRYPTBYPASSPHRASE($0027SQL SERVER 2017$0027,$0027¡Este es el número de mi tarjeta de crédito!$0027);

La declaración selecta dará lugar a una declaración como esta:

“0x010000002D69EDEEA6B486FAF38FB353CF2682EE30B450488109BD0E23B88E03CD48F72673C6A462B210D6CE38E00E9F8BA18AB7” para la primera sentencia seleccionada.

“0x010000007C5736E4B0F15D971D771D2D146924F741D2DB04477C882A6BAF65703F01D950B1AD01E7E4E27E89243F6A4F549170E2” para la segunda declaración.

“0x010000009B49BEBAB4B5E510C0C2998604A005617398631C2EBFB0E3C08DDF27C2A06F447FC11BD10B416C7E58038109EBD52021” para la tercera declaración.

DESCRIPCIÓN DE LA FRASE DE PASAPORTE:

Tenemos que ser capaces de desencriptarlo ahora porque nuestra contraseña ha sido encriptada. Esto se hace fácilmente usando la característica DECRYPTBYPASSPHRASE con la misma frase de contraseña con la que encriptamos nuestra contraseña.

Ejecute el siguiente código. Y obtendrás la contraseña con algunos caracteres alfanuméricos de gran longitud como una salida como esta.

“0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D”

seleccione id,DECRYPTBYPASSPHRASE($0027SQL SERVER 2017$0027,password) como contraseña de encrypted_data

Descifre la contraseña usando “DECRYPTBYPASSPHRASE”

Eso no es una contraseña. Como ENCRYPTBYPASSPHRASE , DECRYPTBYPASSPHRASE devuelve un valor VARBINARY para ser codificado en una cadena funcional. Añadiendo una función CONVERT o cast a nuestra sentencia SELECT, esto puede hacerse fácilmente.

También te puede interesar:  ¿Por qué no puedo copiar y pegar en Microsoft Word? [Resuelto ]

Convirtiendo el valor de la contraseña descifrada VARBINARIA a la cadena usando “DECRYPTBYPASSPHRASE”

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.