是否有一个最佳实践的方式来存储在Windows应用程序的凭据,无论是内置的API或只是一个推荐的encryptionalgorithm?
跟SVN,Spotify和Skype一样。
编辑:我的意图是使用Web服务,从它的身份validation服务返回一个令牌。 其他服务接受该令牌作为参数。 但是,令牌在30分钟后过期,因此存储令牌本身对于此任务来说毫无意义。
看来使用ProtectedData (包装Windows Data Protection API )是我最好的选择,因为它可以根据当前登录的用户进行加密。
byte[] dataToEncrypt = new byte[] { ... }; // entropy will be combined with current user credentials byte[] additionalEntropy = new byte { 0x1, 0x2, 0x3, 0x4 }; byte[] encryptedData = ProtectedData.Protect( dataToEncrypt, additionalEntropy, DataProtectionScope.CurrentUser); byte[] decryptedData = ProtectedData.Unprotect( encryptedData, additionalEntropy, DataProtectionScope.CurrentUser);
最佳做法是永远不要存储凭据,只有Kerberos令牌…不幸的是,并不是每个资源都允许这样的身份验证。
在MSDN中有很多关于密码的建议 。 你将需要找到CryptProtectData的托管包装