UWP中的数据库密码解密

时间:2016-05-31 08:17:23

标签: c# laravel uwp bcrypt

我是Universal Windows Platform的初学者。我使用Web服务将Php我的管理员用于我的数据库。现在我对登录感到震惊。在数据库中,密码为Bcrypted或Hashed。我不知道如何在C#或UWP中解密它。

3 个答案:

答案 0 :(得分:1)

你根本不应该解密(或者" dehash" - 这不是真正可能的,它的全部意义)。而是加密用户输入,并检查哈希值是否匹配。

C#提供了大量的散列算法(可以在Windows.Security.CryptographySystem.Security.Cryptography命名空间中找到),可用于散列用户输入。

如果您需要的算法不可用,则可以尝试使用Bouncy Castle

答案 1 :(得分:1)

您无法以编程方式解密哈希密码,您需要使用相同的方法加密用户放入登录表单的密码,然后检查2哈希结果是否匹配

我建议你做一些关于用户管理主题的额外阅读,并选择一个现有的框架来处理这个问题

有关您的项目的更多信息可能会帮助人们建议正确的解决方案

答案 2 :(得分:0)

private string Decrypt(string cipherText)
{
    string EncryptionKey = "MAKV2SPBNI99212";
    byte[] cipherBytes = Convert.FromBase64String(cipherText);
    using (Aes encryptor = Aes.Create())
    {
        Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
        encryptor.Key = pdb.GetBytes(32);
        encryptor.IV = pdb.GetBytes(16);
        using (MemoryStream ms = new MemoryStream())
        {
            using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
            {
                cs.Write(cipherBytes, 0, cipherBytes.Length);
                cs.Close();
            }
            cipherText = Encoding.Unicode.GetString(ms.ToArray());
        }
    }
    return cipherText;
}