python加密的基础,带有hashlib sha1
-
26-10-2019 - |
题
我正在努力完全了解加密的工作原理和编码,尤其是在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密码图库有关的问题 因此,这可能会有所帮助。
不隶属于 StackOverflow