Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 Sql Server将SHA256字符串存储为问号_Sql Server 2008_Entity Framework_Encryption_Sha - Fatal编程技术网

Sql server 2008 Sql Server将SHA256字符串存储为问号

Sql server 2008 Sql Server将SHA256字符串存储为问号,sql-server-2008,entity-framework,encryption,sha,Sql Server 2008,Entity Framework,Encryption,Sha,我跟随这篇文章介绍了如何实现密码哈希和盐析 我已经将文章中提到的所有代码实现到我的MVC 5 web应用程序中,但是,每当我存储PasswordHash和Salt时,这两个字符串都会以问号形式保存在我的用户表中,例如,???????? 我使用的数据库是Sql Server 2008 R2。我的数据库用户表中的两个字段的数据类型均为Nvarchar(100) 我还应该提到的是,数据正在使用实体框架5持久化到数据库中 以前有人见过这个吗?我认为这可能是一个数据类型问题,也就是说,不应该是Nvarc

我跟随这篇文章介绍了如何实现密码哈希和盐析

我已经将文章中提到的所有代码实现到我的MVC 5 web应用程序中,但是,每当我存储PasswordHash和Salt时,这两个字符串都会以问号形式保存在我的用户表中,例如,????????

我使用的数据库是Sql Server 2008 R2。我的数据库用户表中的两个字段的数据类型均为Nvarchar(100)

我还应该提到的是,数据正在使用实体框架5持久化到数据库中

以前有人见过这个吗?我认为这可能是一个数据类型问题,也就是说,不应该是Nvarchar,但是,我真的不知道

这方面的任何帮助都会很好


谢谢。

实用程序.cs中有问题:

    public static string GetString(byte[] bytes)
    {
        char[] chars = new char[bytes.Length / sizeof(char)];
        System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
        return new string(chars);
    }
该函数由随机字节组成。这不是创建随机字符串的方式。字符不是用来存储二进制数据的。对于许多组件来说,这样的字符串很难接受


使用
Convert.ToBase64String
,不要信任网站上的随机文章。在使用SHA256之前,请验证您自己的理解。

SHA256不是字符串,而是字节数组。在客户端代码中使用byte[],在服务器代码中使用
VARBINARY

请不要使用SHA-256作为密码哈希,因为它太快了。至少使用PBKDF2进行10000次迭代。有关安全密码散列的实际工作方式的说明,请参阅on security.SE。