C/Visual C - Passwords...

 
Vista:

Passwords...

Publicado por Gabi Petrone (3 intervenciones) el 07/04/2001 02:36:56
Buenas.... tengo una duda existencial.. Necesito hacer un programa que pida una contraseña de entrada.. Se supone que esta tiene que ser inviolable aun para aquel que pueda ver el codigo fuente, pero no tengo ni la mas palida idea de que hacer......
¿Alguna idea? ^_^

Bye!
Gabi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Passwords...

Publicado por Germán B. (143 intervenciones) el 07/04/2001 02:59:42
Una idea: hacer la función que encripta la password en un módulo aparte, que solo tenga esa función. Una vez bien probada la función, generar un OBJ para incluir en cualquier proyecto que requiera la función, pero mantener el módulo fuente totalmente separado de los demás, por ejemplo quedate solamente vos con una copia fuente de la función y que nadie tenga acceso. El OBJ estará disponible para crear cualquier programa que necesite la función, incluso por otros programadores, sin que nadie pueda ver QUÉ hace.
El único riesgo está en que alguien desensamble el módulo (aunque esto es igual para cualquier programa), o que alguien haga un programa al que pueda darle muchas palabras a encriptar para analizar la salida y ver si descubre qué operaciones llevó a cabo la función. Para esto se recomienda una encripción con cierto nivel de complejidad.
G
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Passwords...

Publicado por Gabi "otra vez" (3 intervenciones) el 07/04/2001 03:30:12
Emmmmmm.... deberia haber aclarado que lo que no se hacer es justamente esa funcion para encriptar el password... ^_^? (je,je)
Y tambien debi aclarar que soy bastante novata en esto... Lo de crear la funcion en el OBJ para mi es chino basico... ¿como hago para manipular el obj?... (ya que estoy aclaro que estoy trabajando con el c++ 3.1)

Gabi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Passwords...

Publicado por Germán B. (143 intervenciones) el 07/04/2001 05:41:56
Bueno, a ver...
Para hacer una función de encripción hay que tener un poco de creatividad y astucia, aparte de saber manipular a nivel binario los caracteres. Un ejemplo muy simple es usar una serie fija de números que sumas a cada carácter de la clave, digamos 5 3 7, entonces la clave "AAA" se grabaría como "FDH". A esto podés aplicarle operaciones lógicas de bits, por ejemplo negar todos los bits de cada carácter. Podés intercalar caracteres aleatorios para meter "ruido" (el resultado sería una clave más larga), podés hacerle a cada carácter un XOR con el próximo carácter de la cadena, etc etc. Y si necesitás poder recuperar la password original, tenés que programar también la función que haga todo lo inverso.
Lo del OBJ: Cualquier módulo C o CPP, al ser compilado, produce un OBJ, que es código máquina, no ejecutable pero listo para ser "metido" en un ejecutable. Muchas veces uno directamente genera EXE ignorando los pasos intermedios, pero si solo compilás el módulo (sin linkear), obtendrás un OBJ de ese módulo.
Si usás Turbo C++ tenés que crear un Project, en el cual indicás cual es tu módulo principal (C o CPP con el programa propiamente dicho), y también indicás el otro OBJ. Al "armar" el proyecto, te va a compilar el módulo fuente y te va a linkear el objeto resultante con el otro de la función.
En el fuente del programa deberá estar el prototipo de la función externa para que el compilador valide.
Cualquier cosa escribime.
Ojo, esto es solo una idea, quizás a alguien se le ocurra algo mejor.
G
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Passwords...

Publicado por Googol (255 intervenciones) el 09/04/2001 01:27:07
Yo creo que habitualmente no es eso lo que se hace...
En general se utilizan funciones hash, como por ejemplo el algoritmo MD5. Son algoritmos que a partir de una cadena te dan una cadena "resumen", que no se parece absolutamente en nada a la original y que, además, NO TIENE INVERSA.
¿Qué ventaja tiene esto? Que aunque se pueda ver el código del programa e, incluso, aunque las claves encriptadas puedan verse, es IMPOSIBLE (al menos hoy en día) obtener la clave original.
Para que el programa sepa si el usuario mete la clave correcta o no, la única posibilidad es que encripte la clave que mete el usuario, y compare el resultado con la que tiene guardada. Si es igual, se supone que la clave era correcta, y si no, la autentificación falla.
Si quieres utilizar alguna función de estas, puedes buscar, por ejemplo MD5 en internet. Es bastante conocido, y en algún sitio te saldrá el algoritmo (lo siento, pero yo no lo tengo, sólo conozco la teoría :-( )

¡Espero que te sirva!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar