我正在努力完全了解加密的工作原理和编码,尤其是在Python上。我只是试图以最简单的形式降低基础知识并创建代码。

我将在两个不同的网站之间传递用户ID,但是显然我需要使用私钥对此进行加密,因此网站2知道它来自weblity1。这似乎是我的代码:http://docs.python.org/library/hashlib.html#module-hashlib, ,但是它没有很好的例子(或者我处于错误的位置)。

我遇到的问题是完全了解如何编码和解码。

因此,可以说每个网站都会知道的共享私钥是:

shared_private_key = "ABCDEF"

我希望网站1传递到网站2的用户:

userID = "123456"

网站1如何以私钥加密我的用户ID,以一种方式可以通过HTTP标头发送加密,然后进行网站2解密,并能够使用共享的私钥读取用户ID?

对于问这个基本问题的问题,我深表歉意,但我未能掌握应该如何做到这一点。谢谢。

有帮助吗?

解决方案

hashlib 模块提供哈希功能。虽然与加密有一定的关系,但是一旦哈希(Hash)一些数据,您就无法返回以从哈希结果中获取原始数据。

您可以采用不同的方法:使用数据哈希和一些秘密来创建独特的签名。

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)

最后,您将数据和签名发送到网站2。这样,您可以(主要)确保没有未经授权的人篡改数据。

其他提示

您想要的是一个加密库,而不是仅提供哈希算法的库。与Python's hashlib 图书馆:

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

返回: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

考虑到这个哈希,是 极其困难 不可能(通常)恢复原始消息。您想要的是一个加密库,Python标准库没有。有很多 与Python密码图库有关的问题 因此,这可能会有所帮助。

Python标准库没有加密算法。尝试 pycrypto, ,有一些例子 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top