我是Universal Windows Platform的初学者。我使用Web服务将Php我的管理员用于我的数据库。现在我对登录感到震惊。在数据库中,密码为Bcrypted或Hashed。我不知道如何在C#或UWP中解密它。
答案 0 :(得分:1)
你根本不应该解密(或者" dehash" - 这不是真正可能的,它的全部意义)。而是加密用户输入,并检查哈希值是否匹配。
C#提供了大量的散列算法(可以在Windows.Security.Cryptography
或System.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;
}