I have a .NET server application that must store passwords that can't be hashed because some APIs I use need the passwords in plain text.
These passwords can also be exported and imported as part of the system configuration into another server instance of the application or for backup purposes.
The encrypted data will definitely need to be readable by application instances on other servers besides the one it was exported from.
What is the most secure way to accomplish this without too much hassle for the user and minimum risk of data loss because of a lost/unavailable encryption key?
EDIT
I am looking more for details like:
- How/where to store the key
- Generating a unique key for each install and storing it vs an application wide common key
...not on which encryption algorithm to use.
EDIT II
I should add that this application will be distributed to customers to run on their own servers. It is a client/server application. The passwords stored are only used by our application to pass into external API methods. We don't use them for anything else.
The main concern is when the system configuration is exported as XML for backup or to move to a different machine. This is where we want to protect them, but also make it as easy and flexiable for the user as possible.