我有一个ASP.Net C#应用程序,它需要每5分钟使用WebServices连接到外部API。
外部are服务的要求如下:
我已经建立了以前的所有,但我现在有一个问题。存储当前和历史密码的最佳实践是什么?
显然,存储明文密码是一个糟糕的解决方案。我需要能够让我的webservice读取密码,并将其与每个请求一起传输。我还需要能够访问所有的历史密码,以确保我的新生成的密码不是重复的。
理想情况下,我希望将每个(加密的)密码存储在我的数据库中,并在需要调用webservice时对其进行解密。有什么我应该遵循的最佳做法吗?我应该使用Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Cryptographer.EncryptSymmetric(..)?加密每个密码吗?
注意:不幸的是,我无法更改外部API功能的方式。我必须遵守规定的规则。
发布于 2011-06-28 22:34:09
发布于 2011-06-28 22:44:59
最简单的方法..。使用ProtectedData类:
http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(password);
byte[] cypher = ProtectedData.Protect(data, null, DataProtectionScope.CurrentUser);
//... reverse
byte[] bytes = ProtectedData.Unprotect(cypher, null, DataProtectionScope.CurrentUser);
string password = System.Text.Encoding.UTF8.GetString(bytes);发布于 2011-06-28 22:29:16
ASP.NET IIS注册工具(Aspnet_regiis.exe)可以加密和解密web.config的部分。应用程序中不需要特殊的代码,因为ASP.NET 2.0将在运行时神奇地解密部分。
https://stackoverflow.com/questions/6513780
复制相似问题