Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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
C# 加密sqlite数据库中的登录名和密码-C中的SHA256#_C#_Encryption - Fatal编程技术网

C# 加密sqlite数据库中的登录名和密码-C中的SHA256#

C# 加密sqlite数据库中的登录名和密码-C中的SHA256#,c#,encryption,C#,Encryption,我想在sqlite数据库中存储登录名和密码。此数据库使用SQLCipher库进行加密。但加密数据库的密码是另一个问题。此密码存储在应用程序代码中。用户提供登录名和密码以登录到应用程序。在C#中有SHA256类。如果我使用这个类是否足够?或者更确切地说,我应该使用散列和盐或其他方法 谢谢要在数据库中存储用户密码以用于登录事宜,您应该使用带salt的哈希函数 SHA256就是其中之一,但还有更好的。我建议你使用导数函数。您可以使用.NET framework中提供的类实现自己的PBKDF2哈希方法

我想在sqlite数据库中存储登录名和密码。此数据库使用SQLCipher库进行加密。但加密数据库的密码是另一个问题。此密码存储在应用程序代码中。用户提供登录名和密码以登录到应用程序。在C#中有SHA256类。如果我使用这个类是否足够?或者更确切地说,我应该使用散列和盐或其他方法


谢谢

要在数据库中存储用户密码以用于登录事宜,您应该使用带salt的哈希函数

SHA256
就是其中之一,但还有更好的。我建议你使用导数函数。您可以使用.NET framework中提供的类实现自己的
PBKDF2
哈希方法

下面是一个快速操作方法:

现在只需将盐和散列存储在数据库中。使用和从
字节[]
获取
字符串,反之亦然



另一种选择是使用。这很有趣。

您应该哈希+salt用户密码。
int saltSize = 256;     // Number of bytes of the salt
int iterations = 1000;  // Number of times we iterate the function
                        // The more we iterate, the more it is gonna take time.
                        //     The advantage of a great iterations number is to 
                        //     make brutforce attack more painful.
int hashSize = 20;      // Number of bytes of the hash (the output)

var deriveBytes = new Rfc2898DeriveBytes("mypassword", saltSize, iterations);
byte[] salt = deriveBytes.Salt;
byte[] hash = deriveBytes.GetBytes(hashSize);