public bool VerificarSelloComprobante(string cadenaOriginal, string sello, HashAlgorithm algoritmo) { byte[] digest = Hash.BytesFromBytes(Encoding.UTF8.GetBytes(cadenaOriginal), algoritmo); StringBuilder llavePublica = Rsa.GetPublicKeyFromCert(Convert.ToBase64String(Convert.FromBase64String(_Base64))); if (llavePublica.Length == 0) { return(false); } byte[] sellado = System.Convert.FromBase64String(sello); if (sellado.Length != Rsa.KeyBytes(llavePublica.ToString())) { return(false); } sellado = Rsa.RawPublic(sellado, llavePublica.ToString()); if (sellado.Length == 0) { return(false); } sellado = Rsa.DecodeDigestForSignature(sellado); if (sellado.Length == 0) { return(false); } return(String.Compare(Cnv.ToHex(sellado), Cnv.ToHex(digest), true) == 0); }