我剛接觸.NET CryptoProvider空間,並且對我所看到的有關RSACryptoProvider重複創建相同密鑰的看法有點擔憂。 我使用的容器,因爲我存儲鍵關閉的服務器上的文件,像這樣(我出口CspBlob隨後這個創作,後來重新導入)...RSACryptoProvider爲同一個CspParameter ContainerName重複生成相同的密鑰
_cp = new CspParameters { KeyContainerName = ContainerName };
在這種情況下,容器名稱有一個硬編碼值,我通過引用容器。 什麼困擾我的是,當我創建了RSACryptoProvider,並通過exentsion密鑰對生成的鍵值都是一樣的!
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(RSAKeySize, _cp);
如果我更改容器的名稱,密鑰更改。必須有隨機性比容器名稱的其他來源,當你創建一個RSACryptoProvider,對不對?否則,使容器的名稱成爲密碼,這不是我的意圖。
權。所以如果我知道容器的名稱,我可以在任何地方重新創建相同的密鑰對! 這是非常安全的。這使容器的名稱成爲密碼。 – Bob 2010-07-15 14:02:37
@Bob。呃沒有。該名稱的容器存儲在計算機的配置文件Application Data目錄中。如果您在同一臺計算機上按名稱打開該容器,它將向您顯示其中的密鑰。如果您嘗試在另一臺計算機上打開它,則無法提取。計算機在您第一次使用容器時自動生成密鑰,並在下次需要時保持安全。正如@亨克建議的,還有其他方法可以獲得*新*鍵。 – ewall 2010-07-15 14:24:18
很好,明白了。這就是我需要的。密鑰的隨機性附加到我的配置文件和容器名稱。這對我行得通。謝謝。 – Bob 2010-07-15 14:46:02