12/01/2011, 09:34
|
| | Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 11 meses Puntos: 0 | |
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 |