2

我正在对密码使用 PBKDF2 哈希算法,它从我的用户提供的密码中生成一个字节数组,如下所示:

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

我想将这些保存到我的数据库中,但我不确定要使用什么数据类型。据我所知,字节数组没有使用数据类型,我很确定我不能将它转换为字符串并将其存储在 中varchar,或者我可以吗?

4

2 回答 2

7

binary并且varbinary非常明确地设计用于存储字节数组。

MSDN 链接

于 2012-11-10T16:49:49.757 回答
0

您将 SQL 表中的列定义为binaryor varbinary,然后使用需要SqlDbType参数来传达二进制值的重载之一将其添加到 ado 命令对象的参数属性中。

选项2:

您将 SQL 表中的列定义为nvarchar(max),将字节数组转换为 base 64 字符串,即System.Convert.ToBase64String(mybytes)。当需要从数据库中检索它时,

mybytes = System.Convert.FromBase64String((byte[])dr[i]);
于 2013-08-08T14:51:54.850 回答