2009-01-13 168 views
1

我正在嘗試使用.net 2.0 PasswordDeriveBytes類生成密鑰。從密碼導出加密密鑰

PasswordDeriveBytes pdb = new PasswordDeriveBytes("blahblahblah",null); 
    byte[] iv = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }; 
    byte[] key = pdb.CryptDeriveKey("TripleDES", "SHA1", 128, iv); 

代碼拋出「CryptographicException:指定了無效標誌。」當試圖執行上面的CryptDeriveKey方法時。我試圖在asp.net中加密數據庫條目,這是我第一次使用加密技術。我會很感激任何幫助。

回答

3

根據MSDN:

「如果密鑰大小參數被設置爲0的位,使用指定算法的默認密鑰大小。「

MSDN PasswordDeriveBytes.CryptDeriveKey Method

PasswordDeriveBytes pdb = new PasswordDeriveBytes("blahblahblah",null); 
byte[] iv = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }; 
byte[] key = pdb.CryptDeriveKey("TripleDES", "SHA1", 0, iv); 

除非你有一個很好的理由來說明其大小,我建議只留0.1

+0

這樣做,謝謝。 – Jon 2009-01-13 03:46:15

2

TripleDes的具有192位的密鑰長度嘗試:

byte[] key = pdb.CryptDeriveKey("TripleDES", "SHA1", 192, iv); 

嘗試this link例如代碼