Lo que hace crypt () se puede hacer en C?
Pregunta
crypt(text,"k7")
Lo busqué y aparentemente 'K7' es la sal, pero no tengo ni idea de lo que eso significa ni qué tipo de salida vendrá de eso, alguien sabe?
Solución
Desde el cripta página hombre .
Descripción
crypt () es el cifrado de la contraseña función. Se basa en los datos Algoritmo de cifrado estándar con variaciones destinados (entre otras cosas) para desalentar el uso de hardware implementaciones de una clave de búsqueda.
clave es contraseña escrita de un usuario.
sal es una cadena de dos caracteres elegido del conjunto [a-zA-Z0-9./]. Esta cadena se utiliza para perturbar el algoritmo en una de las 4096 maneras diferentes.
Otros consejos
Todas las otras respuestas son correctas, pero hasta ahora nadie ha explicado ¿Por qué es la sal de allí.
Wikipedia tiene una buena página en sales y noreferrer tablas de arco iris , que son la razón principal por la que tienen sales.
Sin sal, la cripta es básicamente una función hash unidireccional. Se necesitaría una contraseña y devolver una versión hash de la contraseña. tablas Rainbow
proporcionan un método optimizado para derrotar al "unidireccional" naturaleza de este hash, y retrocediendo la contraseña original.
Si logran obtener las contraseñas hash (a través de alguna base de datos explotar, o el acceso a la /etc/passwd
o archivo /etc/shadow
), que teóricamente podría conocer una gran cantidad de contraseñas de las personas.
Una sal añade un factor "aleatorio" extra a la mezcla. Es necesario crear una sal al azar y la tienda que en algún lugar (con la contraseña es correcta, pero separado es mejor). Ahora bien, una serie de cuadros del arco iris no es suficiente, se necesita repentinamente 65.536 conjuntos de dichas tablas (en el caso de una sal de dos bytes). La sal también puede mantenerse independiente de la contraseña, la adición de un obstáculo adicional.
La sal también ayuda a prevenir a los usuarios con las mismas contraseñas que parece tener la misma contraseña; la sal se selecciona normalmente al azar, y si las sales son diferentes entonces las contraseñas hash será dramáticamente diferente.
También voy a señalar esta entrada del blog explicando algunos conceptos básicos de contraseña , que me pareció muy informativo.
Como Randolpho señala, es un proceso de hash unidireccional para el texto.
El uso estándar para crypt () es en el almacenamiento de contraseñas. Obviamente, el almacenamiento de la contraseña como serían muy poco aconsejables texto plano. En su lugar, crypt () se utiliza para generar un hash de la contraseña. Al escribir la contraseña, crypt () se aplica a eso, y luego los dos valores hash son comparados.
Esencialmente, la función de crypt () es traducir el texto en un nuevo texto, de la que nunca puede ser recuperado el original, pero que tiene una baja probabilidad de generar el mismo hash para dos claves diferentes.
Wikipedia FTW
En pocas palabras: es unidireccional hashes text
La función de encriptación toma una contraseña, llave, como una cadena, y una matriz de caracteres sal que se describe a continuación, y devuelve una cadena ASCII imprimible que se inicia con otra sal. Se cree que, dada la salida de la función, la mejor manera de encontrar una clave que producirá que la producción es adivinar los valores de clave hasta que se encuentre el valor original de la llave.