2013-08-30 92 views
-2

我不知道這是否是正確的地方問這個問題。從種子生成的唯一編號

我想通過給我的用戶提供一個帶有嵌入硬編碼數字的軟件來實現身份驗證,表示它是嵌入到用戶不知道的軟件中的x。該軟件有一個按鈕,然後當用戶按下它時,它將能夠隨機生成隨機數* s *隨機選擇,例如a,b,c,d,e f ....等基於x

當一個用戶進入我的網站,他們需要使用硬編碼的軟件,並生成一個隨機數,說c。在我的網站輸入用戶名和c作爲密碼(使用軟件即時生成密碼),我的網站知道c實際上是由x(合格)生成的,這是我在我的軟件中實現的一個祕密代碼,並將其分發給用戶。所以我允許用戶登錄。如果用戶輸入的隨機數不是基於x生成的,我會立即知道並阻止用戶登錄。此實施背後的原因是爲了防止修復密碼。

結論,是否有一個算法,即給定x

f(x) = randomnumbers 
g(x, randomnumbers) = true/false 

感謝

回答

1

您需要查看HMACSHA1類。

給定一個私鑰,您可以生成一個安全的用戶名摘要。

這樣說,你需要非常小心在你的應用中實現「增強」的安全性。我看到的主要問題是密鑰不會過期,您無法撤銷它。

如果你想把它提升一個檔次,你最好查看客戶證書或軟標記。

0

一個簡單的解決方案可能是隻儲存x在自己的數據庫時生成它,並把它插入到你的軟件。然後當軟件想要連接時,它會發送x,並且您的站點會根據您的數據庫檢查它是否存在。這幾乎只是一個序列,除了不是根據模式檢查序列(您的x值),而是根據實際生成的密鑰進行檢查。沒有keygen可以將生成的密鑰放入數據庫中。

擔心x被攔截?只要確保使用HTTPS。沒有MITM,沒有通過散列,沒有用戶參與(即透明)。