密码检索和存储

在我的应用程序中,我必须重复调用需要validation的webservices。 用户不想重复输入validation信息(用户名和密码)。

是否有一种安全的方法来存储密码至少在应用程序运行的会话长度,因此用户只需输入一次数据?

目前,我将密码保存在内存中,并在输入密码并在用于服务调用时将其解密。 但我觉得有点不舒服。 这是处理这类数据的推荐方法吗?

将密码存储在数据库中以便在多个会话中使用它怎么样? 是否有推荐的处理方式? 我听说过bcrypt和pbkdf2。 但它们仅用于散列目的并比较输入的密码,而不是再次使用“解密”密码。

或者它是一种更好的方法来使用外部密码缓存,如keepass(或任何可以使用的)。

对于内存存储,请使用在内部使用SecureString的SecureString类或NetworkCredentials 。

对于持久存储,请使用Data Protection API加密密码。 它将使用只有此计算机上当前Windows用户可访问的密钥对其进行加密。