2013-05-11 76 views
0

我要尋找一個Python模塊來創建一對匹配的令牌具有以下兩個屬性:一對可以匹配檢查容易

  • 他們可以匹配檢查
  • 它是不可能從另一個獲得一個令牌

PS:據我瞭解an RSA public key can be derived by the holder of the private key,所以這對我們沒有幫助。

+0

不,你不能從另一個鍵。 RSA的公鑰和私鑰是相同的,它的名字只是表示你保留哪一個私鑰。您鏈接的問題涉及一個.pem文件,它可以包含兩個鍵。 – 2013-05-11 15:18:55

+0

我可能會誤解這個問題,但正在尋找哈希函數? token1 =隨機字符串,token2 = md5(token1 + salt)符合您的規格。 – georg 2013-05-11 21:19:22

+0

@ thg435非常接近,但我會說token2是* hash和salt *的對,否則token1的擁有者可以猜測它。現在,如果你的想法有更高層次的包裝,這將是我想要的。如果它不存在,我會寫它。 – 2013-05-11 22:57:35

回答

1

您正在尋找使用隨機部件的簽名功能。它是例如可以使用RSA-PSS和私鑰簽名。然後令牌將是公鑰和簽名的組合。 RSA-PSS與包含此隨機組件的標準PKCS#1 v1.5簽名不同; PKCS#1 v1.5爲相同的輸入提供相同的簽名。

請注意,RSA需要相對較大的密鑰和簽名(2048位是現在的最小值)如果您需要較小的令牌,則可以查看一下橢圓曲線,但這很難理解和實施。如果你這樣做,你可以使用一個命名的NIST曲線,例如P-256。這將使最小簽名大小約爲EC密鑰大小的3至4倍(最多128字節),而不是RSA的512字節。

似乎PSS簽名由M2Crypto支持,但由於我沒有編程Python,所以如果卡住了,你將不得不提出另一個問題。