首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongo db sha1到sha256

Mongo db sha1到sha256
EN

Stack Overflow用户
提问于 2020-02-21 05:15:00
回答 1查看 626关注 0票数 1

我想将我的身份验证从sha-1转移到sha 256,然而,即使我创建了一个散列器,我也得到了一个错误,指出它无法使用sha1进行身份验证。代码中没有对这个旧机制的引用,我已经在我的mongo DB中创建了一个sha256用户。这意味着它以某种方式被默认为旧版本。查看代码,我得到警告,说明MongoClientSettings已过时,但浏览web时,我没有看到替代方案,除非我打算使用连接字符串。mongo客户端的文档仍然接受构造函数中的mongoClientSettings吗?我使用的是MongoDB版本4.10和mongocsharpdriver 2.10

代码语言:javascript
复制
public static MongoClientSettings PrepareMongoSettings(string dbName)
    {
        MongoClientSettings mongoSettings = new MongoClientSettings();
        mongoSettings.Server = new MongoServerAddress(Host, Port);
        mongoSettings.ConnectionMode = 0;
        if (!string.IsNullOrWhiteSpace(MongoUsername))
        {
            List<MongoCredential> mongoCredentials = new List<MongoCredential>();
            MongoCredential mongoCred = MongoCredential.CreateCredential("admin", MongoUsername, MongoPassword);
            mongoCredentials.Add(mongoCred);
            mongoSettings.Credentials = mongoCredentials;
        }

        return mongoSettings;
    }

我已经创建的哈希器是相当基本的,密码应该是哈希之前,这段代码它是输入到数据库。

代码语言:javascript
复制
public static class HasherSha256
{
    public static byte[] GetPasswordHash(string username, string password)
    {
        // get salted byte[] buffer, containing username, password and some (constant) salt
        byte[] buffer;
        using (System.IO.MemoryStream stream = new MemoryStream())
        using (System.IO.StreamWriter writer = new StreamWriter(stream))
        {
            writer.Write("MyDB");
            writer.Write(username);
            writer.Write(password);
            writer.Flush();

            buffer = stream.ToArray();
        }
        return ComputeSha256Hash(buffer);
    }

    static byte[] ComputeSha256Hash(byte[] rawData)
    {
        using (SHA256 sHA256 = SHA256.Create())
        {
            return sHA256.ComputeHash(rawData);

        }

    }
}

}

EN

回答 1

Stack Overflow用户

发布于 2020-02-21 22:32:26

我没有看到任何文档说MongoClientSettings已经过时了。这是连接到MongoDB的一个非常有用的功能。See Documentation hereCredentials已弃用,但被只接受一个凭据的Credential所取代。不是数组。

代码语言:javascript
复制
new MongoClientSettings()
{
    ConnectionMode = ConnectionMode.ReplicaSet,
    Credential = MongoCredential.CreateCredential("admin", Username, Password),
    ReplicaSetName = "ReplicaSetName",
    Servers =  new List<MongoServerAddress>(){new MongoServerAddress("server", 27017), new MongoServerAddress("server2", 27017)}.ToArray(),
    ApplicationName = "AppName",
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60328605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档