security - programas - programa para encriptar archivos
¿Cuál es la mejor manera de encriptar un archivo de texto en C/C++? (4)
La aplicación web cgi basada en AC / C ++ creará un archivo de texto temporal en el servidor siempre que el usuario inicie sesión. El archivo de texto se eliminará cuando el usuario cierre la sesión. Quiero encriptar este archivo de texto y también el contenido del archivo. El archivo contendrá información como nombre de usuario y contraseña.
¿Cuál es la mejor manera de hacer esto?
EDITAR: veo que se sugieren bibliotecas. Mi problema es que no puedo usar nada más que la biblioteca Standard C ++.
Creo que podrías estar haciendo esto de la manera incorrecta. Si el objetivo es la seguridad, la seguridad real, entonces no va a querer almacenar la contraseña ni siquiera en su forma encriptada (porque puede ser descifrada si la llave es robada, como han dicho otras personas).
Lo que debe hacer es almacenar un hash de la contraseña (con una sal apropiada). Esto significa que nadie (ni siquiera los administradores del sitio) puede determinar la contraseña de un usuario. Simplemente pueden aceptar una contraseña y ver si es la correcta o no al mezclar la entrada con la misma sal (no puede invertir un hash).
Además, este tipo de situación se presta muy bien a las bases de datos, ¿estás usando una?
Hashing de contraseñas de Google con sales y puede leer sobre esto de expertos en seguridad reales (no soy uno).
Un estándar de cifrado que actualmente se considera "seguro" es AES (también llamado Rijndael). Puede encontrar una implementación de C ++ en Codeproject y en muchos otros lugares.
Tenga en cuenta que al utilizar AES o cualquier otro estándar de cifrado simétrico, debe almacenar la clave de cifrado / descifrado dentro de su aplicación. Si alguien descubre la clave, puede descifrar todos los archivos que cifró con esta clave.
Si su aplicación se ejecutará en Windows, también podría usar DPAPI para almacenar la información encriptada.
Utilice una biblioteca bien conocida como openssl y siga ejemplos bien conocidos y evite las soluciones específicas de la plataforma.
Respuesta revisada
Desea que el código cifre y descifre un archivo que se puede usar con su código C ++.
Sería absolutamente incorrecto escribir tu propio código ( como este ).
Pero, dices que no puedes usar bibliotecas estándar.
Las bibliotecas estándar (y, tal vez, de código abierto) son probablemente el enfoque más correcto para implementar el cifrado en sus aplicaciones. Si eliges no hacer eso, te deja solo dos opciones,
- Implemente su propia versión de un algoritmo de encriptación estándar (y la debilidad del riesgo por cualquier error que cometa)
- Use una llamada de ''sistema'' desde su aplicación y ejecute un cifrado estándar (como bcrypt ) que tal vez (con suerte) esté disponible en su sistema.
Todavía me limitaría a elegir una biblioteca estándar o integrar un código de código abierto en mi aplicación. Por favor explica qué te impide hacer eso.
Viejo : por alguna razón, pensé que se requería un código PHP ... mi error.
Este artículo proporciona un ejemplo de programa simétrico de cifrado de PHP que utiliza crypt para almacenar la contraseña en un archivo de texto.
Posiblemente relacionadas preguntas