2012-11-10 71 views
2

我使用密碼PBKDF2哈希算法從我的用戶提供的密碼生成一個字節數組,像這樣:插入一個字節數組到SQL Server數據庫表

var DeriveBytes = new Rfc2898DeriveBytes(_Password, 20); 
byte[] _Salt = DeriveBytes.Salt; 
byte[] _Key = DeriveBytes.GetBytes(20); // derive a 20-byte key 

我想這些保存到我的數據庫,但我不確定使用哪種數據類型。從我所看到的沒有用於字節數組的數據類型,我很確定我不能將它轉換爲字符串並將其與varchar一起存儲,或者我可以嗎?

回答

7

binaryvarbinary是非常明確的設計來存儲字節數組。

MSDN link

+0

謝謝,雖然我得到當我打電話'的ExecuteNonQuery()'在我的聲明說'未能參數值從一個一個byte []轉換引發異常String.'。我確定我添加的參數是'SqlDbType.VarBinary'類型。 –

+0

@詹姆斯:這很奇怪。請使用您用來初始化參數的代碼提出另一個問題。 –

0

你定義在你的SQL表中的列binaryvarbinary,然後將其添加到使用需要SqlDbType參數進行溝通的一個重載您的ADO命令對象的參數屬性,這是一個二進制值。

選項2:

你在你的SQL表定義列nvarchar(max),您的字節數組轉換成底座64串,即System.Convert.ToBase64String(mybytes)。當它的時間從數據庫中檢索,

mybytes = System.Convert.FromBase64String((byte[])dr[i]); 
相關問題