Pregunta

Me preguntaba si hay una pitón afín a los php crypt() función que funciona de manera similar, generando una sal aleatoria e incrustarla dentro de la cadena guardada.

Tengo una tabla de contraseñas de hash que se crearon usando el $5$ Clave de cadena para configurar un criptograma salado basado en SHA256. Estos hashes tenían una entropía grabada adicional unida a ambos extremos a un intervalo fijo, pero dividir estos caracteres de la cadena y obtener el hash central es trivial y no es un problema en absoluto.

He mirado la documentación de Python y no puedo encontrar ningún método en hashlib que parecen utilizar la misma sintaxis de PHP's crypt(). ¿El enfoque utilizado en PHP (el formato de entrada se divide con signos de dólar entre sal, algo y rondas) exclusivo del idioma?

Gracias.

EDITAR:

Parece que la versión revisada del nativo de Python crypt La función utilizará procedimientos similares a los de PHP. De la documentación de 3.3 prelanzamiento:

http://docs.python.org/dev/library/crypt.html

EDITAR:

Finalmente encontró Passlib, una biblioteca que proporciona esta funcionalidad en Pure Python.

http://packages.python.org/passlib/index.html

¿Fue útil?

Solución

Ciertamente se ve muy similar a Cripta de FreeBsd (Ver "Cripta modular" en la mano de obra). Realmente no recuerdo si es de la misma manera en Linux u otra, pero esto parece indicar que no es único.

No hay un equivalente directo en Python que yo sepa, pero no debería ser demasiado difícil rodar el suyo ya que los algoritmos de cifrado deben ser apoyados en hashlib.

Otros consejos

Me doy cuenta de que esta pregunta es antigua, sin embargo, la encontré mientras intentaba implementar un algoritmo de inicio de sesión en Python que originalmente se escribió en PHP. La función de la cripta en PHP utiliza cualquiera de un puñado de algoritmos des inseguro des, incluido BCRYPT. Depende de con qué hash su cadena. Passlib es más o menos su mejor opción para replicar la funcionalidad que su aplicación está obteniendo actualmente de PHP Crypt. Tome una de sus contraseñas de hash y mire el frente de la cadena. Debería ver algo como $ 2a $, $ 3 $, $ 6 $ (o similar). Tenga en cuenta que si esta cadena no existe, es muy probable que use estándar DES DESHING.

Tome esa información en este enlace:

http://pythonhosted.org/passlib/modular_crypt_format.html#mcf-identifiers

Luego, coincida con el algoritmo que necesita implementar en Python. Los identificadores del esquema son enlaces a la documentación de PassLib con respecto a ese algoritmo de hash. En este punto, debe tener toda la información que necesita para completar su reimplementación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top