如何使用C#在Windows上存储和检索凭据
我构建了一个C#程序,在Win10上运行。 我想通过按下按钮从该程序发送电子邮件(计算结果)。 我把来自:电子邮件地址和主题:等等放在C#属性中,但我不想在程序的任何地方放置明文密码,我不希望用户输入密码每次发送邮件时为服务器。
可以这样做吗?
如果是这样,如何(一般)?
我正在考虑将所有电子邮件信息(包括服务器的加密密码)放在数据文件中,以便在程序启动期间读取。
或许Win10有一个设施…
您可以使用Windows Credential Management API。 这样,您只需要用户输入一次密码,然后将密码存储在Windows凭据管理器中。
下次启动应用程序并需要使用密码时,它将从Windows凭据管理器中读取它。 可以使用pinvoke( credwrite , CredRead , 此处示例 )或通过C#包装器CredentialManagement直接使用Windows凭据管理API。
使用Nuget CredentialManagement包的示例用法:
public class PasswordRepository { private const string PasswordName = "ServerPassword"; public void SavePassword(string password) { using (var cred = new Credential()) { cred.Password = password; cred.Target = PasswordName; cred.Type = CredentialType.Generic; cred.PersistanceType = PersistanceType.LocalComputer; cred.Save(); } } public string GetPassword() { using (var cred = new Credential()) { cred.Target = PasswordName; cred.Load(); return cred.Password; } } }
我不建议将密码存储在客户端计算机上的文件中,即使您加密密码,您可能会在应用程序代码中嵌入解密密钥,这不是一个好主意。
刚刚发布了一个符合.net 45和.net 4.6的小型库
https://github.com/Bhaal22/vaultmanager
Anyu反馈表示赞赏。
上述就是C#学习教程:如何使用C#在Windows上存储和检索凭据分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1020589.html