ada*_*dam 15 python cryptography sha1 hmac hashlib
我很难完全理解加密的工作原理和编码方式,尤其是python.我只是试图了解基础并以最简单的形式创建代码.
我将在两个不同的站点之间传递userID,但显然我需要使用私钥加密,因此Website2知道它来自Website1.这似乎是我的代码:http: //docs.python.org/library/hashlib.html#module-hashlib,但它没有很好的例子(或者我可能在错误的位置).
我遇到的问题是完全理解如何编码和解码.
那么让我们说每个网站都知道的共享私钥是:
shared_private_key = "ABCDEF"
Run Code Online (Sandbox Code Playgroud)
我希望Website1将以下用户ID传递给Website2:
userID = "123456"
Run Code Online (Sandbox Code Playgroud)
Website1如何使用私钥加密我的userID,加密可以通过HTTP头发送,然后让Website2解密并能够使用共享私钥读取userID?
我为提出这样一个基本问题而道歉,但我没有意识到应该怎么做.谢谢.
vz0*_*vz0 17
该hashlib模块提供散列函数.虽然与加密存在某种关系,但是一旦您对某些数据进行散列,您就无法返回以从散列结果中获取原始数据.
您可以采用不同的方法,而不是编写数据:使用数据哈希和一些秘密创建唯一的签名.
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)
Run Code Online (Sandbox Code Playgroud)
最后,您向网站2发送数据和签名.这样你就可以(大部分)确保没有未经授权的人篡改数据.
dev*_*oid 16
你想要的是一个加密库,而不是只提供哈希算法的加密库.使用python的hashlib库:
import hashlib
m = hashlib.sha1()
m.update("The quick brown fox jumps over the lazy dog")
print(m.hexdigest())
Run Code Online (Sandbox Code Playgroud)
返回: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
鉴于这种乱码,这是 非常困难的不可能的(一般),以恢复原始消息.你想要的是一个加密库,Python标准库没有.在SO上有很多与python加密库有关的问题可能会有所帮助.