El PO estados que tienen que pasar las credenciales a otro servicio, lo cual es un tema completamente diferente a la de almacenamiento de contraseñas y verificación.
Dependiendo de cuánto control tenga sobre el servicio de socio, o qué exponen, las mejores soluciones implican un proveedor proporcionado o enfoques estándar de la industria como Kerberos, SAML u otro token de soporte estable y seguro para transmitir confianza. Este es un tema profundo.
Pero supongamos que necesita pasar credenciales a través de Basic Auth SSL/TLS. Entonces ahora necesita almacenarlos de forma segura y reversible. Para resolver este problema, he tenido éxito con la clave secreta que se transmite utilizando una clave privada de certificado. Esto ofrece cierta protección de su secreto por parte del sistema operativo y permite a las personas OPS administrar las claves, lo cual es deseable. La cuenta utilizada para ejecutar su proceso debe tener derechos para ver la clave privada, que luego termina la cadena de confianza en el sistema operativo.
Quizás tenga que pensar en la rotación de teclas, lo que requerirá que almacene un número de versión con el texto de cifrado.
También, SecureString podría ser de interés, pero hasta que todas las API de .NET permitan que SecureString pase como parte de una credencial, muchas veces terminas con una cadena en el montón administrado que no puedes destruir.
De todos modos, esta no es una respuesta alimentada por cuchara con código, pero por experiencia, he encontrado que administrar la cadena de secretos siempre es un problema, y si no puede terminar en una infraestructura reforzada como Active Directory, certificados son la segunda mejor opción.
Se ve bien, pero ¿qué es un IV? Pensé que solo necesitaría una clave de 16 bytes. – Chris
http://en.wikipedia.org/wiki/Initialization_vector. Puede aumentar la fuerza si coloca elementos aleatorios allí, pero también podría usar ceros. –
Necesito las contraseñas para pasarlas a otro servicio. – Chris