Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03

Generar SHA256 en C#

Y para empezar Que es una Factura Electronica? Como empiezo? Necesito Autorizacion? Que medios hay para Facturar Electronicamente? estos y todos los temas de iniciacion deberan estar aqui
gerloxxx
Mensajes: 35
Registrado: Sab Feb 12, 2011 10:32 am

Generar SHA256 en C#

Mensajepor gerloxxx » Vie Jul 28, 2017 5:24 pm

Hola a todos, estoy intentando usar la clase SHA256CryptoServiceProvider para generar el SHA256:


System.Security.Cryptography.SHA256CryptoServiceProvider hasher = new System.Security.Cryptography.SHA256CryptoServiceProvider();

pero me marca el siguiente error:


Error 4 El tipo o el nombre del espacio de nombres 'SHA256CryptoServiceProvider' no existe en el espacio de nombres 'System.Security.Cryptography' (¿falta una referencia de ensamblado?)


alguna sugerencia?? uso VS2012

Saludos

RicJaver
Mensajes: 4
Registrado: Vie Jun 16, 2017 10:46 am

Re: Generar SHA256 en C#

Mensajepor RicJaver » Vie Jul 28, 2017 9:17 pm

Buenas noches.

Te recomiendo la siguiente liga:

https://www.codeproject.com/Tips/703567 ... private-ke

Para generar el sello como Sha256, solo cambiar new SHA1CryptoServiceProvider()); por
new SHA256CryptoServiceProvider());

Espero te sea de utilidad.

gerloxxx
Mensajes: 35
Registrado: Sab Feb 12, 2011 10:32 am

Re: Generar SHA256 en C#

Mensajepor gerloxxx » Sab Jul 29, 2017 9:07 am

Gracias por responder, ya uso la clase opensslkey y en el cambio que comentas es donde me marca el error:
antes:
System.Security.Cryptography.SHA1CryptoServiceProvider hasher = new System.Security.Cryptography.SHA1CryptoServiceProvider();
ahora:
System.Security.Cryptography.SHA256CryptoServiceProvider hasher = new System.Security.Cryptography.SHA256CryptoServiceProvider();

pero no entiendo porque no reconoce SHA256CryptoServiceProvider, ya lei la documentacion y algunos ejemplo que encontre que lo usan.

saludos

gerloxxx
Mensajes: 35
Registrado: Sab Feb 12, 2011 10:32 am

Re: Generar SHA256 en C#

Mensajepor gerloxxx » Sab Jul 29, 2017 9:21 am

ahorita me acabo de encontrar esto:

byte[] bytesFirmados = rsa.SignData(System.Text.Encoding.UTF8.GetBytes(strCadenaOriginal), System.Security.Cryptography.CryptoConfig.MapNameToOID("SHA256"));

donde:
System.Security.Cryptography.CryptoConfig.MapNameToOID("SHA256"));
en lugar de:
System.Security.Cryptography.SHA256CryptoServiceProvider hasher = new System.Security.Cryptography.SHA256CryptoServiceProvider();

espero me sirva

RicJaver
Mensajes: 4
Registrado: Vie Jun 16, 2017 10:46 am

Re: Generar SHA256 en C#

Mensajepor RicJaver » Sab Jul 29, 2017 10:09 am

Buenos días.

Pues si, en la función SignString que en en el artículo de CodeProject es:

public string SignString(string pKeyFile,string pPassword,string OriginalString)
{
string SignedString = "";
string filename = pKeyFile;
if (!File.Exists(filename))
{
return ".key file does not exist " + pKeyFile;
}

RSACryptoServiceProvider rsa=OpenKeyFile(filename, pPassword);
if (rsa != null)
{
byte[] CO=Encoding.UTF8.GetBytes(OriginalString);
byte[] SignedBytes=rsa.SignData(CO, new SHA1CryptoServiceProvider());
SignedString = Convert.ToBase64String(SignedBytes);
}
return SignedString;
}

Simplemente cambiar byte[] SignedBytes=rsa.SignData(CO, new SHA1CryptoServiceProvider()); por
byte[] SignedBytes=rsa.SignData(CO, new SHA256CryptoServiceProvider());
que entiendo que es lo que estas haciendo, asi que seguro funciona.

Saludos y suerte.

gerloxxx
Mensajes: 35
Registrado: Sab Feb 12, 2011 10:32 am

Re: Generar SHA256 en C#

Mensajepor gerloxxx » Sab Jul 29, 2017 11:01 am

gracias por responder, creo que no me han entendido.... mi compilador dice que esto: "SHA256CryptoServiceProvider()" no existe :( (System.Security.Cryptography)

RicJaver
Mensajes: 4
Registrado: Vie Jun 16, 2017 10:46 am

Re: Generar SHA256 en C#

Mensajepor RicJaver » Sab Jul 29, 2017 11:40 am

Tienes razón, no entendía el problema.

En el hilo: viewtopic.php?t=6699



robsgax
Mensajes: 1
Registrado: Lun Abr 10, 2017 8:18 pm
Re: Como crear el Sello con SHA256 en VBNET o C#
Mensajepor robsgax » Lun Abr 10, 2017 8:24 pm

este es el que uso yo, el del SHA256CryptoServiceProvider no funciona en librerias .net por un bug

CÓDIGO: SELECCIONAR TODO
Dim privateCert As New X509Certificate2(archivoPFX, clavePFX, X509KeyStorageFlags.Exportable)
Dim privateKey As RSACryptoServiceProvider = DirectCast(cert.PrivateKey, RSACryptoServiceProvider)
Dim privateKey1 As New RSACryptoServiceProvider()
privateKey1.ImportParameters(privateKey.ExportParameters(True))

Dim signature As Byte() = privateKey1.SignData(stringCadenaOriginal, "SHA256")

dim sello256 as string = Convert.ToBase64String(signature)

para verificar el sello
Dim isValid As Boolean = privateKey1.VerifyData(stringCadenaOriginal, "SHA256", signature)

Entonces, el usuario robsgax señala "el del SHA256CryptoServiceProvider no funciona en librerias .net por un bug", pero da la solución.

Como comentario, yo uso VS Community 2017, y no tengo ningún problema.

Saludos.

gerloxxx
Mensajes: 35
Registrado: Sab Feb 12, 2011 10:32 am

Re: Generar SHA256 en C#

Mensajepor gerloxxx » Sab Jul 29, 2017 11:46 am

gracias, como comentario, estoy probando MapNameToOID("SHA256") en lugar de SHA256CryptoServiceProvider, el validador ValidaCfd de este foro me lo marca como correcto aunque aun no he timbrado

saludos

jivra
Mensajes: 1
Registrado: Mar Ago 22, 2017 10:33 pm

Re: Generar SHA256 en C#

Mensajepor jivra » Mar Ago 22, 2017 10:38 pm

Agradezco a:
RicJaver » Sab Jul 29, 2017 12:40 pm
y
robsgax » Lun Abr 10, 2017 8:24 pm

Aquí dejo esta rutina, la cual ya me devuelve un sello valido:

Código: Seleccionar todo

Public Function GeneraSelloDigitalSHA256(ByVal ArchivoP12 As String, ByVal LlavePrivada As String, ByVal CadenaOriginal As String) As String

        Dim privateCert As New X509Certificate2(ArchivoP12, LlavePrivada, X509KeyStorageFlags.Exportable)

        Dim privateKey As RSACryptoServiceProvider = DirectCast(privateCert.PrivateKey, RSACryptoServiceProvider)
        Dim privateKey1 As New RSACryptoServiceProvider()
        privateKey1.ImportParameters(privateKey.ExportParameters(True))

        Dim signature As Byte() = privateKey1.SignData(System.Text.Encoding.UTF8.GetBytes(CadenaOriginal), "SHA256")

        Dim sello256 As String = Convert.ToBase64String(signature)
        MsgBox("Sello: " & sello256)

        Dim isValid As Boolean = privateKey1.VerifyData(System.Text.Encoding.UTF8.GetBytes(CadenaOriginal), "SHA256", signature)
        MsgBox("Validacion: " & isValid)

        Return sello256

    End Function

carlosph85
Mensajes: 1
Registrado: Lun Nov 27, 2017 3:34 pm

Re: Generar SHA256 en C#

Mensajepor carlosph85 » Lun Nov 27, 2017 4:55 pm

gerloxxx escribió:ahorita me acabo de encontrar esto:

byte[] bytesFirmados = rsa.SignData(System.Text.Encoding.UTF8.GetBytes(strCadenaOriginal), System.Security.Cryptography.CryptoConfig.MapNameToOID("SHA256"));

donde:
System.Security.Cryptography.CryptoConfig.MapNameToOID("SHA256"));
en lugar de:
System.Security.Cryptography.SHA256CryptoServiceProvider hasher = new System.Security.Cryptography.SHA256CryptoServiceProvider();

espero me sirva


Hola Buenas tardes, lograste resolver este tema? Yo lo estoy haciendo sobre vb.net, si me funciona el SHA256CryptoServiceProvider sin embargo el sello que genera la validación me lo marca como incorrecto, no lo logro timbrar


Volver a “Iniciando con la Factura Electronica”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados