簡體   English   中英

python加密的基礎知識w / hashlib sha1

[英]basics of python encryption w/ hashlib sha1

我很難完全理解加密的工作原理和編碼方式,尤其是python。 我只是試圖了解基礎並以最簡單的形式創建代碼。

我將在兩個不同的站點之間傳遞userID,但顯然我需要使用私鑰加密,因此Website2知道它來自Website1。 這似乎是我的代碼: http//docs.python.org/library/hashlib.html#module-hashlib ,但它沒有很好的例子(或者我可能在錯誤的位置)。

我遇到的問題是完全理解如何編碼和解碼。

那么讓我們說每個網站都知道的共享私鑰是:

shared_private_key = "ABCDEF"

我希望Website1將以下用戶ID傳遞給Website2:

userID = "123456"

Website1如何使用私鑰加密我的userID,加密可以通過HTTP頭發送,然后讓Website2解密並能夠使用共享私鑰讀取userID?

我為提出這樣一個基本問題而道歉,但我沒有意識到應該怎么做。 謝謝。

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)

最后,您向網站2發送數據和簽名。 這樣你就可以(大部分)確保沒有未經授權的人篡改數據。

你想要的是一個加密庫,而不是只提供哈希算法的加密庫。 使用python的hashlib庫:

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

返回: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

鑒於這種亂碼,這是 非常困難的 不可能的(一般),以恢復原始消息。 你想要的是一個加密庫,Python標准庫沒有。 在SO上有很多與python加密庫相關問題可能會有所幫助。

Python標准庫沒有加密算法。 嘗試pycrypto ,它有一些例子在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM