Discussion:
Encriptar cadena
(demasiado antiguo para responder)
Alexyomar Isturiz
2008-05-04 06:01:26 UTC
Permalink
Hola que tal.

Soy un newbie en esto de la programación con Visual Studio 2005, migre de
VB6 a esta porque me estaba quedando muuuy atras. Y hoy se me presenta un
grave dilema... Como encriptar y desencriptar un string o una cadena de
texto.

he leido en internet de las clases que trae el visual studio, pero no las
entiendo muy bien como se utilizan.

La idea es guardar una contraseña encriptada en una base de datos de access,
y desencriptarla. Es como una validacion de inicio de sesion.

Si alguien tiene una idea mejor... se la agradezco...

Gracias...!!

Alex
Alexyomar Isturiz
2008-05-04 06:49:21 UTC
Permalink
Je je... Me respondi yo solo... bueno, gracias a un post anterior que pude
ver...

y tambien me ayudo mucho:

http://msdn.microsoft.com/es-es/library/ms172831(VS.80).aspx

Pero igual, si tienen alguna idea de hacer lo que plantee mas seguro... soy
todo oidos...
Post by Alexyomar Isturiz
Hola que tal.
Soy un newbie en esto de la programación con Visual Studio 2005, migre de
VB6 a esta porque me estaba quedando muuuy atras. Y hoy se me presenta un
grave dilema... Como encriptar y desencriptar un string o una cadena de
texto.
he leido en internet de las clases que trae el visual studio, pero no las
entiendo muy bien como se utilizan.
La idea es guardar una contraseña encriptada en una base de datos de access,
y desencriptarla. Es como una validacion de inicio de sesion.
Si alguien tiene una idea mejor... se la agradezco...
Gracias...!!
Alex
SoftJaén
2008-05-04 06:59:30 UTC
Permalink
Y hoy se me presenta un grave dilema... Como encriptar y desencriptar un
string o una cadena de texto.
he leido en internet de las clases que trae el visual studio, pero no las
entiendo muy bien como se utilizan.
Hola, Alexyomar:

Si quieres un ejemplo para ver cómo se encripta/desencripta el contenido de
un archivo de texto, es decir, el contenido de «un string o una cadena de
texto», abre la ayuda de Visual Studio y busca el ejemplo que aparece en el
contenido de la clase «TripleDESCryptoServiceProvider».
La idea es guardar una contraseña encriptada en una base de datos de access,
y desencriptarla. Es como una validacion de inicio de sesion.
Las contraseñas las deberás de guardar encriptadas en la base de datos, y
cuando desees validar el inicio de sesión, encriptarías la contraseña
especificada por el usuario para compararla con la existente en la base de
datos para la cuenta de usuario que desea autentificar.

Por supuesto, para almacenar y recuperar las contraseñas desde la base de
datos, tendrás que conocer cómo añadir, modificar y recuperar registros
desde una base de datos, que es otro tema muy distinto a la criptografía.
:-)

Un saludo
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
SoftJaén
2008-05-04 10:03:01 UTC
Permalink
¡Bueno! Si tu intención sólo es autentificar inicios de sesión, no es
necesario que encriptes/desencriptes contraseñas; solamente deberás
almacenar en la base de datos resúmenes hash de las contraseñas. Para crear
el hash te puede servir la clase «SHA1CryptoServiceProvider».
Posteriormente, cuando el usuario introduzca el texto claro de la
contraseña, crearías el hash y lo compararías con el hash del usuario
existente en la base de datos. Sin son el mismo hash, se entiende que la
contraseña es correcta.

Debes de tener en cuenta que los resúmenes hash son «cifrados
unidireccionales» los cuales no se pueden descrifar, y nos pueden ser útiles
para verificar que alguien conoce una contraseña sin tener que almacenar el
texto plano de la contraseña, porque lo que almacenaríamos en la base de
datos serían los resúmenes hash de las contraseñas.

Por supuesto, si el usuario hace público el texto claro de su contraseña, de
nada sirve tener cifrada la misma en la base de datos. :-)
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Ivan
2008-05-04 17:30:52 UTC
Permalink
hola chicos,

si no os importa añado alguna duda al hilo, por si Enrique puede
aclararmelo un poco y asi desechar algunos miedos.

practicando en VBA y ante la notable dficultad a la hora de proteger
archivos de excel, en su dia alguien me comento que la mejor
contraseña era la 'no guardada', cosa que al resultar harto dificil de
llevar a cabo (sobre todo a la hora de recuperarla, je, je,...) y ante
mi total desconocimiento de las normas y usos de seguridad en VB, me
hizo ponerme a practicar algo que podriamos llamar contraseñas
dinamicas, que combinaba encriptacion (con la VCCrypto de Ruben
Vignon, gracias para el de nuevo desde aqui) y diversos criterios para
renovar automaticamente la contraseña (y recuperarla) ante
determinadas circunstancias, sin por ello alterar las contraseñas de
usuario

la verdad es que la cosa parecia funcionar razonablemente bien, pero
ante el temor de que en algun momento un error o cualquier tipo de
problema pudiese truncar el proceso y dejar el archivo protegido por
una contraseña irrecuperable, unido a la falta de necesidad real del
mismo (se trataba de practicar por practicar), el experimento cayo en
el olvido

este rollo viene a que ultimamente me estaba planteando recuperarlo
para intentar adaptarlo a vb net, pero al leer esta consulta he caido
en la cuenta de que Net no es Excel, y de que seguramente el framwork
provee sistemas de seguridad lo suficientemente 'seguros', valga la
redundancia, como para hacer innecesarios este tipo de experimentos

y ahora esa duda (disculpas de antemano si digo alguna burrada):

¿hasta que punto son seguros el manejo/almacenamiento/recuperacion de
contraseñas en net?

¿son las formas comentadas, sobre todo lo referido a los resumenes
hash, las que se usan para ello, o existe algun tipo de clase/
biblioteca especifica para manejar la seguridad en net?

¿son aplicables a la proteccion de proyectos, codigo, etc?

y por ultimo¿, conoceis algun tipo de tutorial o articulo en
castellano que trate el tema, pero mas bien desde abajo, sin dar por
hecho el conocimiento de multitud de terminos tecnicos?

bueno, se trata de otra de mis dudas 'tomo', pero cualquier comentario
sera bien recibido

un saludo
Ivan
SoftJaén
2008-05-04 18:07:08 UTC
Permalink
Post by Ivan
¿hasta que punto son seguros el manejo/almacenamiento/recuperacion
de contraseñas en net?
¡Hombre! Digo yo que serán seguras mientras sean seguros los distintos
algoritmos de criptografía que implementan las clases existentes en el
espacio de nombres «System.Security.Cryptography», como pueden ser los
algoritmos SHA1, SHA256, SHA384, SHA512, MD5, RC2, Rijndael, TripleDES y
algunos otros más existentes.
Post by Ivan
¿son las formas comentadas, sobre todo lo referido a los resumenes
hash, las que se usan para ello, o existe algun tipo de clase/
biblioteca especifica para manejar la seguridad en net?
Como he comentado antes, existen muchos algoritmos de encriptación, teniendo
.net una clase para cada uno de ellos. Simplemente tienes que consultar en
la ayuda de Visual Studio el espacio de nombres
«System.Security.Cryptography».
Post by Ivan
¿son aplicables a la proteccion de proyectos, codigo, etc?
Que yo sepa, ninguno de ellos. Las distintas clases se utilizan para cifrar
un texto claro, o bien para descifrar el texto cifrado, generar claves
privadas, públicas, guardarlas con el texto cifrado, pero para proteger un
proyecto, o un archivo de Excel o de Word, no. Estos archivos se protegen
mediante una contraseña, con la cual crearán un resúmen hash adecuado que se
almacenará en alguna parte del archivo, pero de ello se encarga el propio
Microsoft Excel o Microsoft Word.

Puedes desarrollar un programa que te cifre el contenido de un archivo de
texto, de tal forma que generando una clave privada o un resúmen hash, te la
guarde junto con el texto cifrado en otro archivo que solamente podrá
abrirlo aquella persona que conozca la contraseña que se utilizó para
generar la clave privada o el resúmen hash.
Post by Ivan
y por ultimo¿, conoceis algun tipo de tutorial o articulo en
castellano que trate el tema, pero mas bien desde abajo, sin dar por
hecho el conocimiento de multitud de terminos tecnicos?
Lo que más o menos conozco de criptografía lo he aprendido de un par de
libros que tengo, los cuales tampoco produndizan demasiado en el tema, y
tampoco tengo interés en convertirme en un experto en cifra, al menos por
ahora. :-)

En la ayuda de Visual Studio viene la correspondiente documentación sobre
las clases criptográficas que utiliza el marco de trabajo de .net, pero poco
más.

Me imagino que habrá libros que traten sobre los distintos algoritmos de
encriptación, al menos de una manera general, sin que expliquen cómo
utilizarlos con algún lenguaje de programación en especial.
--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Ivan
2008-05-04 19:17:08 UTC
Permalink
hola Enrique,

muchas gracias por todos los comentarios.

en realidad tampoco es mi deseo convertirme en ningun experto en
encriptacion,

pero como mi conocimiento del tema es practicamente nulo, si me
apetece conocer al menos la base de la forma de implementar la
seguridad en una aplicacion basada en net,

sobre todo lo que se refiere al intrusismo sobre el proyecto mismo,
pues la parte referida al permiso de acceso por parte de usuarios
'normales', autorizados y/o no, para las diversas tareas propias de la
aplicacion, creo que no debe ser demasiado complicada de manejar

de momento tomo nota de todas tus apreciaciones y seguramente empezare
por echarle un ojo al espacio de nombres
«System.Security.Cryptography».

lo dicho, muchas gracias una vez mas

un saludo
Ivan
Jhonny Vargas P.
2008-05-04 23:13:10 UTC
Permalink
Hola Ivan,

Te mando este link de un amigo chileno :)
http://msmvps.com/blogs/pmackay/archive/2007/11/30/post28.aspx
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
Post by Ivan
hola Enrique,
muchas gracias por todos los comentarios.
en realidad tampoco es mi deseo convertirme en ningun experto en
encriptacion,
pero como mi conocimiento del tema es practicamente nulo, si me
apetece conocer al menos la base de la forma de implementar la
seguridad en una aplicacion basada en net,
sobre todo lo que se refiere al intrusismo sobre el proyecto mismo,
pues la parte referida al permiso de acceso por parte de usuarios
'normales', autorizados y/o no, para las diversas tareas propias de la
aplicacion, creo que no debe ser demasiado complicada de manejar
de momento tomo nota de todas tus apreciaciones y seguramente empezare
por echarle un ojo al espacio de nombres
«System.Security.Cryptography».
lo dicho, muchas gracias una vez mas
un saludo
Ivan
Ivan
2008-05-04 23:50:39 UTC
Permalink
hola Jhonny,
Te mando este link de un amigo chileno :)http://msmvps.com/blogs/pmackay/archive/2007/11/30/post28.aspx <<<
muchisimas gracias, no he hecho mas que empezar a leerlo, pero tiene
muy, pero que muy buena pinta

lo dicho, muchas gracias y me voy 'para alla' un rato para ir 'tomando
contacto'

un saludo
Ivan
Lluis Franco
2008-05-05 10:10:08 UTC
Permalink
Todo un clásico el artículo de Mr. Patrick
:-)

Saludos,
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
--
NUG: http://andorradotnet.com
Web: http://sps.uyssoft.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
--
(Guía de netiquette de los foros)
http://sps.uyssoft.com/Foros%20online/Netiquette.aspx
FIMARGE, S.A.
Principat d'Andorra
***@ODIO_EL_SPAMfimarge.ad
Tel.: +376 805 100
Fax: +376 824 500
--
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile/Lluis
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho.
Ivan
2008-05-05 14:16:34 UTC
Permalink
Todo un clásico el artículo de Mr. Patrick <<<
prueba papable de que los clasicos suelen estar totalmente vigentes
(en este caso, al menos, en cuanto a lo didactico se refiere)

justo lo que buscaba para empezar a comprender un poco todo el
tinglado hash/cript/etc. Ya esta entre mis marcadores favoritos para
releerlo con calma

un saludo y gracias a todos
Ivan
Jhonny Vargas P.
2008-05-05 14:30:48 UTC
Permalink
Prometía mucho Patrick, lástima que tanta cerveza lo tengan en el estado que
está... jejejeje

Cuidate Lluis... no bebas tanto... XD
--
Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile
Post by Lluis Franco
Todo un clásico el artículo de Mr. Patrick
:-)
Saludos,
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
--
NUG: http://andorradotnet.com
Web: http://sps.uyssoft.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
--
(Guía de netiquette de los foros)
http://sps.uyssoft.com/Foros%20online/Netiquette.aspx
FIMARGE, S.A.
Principat d'Andorra
Tel.: +376 805 100
Fax: +376 824 500
--
https://mvp.support.microsoft.com/profile/Lluis
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho.
Lluis Franco
2008-05-06 09:03:32 UTC
Permalink
Post by Jhonny Vargas P.
Cuidate Lluis... no bebas tanto... XD
Mira quién habló... Yo lo único que bebo son biberones tio.
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
--
NUG: http://andorradotnet.com
Web: http://sps.uyssoft.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
--
(Guía de netiquette de los foros)
http://sps.uyssoft.com/Foros%20online/Netiquette.aspx
FIMARGE, S.A.
Principat d'Andorra
***@ODIO_EL_SPAMfimarge.ad
Tel.: +376 805 100
Fax: +376 824 500
--
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile/Lluis
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho.
Alexyomar Isturiz
2008-05-04 19:13:01 UTC
Permalink
Esta idea esta mucho mejor... Muchas Gracias.. Ya me coloco a hacer eso...!

Saludos!
Post by SoftJaén
¡Bueno! Si tu intención sólo es autentificar inicios de sesión, no es
necesario que encriptes/desencriptes contraseñas; solamente deberás
almacenar en la base de datos resúmenes hash de las contraseñas. Para
crear el hash te puede servir la clase «SHA1CryptoServiceProvider».
Posteriormente, cuando el usuario introduzca el texto claro de la
contraseña, crearías el hash y lo compararías con el hash del usuario
existente en la base de datos. Sin son el mismo hash, se entiende que la
contraseña es correcta.
Debes de tener en cuenta que los resúmenes hash son «cifrados
unidireccionales» los cuales no se pueden descrifar, y nos pueden ser
útiles para verificar que alguien conoce una contraseña sin tener que
almacenar el texto plano de la contraseña, porque lo que almacenaríamos en
la base de datos serían los resúmenes hash de las contraseñas.
Por supuesto, si el usuario hace público el texto claro de su contraseña,
de nada sirve tener cifrada la misma en la base de datos. :-)
--
Enrique Martínez
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado
o sugerido en el presente mensaje.
Loading...