C# 如何在Meteor中解密密码

C# 如何在Meteor中解密密码,c#,mongodb,meteor,meteor-accounts,C#,Mongodb,Meteor,Meteor Accounts,可以解密Meteor应用程序生成的此类密码 我的想法是在C语言中为我的应用程序使用相同的凭据(电子邮件和密码)# 这是bcrypt哈希吗?它取决于钥匙的大小,就像河豚钥匙一样。如果是32位。当然,你可以用一些强大的计算能力和几个小时来完成。这是一把128位的钥匙,在它每次完成暴力强迫之前,你早就死了(我们所知道的宇宙也是如此)。不过,河豚确实有一个弱键的小漏洞。我会重新考虑你的实施 这是bcrypt散列吗?它取决于钥匙的大小,就像河豚钥匙一样。如果是32位。当然,你可以用一些强大的计算能力和几

可以解密Meteor应用程序生成的此类密码

我的想法是在C语言中为我的应用程序使用相同的凭据(电子邮件和密码)#


这是bcrypt哈希吗?它取决于钥匙的大小,就像河豚钥匙一样。如果是32位。当然,你可以用一些强大的计算能力和几个小时来完成。这是一把128位的钥匙,在它每次完成暴力强迫之前,你早就死了(我们所知道的宇宙也是如此)。不过,河豚确实有一个弱键的小漏洞。我会重新考虑你的实施

这是bcrypt散列吗?它取决于钥匙的大小,就像河豚钥匙一样。如果是32位。当然,你可以用一些强大的计算能力和几个小时来完成。这是一把128位的钥匙,在它每次完成暴力强迫之前,你早就死了(我们所知道的宇宙也是如此)。不过,河豚确实有一个弱键的小漏洞。我会重新考虑你的实施

对密码进行哈希和加密的目的是使解密变得不切实际


但是,如果您使用相同的方案,您可以重用meteor应用程序中的bcrypt(hash(password))并在另一个应用程序中对其进行检查

对密码进行哈希和加密的目的是使解密变得不切实际


但是,如果您使用相同的方案,您可以重用meteor应用程序中的bcrypt(hash(password))并在另一个应用程序中对其进行检查

如其他答案所述,您无法解密密码,但您可以很好地使用Meteor数据库在不同的系统中进行身份验证

这是如何做到的:

在另一个系统中,首先查找提供
SHA256
bcrypt
实现的库

然后使用用户输入的密码,首先从中计算SHA256摘要哈希

然后使用轮数=10(这是Meteor的默认值)将此哈希字符串馈送到bcrypt

现在将bcrypt的结果与MongoDB Meteor数据库中的
services.password.bcrypt
进行比较。如果它们匹配,则用户提供了正确的密码


作为参考,流星实现。它非常简单,并且有很好的注释。

如其他答案所述,您无法解密密码,但您可以很好地使用Meteor数据库在不同的系统中进行身份验证

这是如何做到的:

在另一个系统中,首先查找提供
SHA256
bcrypt
实现的库

然后使用用户输入的密码,首先从中计算SHA256摘要哈希

然后使用轮数=10(这是Meteor的默认值)将此哈希字符串馈送到bcrypt

现在将bcrypt的结果与MongoDB Meteor数据库中的
services.password.bcrypt
进行比较。如果它们匹配,则用户提供了正确的密码


作为参考,流星实现。它非常简单,评论也很好。

我遇到了一个类似的用例,当时我正在编写一个C#应用程序,该应用程序将验证通过Meteor.js应用程序创建的用户。我得到的代码是这样的(接下来使用System.Security.Cryptography和BCrypt.Net):


我遇到了一个类似的用例,当时我正在编写一个C#应用程序,该应用程序将验证通过Meteor.js应用程序创建的用户。我得到的代码是这样的(接下来使用System.Security.Cryptography和BCrypt.Net):


这不是加密的-它是一个使用BCryptC的散列,可以使用bcrypt,所以这是一个在C中复制逻辑的案例-谢谢@puropoix,这不是加密的-它是一个使用BCryptC的散列,可以使用bcrypt,所以这是一个在C中复制逻辑的案例-谢谢@puropoix,
string sha256_hash(string value) {
    StringBuilder stringBuilder = new StringBuilder();

    using (SHA256 hash = SHA256.Create()) {
        Encoding enc = Encoding.UTF8;
        Byte[] resultingHash = hash.ComputeHash(enc.GetBytes(value));

        foreach (Byte b in resultingHash) {
            stringBuilder.Append(b.ToString("x2"));
        }
    }

    return stringBuilder.ToString();
}

// First compute SHA256 hash
string sha256hash = sha256_hash("my_password");

// Let BCrypt.Net rehash and check if it matches Meteor's hash
if (BCrypt.Net.BCrypt.Verify(sha256hash, dbPassword) == true) {
    Console.WriteLine("Valid!");
}