Ver Mensaje Individual
  #308 (permalink)  
Antiguo 12/01/2011, 09:34
jonasjimenez
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Respuesta: Sello Digital

Hola amigo, acabo de empezar a realizar los pasos, pero ya llego hasta generar el Sello pero es distinto al tuyo, estoy trabajando en Net con C#. te agradeceria mucho que me apoyaras. te adjunto el Codigo:

1.- Convierto a UTF8

File.WriteAllText(@"C:\Cadena.txt", txtCadenaSAT.Text.Trim(), Encoding.UTF8);

2- Aplico MD5

MD5 Codificador = MD5.Create();

StringBuilder CadenaMD5 = new StringBuilder();
byte[] ByteCadenaMD5 = null;
StreamReader txt = File.OpenText(@"C:\Cadena.txt");
CadenaMD5.Append(txt.ReadToEnd());
txt.Close();

ByteCadenaMD5 = Codificador.ComputeHash(Encoding.UTF8.GetBytes(Cad enaMD5.ToString()));

CadenaMD5.Clear();

for (int i = 0; i < ByteCadenaMD5.Length; i++)
{
CadenaMD5.Append(ByteCadenaMD5[i].ToString("x2"));
}

txtCadenaSAT.Text = string.Empty;
txtCadenaSAT.Text = CadenaMD5.ToString();

3.- Obtengo Sello

Chilkat.PrivateKey llave = new PrivateKey();
Chilkat.Rsa AlgoritmoRSA = new Rsa();
Chilkat.Cert certificado = new Cert();
StringBuilder DetalleCertificado = new StringBuilder("Detalle del certificado: \n\n");
try
{
//Leemos la Ruta del Certificado .CER
certificado.LoadFromFile(fileCertificado.FullName) ;

//Detalle
DetalleCertificado.AppendLine("Persona = " + certificado.SubjectC);
DetalleCertificado.AppendLine("Emisor = " + certificado.IssuerO);
DetalleCertificado.AppendLine("Válido desde = " + certificado.ValidFrom.ToString());
DetalleCertificado.AppendLine("Válido hasta = " + certificado.ValidTo.ToString());
DetalleCertificado.AppendLine("Número de serie = " + certificado.SerialNumber);
DetalleCertificado.AppendLine("Hash = " + certificado.Sha1Thumbprint);

MessageBox.Show(DetalleCertificado.ToString());
//Cargamos la Ruta del Key .KEY y Password
llave.LoadPkcs8EncryptedFile(fileKey.FullName, "a0123456789"); //Pasamos la FIEL y la Contraseña

string KeyPEM = llave.GetXml();

AlgoritmoRSA.ImportPrivateKey(KeyPEM); //Generamos el KEY.PEM

AlgoritmoRSA.LittleEndian = true;
AlgoritmoRSA.Charset = "UTF-8";
AlgoritmoRSA.EncodingMode = "base64";

AlgoritmoRSA.UnlockComponent("RSAT34MB34N_7F1CD986 683M");

string SelloDigital = AlgoritmoRSA.SignStringENC(txtCadenaSAT.Text.Trim( ), "md5");

MessageBox.Show("Sello Digital: \r\n" +SelloDigital);


En este paso si te das cuenta utilizo el componente Chilkat para realizar esto.

Mi pregunta es, debe generarme el mismo sello que tu tienes??

Saludos. amigo