我一直在看這一整天。幾個小時前我應該已經走開了;在這一點上,我可能會漏掉一些明顯的東西。使用非對稱加密生成合理長度的許可證密鑰?
簡短版本:有沒有一種方法可以生成一個非對稱加密散列並將其歸結爲合理數量的明確的,人類可讀的字符?
龍版本:
我要生成的許可證密鑰我的軟件。我希望這些鍵具有合理的長度(25-36個字符),並且可以方便地讀取和輸入(避免模糊字符,例如數字0和大寫字母O)。
終於 - 這似乎是踢球 - 我真的很喜歡使用非對稱加密,使其更難以生成新的密鑰。
我已經有了一般的方法:將我的信息(用戶名,產品版本,鹽)連接成一個字符串,並從中產生一個SHA1()哈希,然後用我的私鑰加密哈希。在客戶端上,根據相同的信息構建SHA1()哈希,然後用公鑰解密許可證,看看是否有匹配。
由於這是一款Mac應用程序,因此我查看了AquaticPrime,但生成的是相對較大的許可證文件而非字符串。如果必須的話,我可以使用它,但作爲用戶,我真的很喜歡我可以讀取和打印的許可證密鑰的便利性。
我也看了一下CocoaFob,它確實生成了一個鍵,但是我想要把它作爲一個文件傳遞,這是很長的。
我fooled around with OpenSSL一段時間,但不能拿出任何合理的長度。
所以......我錯過了一些明顯的東西嗎?有沒有一種方法可以生成並將不對稱加密的散列生成併合理化爲合理數量的明確的,人類可讀的字符?
我願意購買解決方案。但是我在很多不同的平臺上工作,所以我想要一些可移植的東西。到目前爲止,我看過的所有內容都是平臺特定的。
很多非常感謝您的解決方案!
PS - 是的,我知道它仍然會被破解。我試圖想出一些合理的東西,作爲一個用戶,我仍然會覺得友好。
答案似乎是:不,你不能。如果有人能證明我錯了,我會留下這個問題,但從我能告訴它只需要很多字節來加密散列,就是這樣。我最終使用CocoaFob,到目前爲止沒有人抱怨(荒謬)很長的許可證密鑰。 – starkos 2010-06-18 22:47:52
作爲一個興趣點:我的應用程序,不明原因,在不到24小時內被破解。但它要求可執行文件在他們的keygen工作之前進行修補(他們用自己的公鑰替換掉我的公鑰)。我可以輕鬆地打破每個新版本的補丁(只需將鍵盤洗牌),以便我可以忍受它。 – starkos 2010-06-18 22:50:07
Base58編碼消除了不明確的字符。 – zaph 2016-06-03 13:27:53