簡體   English   中英

如何在Django中簽署sha1簽名?

[英]how do I sign sha1 signature in Django?

我還沒有真正深入研究Django和簽名

我正在嘗試根據給定的要求創建簽名

i =我的用戶名,v =到期,s =簽名

我: MYUSERNAME
v: UNIX TIMESTAMP + 2小時
一個: MY_API_KEY
s: SHA1簽名,即(“ i = MYUSERNAME&v =(UNIX_TIMESTAMP + API_KEY)”)

到目前為止我所擁有的。

import hashlib
import datetime
from datetime import timedelta
import time

now = datetime.datetime.now()
now = now + timedelta(hours=2)
seconds = time.mktime(now.timetuple())
seconds = seconds
API = "87df234207v4444444"
signature = hashlib.sha1()
signature.update("i=MYUSERNAME&v=%s%s" % (seconds, API))

然后,當我ping通URL時,會收到“錯誤簽名”響應

同樣,我在這方面的知識有限,非常感謝您的幫助

而獲得正確代碼的有效iframe是http://api.myurl.com/i=MYUSERNAME&v=UNIX TIMESTAMP + 2 HOURS&s=MY VALID SIGNATURE

PDF文件

假設我們需要計算以下URI的簽名:

http://framed.incloode.com/index.php?i=TEST&arg1=val1&arg2=val2&t=123
計算簽名的方法如下:

  • 瀏覽完整的參數和值列表,
  • 將它們附加到一個長字符串HTML安全字符串中,例如普通的GET請求,
  • 對於上面的URI,這個長字符串最終看起來像這樣:i = TEST&arg1 = val1&arg2 = val2&t = 123
  • 要指定此鏈接何時有效,必須添加有效性。 有效期為UNIX時間戳–有效期為2小時,應傳遞值time()+ 7200。 此有效性(參數和值)也必須附加到字符串后才能簽名。 對於上面的URI,現在看起來像這樣:i = TEST&arg1 = val1&arg2 = val2&t = 123&v = 1444567890初始URI中的請求應替換為該列表。
  • 上面收集的字符串然后從HTML(htmlspecialchars_decode())進行解碼,因此最終得到的字符串如下所示:i = TEST&arg1 = val1&arg2 = val2&t = 123&v = 1444567890
  • 您提供的“ INCLOODE_API_SECRET”必須附加到此字符串:i = TEST&arg1 = val1&arg2 = val2&t = 123&v = 1444567890 ** INCLOODE_API_SECRET **
  • 然后,最后必須生成該字符串的SHA1校驗和。然后,將炎症附加到在步驟(3)檢索的參數/值列表中。 最終可能看起來像這樣:http://framed.incloode.com? i = TEST&arg1 = val1&arg2 = val2&t = 123&v = 1444567890&s = abcdef0123456789

從您的描述中我唯一可以看到的是,您最終並沒有掌握十六進制摘要,我只能假設這是服務器所期望的。 而是發送此值:

hashed = signature.hexdigest()

否則,請發布此Web服務的文檔,並確保您遵守案例要求(您永遠不會知道...)

暫無
暫無

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

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