适用于 .NET 的完整用户密码管理






2.31/5 (7投票s)
2005年6月24日
2分钟阅读

27526

1107
本文创建了一个完整的套件,用于管理用户和用户密码。该应用程序使用 XML 文件和 MD5 加密保存和加载所有数据。
引言
我一直在寻找一种将用户数据保存到 XML 文件中的简单方法。我找到的所有解决方案都使用了 XML 序列化(=> 不是很简单)。因此,我决定创建自己的应用程序。出于安全原因,XML 文件中的数据必须进行编码。
本文讨论了以下主题
- 使用 MD5 编码对字符串进行编码。
- 将所有用户数据库从 XML 文件加载到应用程序中。
- 将所有用户数据库保存到 XML 文件中。
- 在
ArrayList
中查找对象。
背景
要更改桌面背景,应用程序需要使用 WinAPI SystemParametersInfo
并为其提供所需的图像参数。唯一的问题是,API 仅接受 BMP 图像类型。我的解决方案是从目录中的每个 JPG 或 JPEG 文件创建 BMP。
Using the Code
- 使用 MD5 编码对字符串进行编码
为了进行编码,此应用程序创建了一个 MD5 编码对象。使用
StringBuilder
,该string
然后转换为字节数组,并在 MD5 编码后转换回string
。MD5 md5serv = MD5CryptoServiceProvider.Create(); byte[] hash; StringBuilder stringbuff = new StringBuilder(); ASCIIEncoding asciienc = new ASCIIEncoding(); // convert string into array of bytes byte[] buffer = asciienc.GetBytes(raw); // Comupte the hash for the string hash = md5serv.ComputeHash(buffer); foreach (byte b in hash) { stringbuff.Append(b.ToString("x2")); } return stringbuff.ToString();
- 将所有用户数据库从 XML 文件加载到应用程序中
使用的方法将 XML 文件读取到
XmlTextReader
中。然后它搜索新的 XML 元素。对于每个元素,该方法提取其属性。属性是从reader.Value
提取的。while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { elementName = reader.Name; while (reader.MoveToNextAttribute()) { if (reader.Name == "Password") myUser.Password = reader.Value; } } }
- 将所有用户数据库保存到 XML 文件中
从应用程序将所有用户数据库保存到 XML 文件中。此处使用的方法使用
XmlTextWriter
。它将所有用户保存到新的 XML 文件中。首先,必须设置 XML 选项 - 例如格式和缩进。然后它写入起始元素。之后,对于每个用户,该方法将其属性(XML 属性)添加到用户名(XML 元素)。XmlTextWriter writer = new XmlTextWriter(strPath + "\\users.xml", null); writer.Formatting = Formatting.Indented; writer.Indentation = 4; writer.WriteStartElement("Users"); foreach (User myUser in myAL) { for each user (myUser.UserName); writer.WriteAttributeString("Password", myUser.Password); writer.WriteAttributeString("Previliage", myUser.Previliage); writer.WriteEndElement(); } writer.Flush(); writer.Close();
- 从
ArrayList
中删除对象如果您想从
ArrayList
中删除对象,您不需要任何索引。您所需要的只是找到正确的指针并将其删除。foreach (User myUser in myAL) { if (myUser.UserName == (string)listBoxUser.SelectedItem) myAL.Remove(myUser); } }
历史
- 2005 年 6 月 24 日:初始版本
许可证
本文没有附加明确的许可,但可能包含文章文本或下载文件本身中的使用条款。如有疑问,请通过下面的讨论区联系作者。可以在 此处 找到作者可能使用的许可列表。