Pregunta

Estoy luchando por comprender completamente cómo funciona y se codifica el cifrado, particularmente con Python. Solo estoy tratando de reducir los conceptos básicos y crear código en la forma más simple.

Voy a pasar unid de usuario entre dos sitios diferentes, pero obviamente necesito que esto esté encriptado con una clave privada para que el sitio web2 sepa que proviene del sitio web1. Este parece ser el código para mí:http://docs.python.org/library/hashlib.html#module-hashlib, pero no tiene muy buenos ejemplos (o tal vez estoy en el lugar equivocado).

El problema que tengo es comprender completamente cómo codificar y decodificar.

Entonces, digamos que la clave privada compartida que cada sitio web sabrá es:

shared_private_key = "ABCDEF"

Y quiero que el sitio web1 pase al sitio web2 el ID de usuario de:

userID = "123456"

¿Cómo cifraría el sitio web1 de mi ID de usuario con la clave privada de manera que el cifrado se puede enviar a través de encabezados HTTP, y luego tomar el sitio web2 Decrypt y poder leer el ID de usuario utilizando la clave privada compartida?

Pido disculpas por hacer una pregunta tan básica, pero no estoy capturando cómo se debe hacer esto. Gracias.

¿Fue útil?

Solución

los hashlib El módulo proporciona funciones de hash. Si bien existe alguna relación con el cifrado, una vez que hash algunos datos, no puedes volver para obtener los datos originales del resultado hash.

En lugar de recoger los datos, puede adoptar un enfoque diferente: crear una firma única utilizando un hash de los datos y algún secreto.

shared_private_key = "ABCDEF"

def create_signature(data):
    return hashlib.sha1(repr(data) + "," + shared_private_key).hexdigest()

def verify_signature(data, signature):
    return signature == create_signature(data)

Finalmente, envía al sitio web 2 los datos más la firma. De esa manera, puede estar (en su mayoría) seguro de que ninguna persona no autorizada manipuló los datos.

Otros consejos

Lo que desea es una biblioteca de cifrado, no una que solo proporcione algoritmos hash. Con Python's hashlib biblioteca:

import hashlib
m = hashlib.sha1()
m.update("The quick brown fox jumps over the lazy dog")
print(m.hexdigest())

Devoluciones: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

Dado este hash, es extremadamente difícil imposible (en general) recuperar el mensaje original. Lo que quieres es una biblioteca de cifrado, que la biblioteca estándar de Python no tiene. Hay un montón de Preguntas relacionadas con las bibliotecas de criptografía de Python Entonces eso podría ser útil.

Python Standard Library no tiene algoritmos de cifrado. Probar picrypto, tiene algunos ejemplos aquí.

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