Encriptar / Desencriptar y un error constante en Base 64

3,284 views
Skip to first unread message

Luis Alberto Turbi Mella

unread,
Jul 29, 2013, 3:04:55 PM7/29/13
to csharp...@googlegroups.com
Hola, les cuento que terminado mi maestro de usuarios, busco una rutina para encriptar la clave de los usuarios del sistema.
 
Despues de descargar y probar tres ruitnas diferentes desde internet, a la hora de desencriptar la clave, todas me arrojan el mismo error:
 
Llongitud no valida para una matriz de caracteres base 64,  me he pasado todo el fin de semana, y no encuentro como validar o manipular la cadena.
 
Tengo SQL 2008 y el campo de la clave probe con Varchar(50) y nVarChar(50) a ver si habia alguna diferencia, pero sigo en la misma.
 
Alguna idea como corregir esto.
 
Luis Alberto Turbi
Rep. Dominicana

IBÁÑEZ P. José R.

unread,
Jul 29, 2013, 7:31:27 PM7/29/13
to csharp...@googlegroups.com
Que rutinas haz utilizado? Para hacer la encripción de los passwords?


--
Has recibido este mensaje porque estás suscrito al grupo "C#.NET Latinoamérica" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/csharplatino.
 
 



--
IBÁÑEZ P. José R.

Luis Alberto Turbi Mella

unread,
Jul 30, 2013, 9:25:20 AM7/30/13
to csharp...@googlegroups.com

El lunes, 29 de julio de 2013 15:04:55 UTC-4, Luis Alberto Turbi Mella escribió:
 
Te comento que tres pares de rutinas muy distintas, desde una que usa TripleDES hasta otras muy sencilla. de autores diferentes.
 

Dos usan el metodo Convert.FromBase64String y la otra usa Encoding.UTF8,

Te copio la mas simple y corta:
 
 
 public static string DesEncriptar2(string _cadenaAdesencriptar)
         {           
             try
             {
                 string result = string.Empty;
                 byte[] decryted = Convert.FromBase64String(_cadenaAdesencriptar);
                //  result = System.Text.Encoding.Unicode.GetString(decryted, 0, decryted.ToArray().Length);
                 result = System.Text.Encoding.Unicode.GetString(decryted);
                 return result;
             }
             catch (Exception ex)
             {
                 ExceptionLog.LogError(ex, true);
                 return "";
             }
             finally
             {
                 // codigo de limpieza Cleanup
             }
             return "";

Analyzer

unread,
Jul 30, 2013, 12:17:29 PM7/30/13
to csharp...@googlegroups.com
No sé de eso de encriptar.. Pero un amigo que realizó una maestría en eso me dijo una vez algo que al final todo archivo puede convertirse a binario, por lo que a veces se puede usar algo de pasarlo a binario y de ahi a lo que sea..


Saludos!


El 29 de julio de 2013 14:04, Luis Alberto Turbi Mella <vbsco...@gmail.com> escribió:

--

IBÁÑEZ P. José R.

unread,
Jul 30, 2013, 12:38:09 PM7/30/13
to csharp...@googlegroups.com
Hola si usas MSSQL Serva' puedes usar las funciones para calculo de bytes con SHA y SHA1

SELECT HashBytes('SHA','sqleros.com.ar')
SELECT HashBytes('SHA1','sqleros.com.ar')

SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA', 'sqleros.com.ar')), 3, 40) AS SHA
SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('SHA1', 'sqleros.com.ar')), 3, 40) AS SHA1


Luis Alberto Turbi Mella

unread,
Jul 30, 2013, 3:54:55 PM7/30/13
to csharp...@googlegroups.com
Tal parece que el problema esta cuando recupero la informacion del campo password de la base de datos.
 
lo tengo declarado Varchar(50).
 
Pues si llamo las funciones desde un formulario, pasando una cadena cualqueiera en un TextBox, devuelva la cadena encriptada y/o desencriptada sin problemas.
 
Habra que hacer alguna conversion de la cadena que devuelve el campo.

IBÁÑEZ P. José R.

unread,
Jul 30, 2013, 12:40:09 PM7/30/13
to csharp...@googlegroups.com
Acá esta una página sobre la implementación del SHA1 y el TripleDES...


Espero te sirvan y nos cuentes cómo te fue... :D

Luis Alberto Turbi Mella

unread,
Aug 1, 2013, 12:21:12 PM8/1/13
to csharp...@googlegroups.com
Resuelto...

IBÁÑEZ P. José R.

unread,
Aug 1, 2013, 12:22:52 PM8/1/13
to csharp...@googlegroups.com
S
i gustas podrías compartir la solución con la comunidad, Luis.


Resuelto...
--
Has recibido este mensaje porque estás suscrito al grupo "C#.NET Latinoamérica" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/csharplatino.
 
 

Luis Alberto Turbi Mella

unread,
Aug 19, 2013, 9:15:29 AM8/19/13
to csharp...@googlegroups.com
Saludos:
 
 
Perdona Jose, no habia visto este mensaje.
 
En verdad, jejeje, no habia ningun error mas que un detalle en la logica, tenia en el store procedure en MS SQL el parametro @clave como Varchar(15) y las cadenas excedian esta longitud, solo grababa los 15 primeros caracteres.
 
  Da pena decir esto, jajaja, pero son cosas que le pasan a uno en la prisa del trabajo.
 
Cordialmente, 
Reply all
Reply to author
Forward
0 new messages