[英]RSA: how to generate RSA public and private keys based on a passphrase (.net)
我在.net環境(所有版本)和使用vb.net工作。 我想基於密碼生成RSA公鑰和私鑰。
我對RSA算法的理解僅限於使用.net提供的類,即System.Security.Cryptography.RSACryptoServiceProvider類。 我知道如何生成隨機RSA公鑰/私鑰並執行加密/解密。
但是.net類不允許我們根據密碼創建RSA公鑰/私鑰。
雖然我正在使用vb.net,但歡迎任何使用c#,c,c ++或任何.net兼容語言的解決方案做出貢獻,因為我可以通過p / invoke或dll引用訪問該解決方案。
提前致謝!
也許您應該考慮像AES這樣的對稱密鑰加密,其中密碼短語可以從中導出密鑰。 你提到這是供內部使用的,你真的需要RSA嗎? 如果是這樣,或許您想要做的是保護RSA私鑰文件,您可以通過AES加密該文件並使用密鑰的密碼來實現。 您應始終使用旨在執行此操作的軟件生成RSA公鑰/私鑰對。
考慮到你需要大約2048位的隨機性才能開始你的素性測試(每個勢素數為1024位),並且你的潛在素數可能會失敗他們的素數測試,你的密碼需要很長才能提供足夠的熵生成好的密鑰。
讓我們假設鍵盤上大約有94個鍵生成字符,並進一步假設用戶實際上會隨機點擊它們。 (不是一個好的假設,但請耐心等待。)
這是每個字符的log(94)/log(2) == 6.55
位熵。 要獲得2048位的熵,您需要要求一個長度為313個字符的密碼: 2048 / 6.55... == 312.45
。
您如何看待您的用戶會被要求提供300多個字符的密碼? 請記住,這是樂觀的假設,用戶將隨機點擊94個符號中的每一個; 這對我來說似乎不太可能。 我覺得40多字符將是人的創造力的真正的限制:26個字母,10個數字,並且不需要移標點符號鍵。 你的密碼短語中大約有384個字符。
請堅持隨機生成的密鑰,其中有人非常聰明地負責收集熵以種子偽隨機數生成器。
據我所知,Rsa密鑰永遠不會基於密碼。 您只能使用密碼來保護rsa密鑰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.