繁体   English   中英

比较xml中的哈希字符串

[英]Comparing a hashed string in xml

我正在尝试一个带有登录屏幕的小项目,当用户创建登录详细信息并将其存储在XML文件中时,该项目将哈希密码。 用户登录时,它将对最近输入的密码进行哈希处理,并将其与匹配的用户名下方的密码进行比较。

我面临的问题是,我认为这是以某种方式将用户名添加到密码中并进行比较。 我设置了断点并确认哈希值完全相同。 我的XML文件的示例:

<Users>  
   <User>  
     <Username>Tom</Username>
     <Password>1981188637181704932922387266155158141224105130616330512161251851292213221146244100</Password>
   </User>  
</Users>

这是我登录时的代码:

private bool GetUser(string username, string password, string path) { XDocument doc = new XDocument(); byte[] bytes = Encoding.UTF8.GetBytes(password); SHA256Managed sha256 = new SHA256Managed(); byte[] hPass = sha256.ComputeHash(bytes); password = string.Empty; var result = (from item in XDocument.Load("users.xml").Descendants("User") where item.Element("Username").Value == username && item.Element("Password").Value == Encoding.Default.GetString(hPass) select item).FirstOrDefault(); if (result != null) { return true; } else { return false; }

如果我看一下我要提取的值,它将显示为
"Tom1981188637181704932922387266155158141224105130616330512161251851292213221146244100"

不知道这是应该的样子还是我的代码出错。 我觉得这是问题所在,因为我已仔细检查过,比较结果应返回正确。

result.Value看起来像是Value获取或设置此元素的串联文本内容。

您应该最终得到正确的user元素,其中result.Element("Username")Tom

XML中的密码似乎需要某种方式进行编码,而Encoding.Default.GetString(hPass)不会以该格式返回字符串...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM