MySQL 5.0 Métodos de Encriptación
MySQL 5.0 Métodos de Encriptación
MySQL 5.0 Métodos de Encriptación
~
Invierte todos los bits.
mysql> SELECT 5 & ~1;
-> 4
BIT_COUNT(N)
Retorna el nmero de bits en el argumento N.
mysql> SELECT BIT_COUNT(29);
-> 4
Puede obtener incluso mejor seguridad si no transfiere la clave a travs de la conexin para
cada consulta, que puede hacerse almacenando la clave en una variable del servidor al hacer la
conexin. Por ejemplo:
SELECT @password:='my password';
INSERT INTO t VALUES (1,AES_ENCRYPT('text',@password));
Funciones de cifrado
DECODE(crypt_str,pass_str)
Descifra la cadena cifrada crypt_str usando pass_str como contrasea. crypt_str debe ser
una cadena retornada de ENCODE().
ENCODE(str,pass_str)
Cifra str usando pass_str como contrasea. Para descifrar el resultado, use DECODE().
El resultado es una cadena binaria de la misma longitud que str. Si quiere guardarlo en una
columna, use una columna de tipo BLOB .
DES_DECRYPT(crypt_str[,key_str])
Descifra una cadena cifrada con DES_ENCRYPT(). En caso de error, esta funcin retorna NULL.
Tenga en cuenta que esta funcin funciona slo si MySQL se configura con soporte SSL. Consulte
Seccin 5.7.7, Usar conexiones seguras.
Si no se da argumento key_str, DES_DECRYPT() examina el primer byte de la cadena cifrada
para determinar el nmero de clave DES que se us para cifrar la cadena original, y luego lee la
clave del fichero clave DES para descifrar el mensaje. Para que esto funcione, el usuario debe tener
el privilegio SUPER. El fichero clave puede especificarse con la opcin del servidor --des-keyfile .
Si le pasa a esta funcin el argumento key_str , esta cadena se usa como la clave para descifrar
el mensaje.
Si el argumento crypt_str no parece una cadena cifrada, MySQL retorna crypt_str.
DES_ENCRYPT(str[,(key_num|key_str)])
Cifra la cadena con la clave dada usando el algoritmo triple-DES. En caso de error, retorna NULL.
Tenga en cuenta que esta funcin funciona slo si MySQL se configura con soporte SSL. Consulte
Seccin 5.7.7, Usar conexiones seguras.
La clave de cifrado a usar se elige basada en el segundo argumento de DES_ENCRYPT(), si se ha
dado uno:
Argumento
Descripcin
Sin argumento
key_num
key_str
Funciones de cifrado
Cada key_num debe ser un nmero en el rango de 0 a 9. Las lneas en el fichero pueden estar en
cualquier orden. des_key_str es la cadena que se usa para cifrar el mensaje. Entre el nmero y
la clave debe haber un espacio como mnimo. La primera clave es la clave usada por defecto si no
especifica ningn argumento clave para DES_ENCRYPT()
Puede decir a MySQL que lea un nuevo valor de clave del fichero clave con el comando FLUSH
DES_KEY_FILE. Esto necesita el privilegio RELOAD .
Un beneficio de tener un conjunto de claves por defecto es que da a las aplicaciones una forma
de chequear la existencia de valores de columna cifrados, sin dar al usuario final el derecho de
descifrarlos.
mysql> SELECT customer_address FROM customer_table
> WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number');
ENCRYPT(str[,salt])
Cifra str usando la llamada de sistema Unix crypt() . El argumento salt debe ser una cadena
con al menos dos caracteres. Si no se da argumento salt , se usa un valor aleatorio.
mysql> SELECT ENCRYPT('hello');
-> 'VxuFAJXVARROc'
ENCRYPT() ignora todo excepto los primeros ochos caracteres de str, al menos en algunos
sistemas. Este comportamiento viene determinado por la implementacin de la llamada de sistema
crypt() subyacente.
Si crypt() no est disponible en su sistema (como pasa en Windows), ENCRYPT() siempre
retorna NULL. Debido a esto, recomandamos que use MD5() o SHA1() en su lugar, y que estas dos
funciones existen en todas las plataformas.
MD5(str)
Calcula una checksum MD5 de 128-bit para la cadena. El valor se retorna como una cadena binaria
de dgitos 32 hex ,o NULL si el argumento era NULL. El valor de retorno puede usarse como clave
hash, por ejemplo.
mysql> SELECT MD5('testing');
-> 'ae2b1fca515949e5d54fb22b8ed95575'
634
Funciones de informacin
OLD_PASSWORD(str)
OLD_PASSWORD() se aadi en MySQL 4.1,cuando se cambin la implementacin de PASSWORD()
para mejorar la seguridad. OLD_PASSWORD() retorna el valor de la implementacin pre-4.1 de
PASSWORD(), y est hecha para permitirle resetear contraseas para cualquier cliente pre-4.1
que necesite conectar a su versin 4.1 o posterior de MySQL server sin bloquearlo. Consulte
Seccin 5.6.9, Hashing de contraseas en MySQL 4.1.
PASSWORD(str)
Calcula y retorna una cadena de contrasea de la contrasea en texto plano str, o NULL si el
argumento era NULL. Esta es la funcin que se usa para cifrar contraseas MySQL para almacenar
en la columna Password de la tabla user .
mysql> SELECT PASSWORD('badpwd');
-> '7f84554057dd964b'
SHA1(str), SHA(str)
Calcula una checksum SHA1 de 160-bit para la cadena, como se describe en RFC 3174 (Secure
Hash Algorithm). El valor se retorna como cadnea de 40 dtigos hexadecimales, o NULL si el
argumento era NULL. Uno de los usos posibles para esta funcin es una clave hash. Tambin puede
usarlo como funcin criptogrficamente segura para almacenar contraseas
mysql> SELECT SHA1('abc');
-> 'a9993e364706816aba3e25717850c26c9cd0d89d'
635