コード例 #1
0
        /// <summary>
        /// Metodo encargado de firmar la cadena original en formato UTF8 con algoritmo de digestion SHA256
        /// </summary>
        /// <param name="cadenaUTF8"></param>
        /// <param name="rutaArchivoKey"></param>
        /// <param name="contraseñaKey"></param>
        /// <returns></returns>
        public static string FirmaCadenaSHA256(byte[] cadenaUTF8, string rutaArchivoKey, string contraseñaKey)
        {
            //Inicialziando variable de retorno
            string sello = "";

            //Convertimos el archivo contraseña a un arreglo de bytes
            byte[] bytesCertificado = System.IO.File.ReadAllBytes(rutaArchivoKey);

            //Obtenemos la contraseña en tipo SecureString
            SecureString contraseña = Cadena.CadenaSegura(contraseñaKey);

            //Obtenemos un proveedor de RSA se leen los valores del archivo certificado y se inicializa el proveedor RSA
            RSACryptoServiceProvider RSA = CertificadosOpenSSLKey.DecodeEncryptedPrivateKeyInfo(bytesCertificado, contraseña);

            //Si fue posible realizar apertura
            if (RSA != null)
            {
                //Instanciamos un objeto hash MD5
                SHA256CryptoServiceProvider SHA256 = new SHA256CryptoServiceProvider();

                //Firmamos los datos
                byte[] datosFirmados = RSA.SignData(cadenaUTF8, SHA256);

                //Convertimos los datos a caracteres imprimibles
                sello = Convert.ToBase64String(datosFirmados);
            }

            //Devolviendo el resultado de la firma
            return(sello);
        }
コード例 #2
0
        /// <summary>
        /// Metodo encargado de firmar la cadena original en formato UTF8 con algoritmo de digestion MD5
        /// </summary>
        /// <param name="cadenaMD5">Cadena en formato UTF8 que será firmada</param>
        /// <param name="rutaArchivoKey">Ruta física de almacenamiento de la llave privada</param>
        /// <param name="contraseñaKey">Contraseña para abrir la llave privada</param>
        public static string FirmaCadenaMD5(byte[] cadenaUTF8, string rutaArchivoKey, string contraseñaKey)
        {
            //Declarando variable de retorno
            string sello = "";

            //Obtenemos la contraseña en tipo SecureString
            SecureString contraseña = Cadena.CadenaSegura(contraseñaKey);

            //Convertimos el archivo contraseña a un arreglo de bytes
            byte[] archivoKeyBytes = System.IO.File.ReadAllBytes(rutaArchivoKey);

            //Obtenemos un proveedor de RSA se leen los valores del archivo certificado y se inicializa el proveedor RSA
            RSACryptoServiceProvider RSA = CertificadosOpenSSLKey.DecodeEncryptedPrivateKeyInfo(archivoKeyBytes, contraseña);

            //Instanciamos un objeto hash MD5
            MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();

            //Firmamos los datos
            byte[] datosFirmados = RSA.SignData(cadenaUTF8, MD5);

            //Convertimos los datos a caracteres imprimibles
            sello = Convert.ToBase64String(datosFirmados);

            //Devolvinedo resultado
            return(sello);
        }
コード例 #3
0
        /// <summary>
        /// Metodo encargado de firmar la cadena original en formato UTF8 con algoritmo de digestion SHA256
        /// </summary>
        /// <param name="cadenaUTF8"></param>
        /// <param name="bytesCertificado"></param>
        /// <param name="contraseñaKey"></param>
        /// <returns></returns>
        public static string FirmaCadenaSHA256(byte[] cadenaUTF8, byte[] bytesCertificado, string contraseñaKey)
        {
            //Inicialziando variable de retorno
            string sello = "";

            byte[] datosFirmados = null;

            //Obtenemos la contraseña en tipo SecureString
            SecureString  contraseña = Cadena.CadenaSegura(contraseñaKey);
            SHA256Managed sham       = new SHA256Managed();

            //Obtenemos un proveedor de RSA se leen los valores del archivo certificado y se inicializa el proveedor RSA
            RSACryptoServiceProvider RSA = CertificadosOpenSSLKey.DecodeEncryptedPrivateKeyInfo(bytesCertificado, contraseña);

            //Si fue posible realizar apertura
            if (RSA != null)
            {
                try
                {
                    //Firmando Cadena
                    datosFirmados = RSA.SignData(cadenaUTF8, sham);
                    //Convirtiendo Valor en Cadena
                    sello = Convert.ToBase64String(datosFirmados);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                ////Instanciamos un objeto hash MD5
                //SHA256CryptoServiceProvider SHA256 = new SHA256CryptoServiceProvider();
                ////Firmamos los datos
                //byte[] datosFirmados = RSA.SignData(cadenaUTF8, SHA256);
                ////Convertimos los datos a caracteres imprimibles
                //sello = Convert.ToBase64String(datosFirmados);

                /** Firmando con SHA256 **/
                //SHA256Managed sha = new SHA256Managed();
                //byte[] digest = sha.ComputeHash(cadenaUTF8);
                //RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(RSA);
                //RSAFormatter.SetHashAlgorithm("SHA256");
                //byte[] SignedHashValue = RSAFormatter.CreateSignature(digest);
                //sello = Convert.ToBase64String(SignedHashValue);
            }

            //Devolviendo el resultado de la firma
            return(sello);
        }