Si key_text tiene más de 64 caracteres, entonces HMacSha256 calcula incorrectamente. ¿Qué hay que corregir para esto?
Mi implementación actual se adapta a claves con más de 64 caracteres de longitud. Tiene algún par clave-mensaje específico para el que no funcione?
string texto = "Hola";
string clave_texto = "1234567890123456789012345678901234567890123456789012345678901234";
https://www.devglan.com/online-tools/hmac-sha256-online -> 7558a77ff19ed6cb4777355e4bbc4772759a8130e1bb0913ba62b88411fdbaf8
Script de prueba -> 2025.02.27 22:28:43.792 Sha256TestFile (EURUSD,M5) 6d8ee9dc1d16261fd986fafb97d919584aa206ca76706fb3deccc63ab2b7f6b
- DevGlan
- www.devglan.com
cadena texto = "Hola";
cadena clave_texto = "1234567890123456789012345678901234567890123456789012345678901234";
https://www.devglan.com/online-tools/hmac-sha256-online -> 7558a77ff19ed6cb4777355e4bbc4772759a8130e1bb0913ba62b88411fdbaf8
Script de prueba -> 2025.02.27 22:28:43.792 Sha256TestFile (EURUSD,M5) 6d8ee9dc1d16261fd986fafb97d919584aa206ca76706fb3deccc63ab2b7f6b
Acabo de probarlo en mi terminal y me da lo mismo que la herramienta de hash online:
2025.02.28 12:37:16.468 hashin_example_code (EURUSD,M5) 7558A77FF19ED6CB4777355E4BBC4772759A8130E1BB0913BA62B88411FDBAF8
void Hash() { // El texto a hash string text = "Hello"; string key_text = "1234567890123456789012345678901234567890123456789012345678901234"; HMacSha256 myhash(key_text, text); Print(myhash.hexval); }Si lo desea, puede compartir su código.
Sí, funciona correctamente con el Sha256Algorithm.mqh original. Hice algunos cambios, ¿quizás por eso no funcionaba?
string CSha256Class::GetHex( void ) { string result = "" ; /* resultado += UintToHex(h0); resultado += UintToHex(h1); resultado += UintToHex(h2); resultado += UintToHex(h3); resultado += UintToHex(h4); resultado += UintToHex(h5); resultado += UintToHex(h6); resultado += UintToHex(h7); */ result += StringFormat ( "%.2x" ,h0); result += StringFormat ( "%.2x" ,h1); result += StringFormat ( "%.2x" ,h2); result += StringFormat ( "%.2x" ,h3); result += StringFormat ( "%.2x" ,h4); result += StringFormat ( "%.2x" ,h5); result += StringFormat ( "%.2x" ,h6); result += StringFormat ( "%.2x" ,h7); return (result); }
¡Perdón por la molestia!
- www.mql5.com
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Implementación del algoritmo criptográfico SHA-256 desde cero en MQL5:
Al implementar SHA-256 en un entorno comercial, la optimización del rendimiento se vuelve crucial, ya que cada milisegundo puede afectar los resultados comerciales. Una implementación personalizada ofrece varias vías de optimización que no serían posibles con las funciones integradas.
Los sistemas de comercio a menudo exhiben patrones específicos en sus operaciones criptográficas.m Por ejemplo, las firmas de pedidos suelen contener componentes similares, como marcas de tiempo, símbolos y cantidades. Al comprender estos patrones, podemos optimizar nuestra implementación de SHA-256 específicamente para estructuras de datos relacionadas con el comercio.
Considere cómo funciona la colocación de órdenes en un escenario comercial típico. Cada orden requiere varios datos: el par comercial, el tipo de orden, la cantidad, el precio y la marca de tiempo. En implementaciones estándar, estos datos se procesarían como una entrada completamente nueva cada vez. Sin embargo, podemos optimizar este proceso reconociendo que muchos componentes permanecen constantes o siguen patrones predecibles.
Autor: Abdulkudus Okatengwu Kadir