Almacenar password cifrada

13/01/2004 - 10:38 por Kasiyas | Informe spam
Hola a todos,

Alguien sabe si existe alguna forma fácil de almacenar una contraseña
(cifrada por supuesto, para que nadie la pueda ver) que utilizo durante la
ejecución de un programa, en el archivo de configuración .config o en un
archivo de texto cualquiera (tambien creo que se podría en el Registro de
Windows), para que cada vez que lo ejecute no tenga que volver a teclearla?
Se que hay muchas aplicaciones de windows que tienen que hacer algo parecido
(Outlook Express, Messenger, etc...) que guardan las passwords, pero no se
como lo hacen.
He estado mirando en System.Cryptographic pero no se con que algoritmo se
cifra una contraseña de forma sencilla, además no se que información
necesito guardar para que luego pueda hacer el descifrado (Vector de
Inicialización, Salt, etc...) y/o si debería cifrar tb esa información.

Bueno espero que se me haya entendido algo de lo que expongo.

Un saludo a todos y gracias por adelantado.

Preguntas similare

Leer las respuestas

#6 kasiyas
16/01/2004 - 00:13 | Informe spam
Muchas gracias por tu ayuda, lo que pasa es que la DPAPI sólo me funciona en
Windows 2000,XP y posteriores, y necesito que me funcione también en Win 98
y ME. Si lo único que necesito es cifrar un texto (en este caso una
contraseña) para poder asi guardarla en un archivo de texto (el .config de
la aplicación) sin que esté expuesta a todo el mundo.

Un saludo y gracias.


Michael Giagnocavo [MVP] wrote:

Lo que hace Windows es usar algo llamado el Data Protection API. El DPAPI
puede ser utilizado para que solo el usuario actual pueda
encriptar/desencriptar. Si alguien reseta su contrasena (no cambiarlo,
pero hacer un reset), los datos seran borrados (lo cual es bueno).

Basicamente, llamas a CryptProtectData, y te devuelve un string. Llamas a
CryptUnprotectData, y te regresa tus bytes originales. Para obtener los
bytes, usa System.Text.Encoding.UTF8.GetBytes().

En este articulo de MSDN, se describa como hacer una clase in .NET para
encapsular al DPAPI. Debes usar el User Store, no el machine store.

http://msdn.microsoft.com/library/e...etHT07.asp

-mike
MVP

"Kasiyas" wrote in message
news:
Hola a todos,

Alguien sabe si existe alguna forma fácil de almacenar una contraseña
(cifrada por supuesto, para que nadie la pueda ver) que utilizo durante
la ejecución de un programa, en el archivo de configuración .config o en
un archivo de texto cualquiera (tambien creo que se podría en el Registro
de Windows), para que cada vez que lo ejecute no tenga que volver a


teclearla?
Se que hay muchas aplicaciones de windows que tienen que hacer algo


parecido
(Outlook Express, Messenger, etc...) que guardan las passwords, pero no
se como lo hacen.
He estado mirando en System.Cryptographic pero no se con que algoritmo se
cifra una contraseña de forma sencilla, además no se que información
necesito guardar para que luego pueda hacer el descifrado (Vector de
Inicialización, Salt, etc...) y/o si debería cifrar tb esa información.

Bueno espero que se me haya entendido algo de lo que expongo.

Un saludo a todos y gracias por adelantado.


Respuesta Responder a este mensaje
#7 christian strevel
16/01/2004 - 04:36 | Informe spam
using System.Web.Security;

// encriptamos con SHA1
encryptedPassword FormsAuthentication.HashPasswordForStoringInConfigFile(plainPassword,
"SHA1");

// encriptamos con MD5
encryptedPassword FormsAuthentication.HashPasswordForStoringInConfigFile(plainPassword,
"MD5");

Con esto te evitas todo el show de encriptar con streams etc etc

christian strevel
http://www.chris-strevel.com



"kasiyas" wrote in message
news:
Muchas gracias por tu ayuda, lo que pasa es que la DPAPI sólo me funciona


en
Windows 2000,XP y posteriores, y necesito que me funcione también en Win


98
y ME. Si lo único que necesito es cifrar un texto (en este caso una
contraseña) para poder asi guardarla en un archivo de texto (el .config de
la aplicación) sin que esté expuesta a todo el mundo.

Un saludo y gracias.


Michael Giagnocavo [MVP] wrote:

> Lo que hace Windows es usar algo llamado el Data Protection API. El


DPAPI
> puede ser utilizado para que solo el usuario actual pueda
> encriptar/desencriptar. Si alguien reseta su contrasena (no cambiarlo,
> pero hacer un reset), los datos seran borrados (lo cual es bueno).
>
> Basicamente, llamas a CryptProtectData, y te devuelve un string. Llamas


a
> CryptUnprotectData, y te regresa tus bytes originales. Para obtener los
> bytes, usa System.Text.Encoding.UTF8.GetBytes().
>
> En este articulo de MSDN, se describa como hacer una clase in .NET para
> encapsular al DPAPI. Debes usar el User Store, no el machine store.
>
> http://msdn.microsoft.com/library/e...etHT07.asp
>
> -mike
> MVP
>
> "Kasiyas" wrote in message
> news:
>> Hola a todos,
>>
>> Alguien sabe si existe alguna forma fácil de almacenar una contraseña
>> (cifrada por supuesto, para que nadie la pueda ver) que utilizo durante
>> la ejecución de un programa, en el archivo de configuración .config o


en
>> un archivo de texto cualquiera (tambien creo que se podría en el


Registro
>> de Windows), para que cada vez que lo ejecute no tenga que volver a
> teclearla?
>> Se que hay muchas aplicaciones de windows que tienen que hacer algo
> parecido
>> (Outlook Express, Messenger, etc...) que guardan las passwords, pero no
>> se como lo hacen.
>> He estado mirando en System.Cryptographic pero no se con que algoritmo


se
>> cifra una contraseña de forma sencilla, además no se que información
>> necesito guardar para que luego pueda hacer el descifrado (Vector de
>> Inicialización, Salt, etc...) y/o si debería cifrar tb esa información.
>>
>> Bueno espero que se me haya entendido algo de lo que expongo.
>>
>> Un saludo a todos y gracias por adelantado.
>>
>>

Respuesta Responder a este mensaje
#8 Michael Giagnocavo [MVP]
16/01/2004 - 17:08 | Informe spam
El problema con eso es que no puedes desencriptar (para pasar la contrasena
a otra aplicacion, lo cual tengo entendido es lo que quiere hacer Kasiyas).

Para hacer encriptacion symmetrica, debes leer esto de Ivan Medvedev:
http://www.dotnetthis.com/Articles/Crypto.htm

-mike
MVP

"christian strevel" wrote in message
news:OYx53H%
using System.Web.Security;

// encriptamos con SHA1
encryptedPassword > FormsAuthentication.HashPasswordForStoringInConfigFile(plainPassword,
"SHA1");

// encriptamos con MD5
encryptedPassword > FormsAuthentication.HashPasswordForStoringInConfigFile(plainPassword,
"MD5");

Con esto te evitas todo el show de encriptar con streams etc etc

christian strevel
http://www.chris-strevel.com



"kasiyas" wrote in message
news:
> Muchas gracias por tu ayuda, lo que pasa es que la DPAPI sólo me


funciona
en
> Windows 2000,XP y posteriores, y necesito que me funcione también en Win
98
> y ME. Si lo único que necesito es cifrar un texto (en este caso una
> contraseña) para poder asi guardarla en un archivo de texto (el .config


de
> la aplicación) sin que esté expuesta a todo el mundo.
>
> Un saludo y gracias.
>
>
> Michael Giagnocavo [MVP] wrote:
>
> > Lo que hace Windows es usar algo llamado el Data Protection API. El
DPAPI
> > puede ser utilizado para que solo el usuario actual pueda
> > encriptar/desencriptar. Si alguien reseta su contrasena (no


cambiarlo,
> > pero hacer un reset), los datos seran borrados (lo cual es bueno).
> >
> > Basicamente, llamas a CryptProtectData, y te devuelve un string.


Llamas
a
> > CryptUnprotectData, y te regresa tus bytes originales. Para obtener


los
> > bytes, usa System.Text.Encoding.UTF8.GetBytes().
> >
> > En este articulo de MSDN, se describa como hacer una clase in .NET


para
> > encapsular al DPAPI. Debes usar el User Store, no el machine store.
> >
> > http://msdn.microsoft.com/library/e...etHT07.asp
> >
> > -mike
> > MVP
> >
> > "Kasiyas" wrote in message
> > news:
> >> Hola a todos,
> >>
> >> Alguien sabe si existe alguna forma fácil de almacenar una contraseña
> >> (cifrada por supuesto, para que nadie la pueda ver) que utilizo


durante
> >> la ejecución de un programa, en el archivo de configuración .config o
en
> >> un archivo de texto cualquiera (tambien creo que se podría en el
Registro
> >> de Windows), para que cada vez que lo ejecute no tenga que volver a
> > teclearla?
> >> Se que hay muchas aplicaciones de windows que tienen que hacer algo
> > parecido
> >> (Outlook Express, Messenger, etc...) que guardan las passwords, pero


no
> >> se como lo hacen.
> >> He estado mirando en System.Cryptographic pero no se con que


algoritmo
se
> >> cifra una contraseña de forma sencilla, además no se que información
> >> necesito guardar para que luego pueda hacer el descifrado (Vector de
> >> Inicialización, Salt, etc...) y/o si debería cifrar tb esa


información.
> >>
> >> Bueno espero que se me haya entendido algo de lo que expongo.
> >>
> >> Un saludo a todos y gracias por adelantado.
> >>
> >>
>


Respuesta Responder a este mensaje
#9 christian strevel
17/01/2004 - 21:46 | Informe spam
Segun lo que entendí, solo la quiere para guardar la contraseña del usuario
para que no la tenga que teclear ...

Yo creo que usar una encriptacion asimetrica para esto sería overkill...

"Michael Giagnocavo [MVP]" wrote in message
news:
El problema con eso es que no puedes desencriptar (para pasar la


contrasena
a otra aplicacion, lo cual tengo entendido es lo que quiere hacer


Kasiyas).

Para hacer encriptacion symmetrica, debes leer esto de Ivan Medvedev:
http://www.dotnetthis.com/Articles/Crypto.htm

-mike
MVP

"christian strevel" wrote in message
news:OYx53H%
> using System.Web.Security;
>
> // encriptamos con SHA1
> encryptedPassword > > FormsAuthentication.HashPasswordForStoringInConfigFile(plainPassword,
> "SHA1");
>
> // encriptamos con MD5
> encryptedPassword > > FormsAuthentication.HashPasswordForStoringInConfigFile(plainPassword,
> "MD5");
>
> Con esto te evitas todo el show de encriptar con streams etc etc
>
> christian strevel
> http://www.chris-strevel.com
>
>
>
> "kasiyas" wrote in message
> news:
> > Muchas gracias por tu ayuda, lo que pasa es que la DPAPI sólo me
funciona
> en
> > Windows 2000,XP y posteriores, y necesito que me funcione también en


Win
> 98
> > y ME. Si lo único que necesito es cifrar un texto (en este caso una
> > contraseña) para poder asi guardarla en un archivo de texto (el


.config
de
> > la aplicación) sin que esté expuesta a todo el mundo.
> >
> > Un saludo y gracias.
> >
> >
> > Michael Giagnocavo [MVP] wrote:
> >
> > > Lo que hace Windows es usar algo llamado el Data Protection API. El
> DPAPI
> > > puede ser utilizado para que solo el usuario actual pueda
> > > encriptar/desencriptar. Si alguien reseta su contrasena (no
cambiarlo,
> > > pero hacer un reset), los datos seran borrados (lo cual es bueno).
> > >
> > > Basicamente, llamas a CryptProtectData, y te devuelve un string.
Llamas
> a
> > > CryptUnprotectData, y te regresa tus bytes originales. Para obtener
los
> > > bytes, usa System.Text.Encoding.UTF8.GetBytes().
> > >
> > > En este articulo de MSDN, se describa como hacer una clase in .NET
para
> > > encapsular al DPAPI. Debes usar el User Store, no el machine store.
> > >
> > > http://msdn.microsoft.com/library/e...etHT07.asp
> > >
> > > -mike
> > > MVP
> > >
> > > "Kasiyas" wrote in message
> > > news:
> > >> Hola a todos,
> > >>
> > >> Alguien sabe si existe alguna forma fácil de almacenar una


contraseña
> > >> (cifrada por supuesto, para que nadie la pueda ver) que utilizo
durante
> > >> la ejecución de un programa, en el archivo de configuración .config


o
> en
> > >> un archivo de texto cualquiera (tambien creo que se podría en el
> Registro
> > >> de Windows), para que cada vez que lo ejecute no tenga que volver a
> > > teclearla?
> > >> Se que hay muchas aplicaciones de windows que tienen que hacer algo
> > > parecido
> > >> (Outlook Express, Messenger, etc...) que guardan las passwords,


pero
no
> > >> se como lo hacen.
> > >> He estado mirando en System.Cryptographic pero no se con que
algoritmo
> se
> > >> cifra una contraseña de forma sencilla, además no se que


información
> > >> necesito guardar para que luego pueda hacer el descifrado (Vector


de
> > >> Inicialización, Salt, etc...) y/o si debería cifrar tb esa
información.
> > >>
> > >> Bueno espero que se me haya entendido algo de lo que expongo.
> > >>
> > >> Un saludo a todos y gracias por adelantado.
> > >>
> > >>
> >
>
>

Respuesta Responder a este mensaje
#10 Kasiyas
18/01/2004 - 20:45 | Informe spam
Gracias por tu ayuda Michael, creo que esto último que me mandas va a ser la
solución. Porque la de la DAPI probablemente seria la mejor pero no me
funciona para win me y prefiero que la aplicación me valga para varios SSOO.
Y en cuanto a lo de la huella digital (con SHA o MD5) que decian por ahi
queda descartado ya que eso no es reversible y a ver como recupero la
contraseña!
Muchas gracias por vuestro tiempo.

Salu2.

"Michael Giagnocavo [MVP]" escribió en el mensaje
news:
El problema con eso es que no puedes desencriptar (para pasar la


contrasena
a otra aplicacion, lo cual tengo entendido es lo que quiere hacer


Kasiyas).

Para hacer encriptacion symmetrica, debes leer esto de Ivan Medvedev:
http://www.dotnetthis.com/Articles/Crypto.htm

-mike
MVP

"christian strevel" wrote in message
news:OYx53H%
> using System.Web.Security;
>
> // encriptamos con SHA1
> encryptedPassword > > FormsAuthentication.HashPasswordForStoringInConfigFile(plainPassword,
> "SHA1");
>
> // encriptamos con MD5
> encryptedPassword > > FormsAuthentication.HashPasswordForStoringInConfigFile(plainPassword,
> "MD5");
>
> Con esto te evitas todo el show de encriptar con streams etc etc
>
> christian strevel
> http://www.chris-strevel.com
>
>
>
> "kasiyas" wrote in message
> news:
> > Muchas gracias por tu ayuda, lo que pasa es que la DPAPI sólo me
funciona
> en
> > Windows 2000,XP y posteriores, y necesito que me funcione también en


Win
> 98
> > y ME. Si lo único que necesito es cifrar un texto (en este caso una
> > contraseña) para poder asi guardarla en un archivo de texto (el


.config
de
> > la aplicación) sin que esté expuesta a todo el mundo.
> >
> > Un saludo y gracias.
> >
> >
> > Michael Giagnocavo [MVP] wrote:
> >
> > > Lo que hace Windows es usar algo llamado el Data Protection API. El
> DPAPI
> > > puede ser utilizado para que solo el usuario actual pueda
> > > encriptar/desencriptar. Si alguien reseta su contrasena (no
cambiarlo,
> > > pero hacer un reset), los datos seran borrados (lo cual es bueno).
> > >
> > > Basicamente, llamas a CryptProtectData, y te devuelve un string.
Llamas
> a
> > > CryptUnprotectData, y te regresa tus bytes originales. Para obtener
los
> > > bytes, usa System.Text.Encoding.UTF8.GetBytes().
> > >
> > > En este articulo de MSDN, se describa como hacer una clase in .NET
para
> > > encapsular al DPAPI. Debes usar el User Store, no el machine store.
> > >
> > > http://msdn.microsoft.com/library/e...etHT07.asp
> > >
> > > -mike
> > > MVP
> > >
> > > "Kasiyas" wrote in message
> > > news:
> > >> Hola a todos,
> > >>
> > >> Alguien sabe si existe alguna forma fácil de almacenar una


contraseña
> > >> (cifrada por supuesto, para que nadie la pueda ver) que utilizo
durante
> > >> la ejecución de un programa, en el archivo de configuración .config


o
> en
> > >> un archivo de texto cualquiera (tambien creo que se podría en el
> Registro
> > >> de Windows), para que cada vez que lo ejecute no tenga que volver a
> > > teclearla?
> > >> Se que hay muchas aplicaciones de windows que tienen que hacer algo
> > > parecido
> > >> (Outlook Express, Messenger, etc...) que guardan las passwords,


pero
no
> > >> se como lo hacen.
> > >> He estado mirando en System.Cryptographic pero no se con que
algoritmo
> se
> > >> cifra una contraseña de forma sencilla, además no se que


información
> > >> necesito guardar para que luego pueda hacer el descifrado (Vector


de
> > >> Inicialización, Salt, etc...) y/o si debería cifrar tb esa
información.
> > >>
> > >> Bueno espero que se me haya entendido algo de lo que expongo.
> > >>
> > >> Un saludo a todos y gracias por adelantado.
> > >>
> > >>
> >
>
>

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida