的我工作的公司想創造某種註冊過程,在此,最終,用戶將不得不以激活他的產品進入一個關鍵的。註冊與小C#中可能的數字簽名的消息
我已經搜索並找到解釋如何生成密鑰的幾個源代碼。其中一個(How to generate and validate a software license key?)建議採取一些數據(如註冊數據,結合硬件信息),並用數據上的散列的私鑰加密進行連接,並在所有這些數據上計算base32編碼。
所以當在程序中輸入密鑰時會解碼base32,計算出數據的結果,並用公鑰驗證密鑰中的簽名是否有效(所以我們可以確定密鑰是從哪裏來的out公司)。
我已經發現了關於Bouncy城堡,但我沒有看到它的任何schnorr實現(事實上,我沒有發現如果在C#中執行的很多)。我在做小簽名時所做的所有努力都失敗了(我設法創建的最小簽名是56字節)。
所以假設數據+簽名是,比如說,64字節。我的32位字符串將是64 * 8/5,這是103 chars.com帶有額外的 - 用於定界,並且使它更易讀,我們得到的東西不可讀並且不能由電話支配(如果需要的話)。
那麼我錯過了什麼? 如果我需要製作32個字符的密鑰,那麼我需要20個字節的數據+散列。
我該怎麼做?
使用.NET加密,或充氣城堡(其缺乏任何C#文檔和示例的)將是有益的任何實例。
以下項目還可以幫助生成密鑰:https://github.com/garethrbrown/.net-licence-key-generator/tree/master/AppSoftware.LicenceEngine.KeyVerification 我已經看到它,並且需要看看它是否也可以幫助,但現在,我已經有了一個很好的解決方案 – Saragani