Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

161
Vistas
Implementación C# Crc32

Tengo el siguiente ejemplo:

 3D020000000F0000112233445566778899AABBCCDDEEFF - Crc32 Input 280ACDA5 - Crc32 Result

Pero con las siguientes calculadoras: sunshine2k y zorc.breitbandkatze no puedo reconstruir el resultado. La documentación dice: Polynomial- 04C11DB7 , Reverse- EDB88320 , Initvalue- FFFFFFFF y también el resultado no debe invertirse.

Busqué bibliotecas en NuGet y encontré a Nito , pero tampoco obtuve el resultado correcto. También probé todas las combinaciones con banderas y polinomios ( 04C11DB7 , EDB88320 ).

¿Alguien puede decir lo que estoy haciendo mal? ¿Están mal las calculadoras y la librería? También probé la misma combinación de polinom y banderas en ambos lados y la librería, pero obtuve un resultado diferente :-( ¿alguien puede decirle a una libreta que definitivamente es correcta?

Aquí mi código de prueba:

 [Theory] [InlineData("3D 00 00 00 00 10 00 00 23 00 00 00 00 00 00 08 12 34 56 78 00 00 00 00", "7B 8A 60 0F")] [InlineData("3D020000000F0000112233445566778899AABBCCDDEEFF", "280ACDA5")] public void Crc32_Test(string input, string assumedCrc32) { var definition = new Definition { Initializer = 0xFFFFFFFF, TruncatedPolynomial = 0xEDB88320, ReverseResultBeforeFinalXor = false, ReverseDataBytes = false, }; var whow = new Nito.HashAlgorithms.CRC32(definition); var inputArray = DESFireSessionHandler.StringToByte(input); var assumedCrc32Array = DESFireSessionHandler.StringToByte(assumedCrc32); var crc32 = whow.ComputeHash(inputArray); if (crc32.SequenceEqual(assumedCrc32Array)) Assert.True(true); else if (crc32.Reverse().SequenceEqual(assumedCrc32Array)) Assert.True(true); else Assert.False(true); }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Los siguientes parámetros producen el resultado deseado 280ACDA5:

 Initializer = 0xFFFFFFFF, TruncatedPolynomial = 0x04C11DB7, FinalXorValue = 0x00000000, ReverseResultBeforeFinalXor = true, ReverseDataBytes = true

Esto es idéntico (excepto por el orden de los bytes) a las herramientas en línea:

https://crccalc.com/

ingrese la descripción de la imagen aquí

http://www.sunshine2k.de/codificación/javascript/crc/crc_js.html

ingrese la descripción de la imagen aquí


El código C# completo es:

 using System; using static Nito.HashAlgorithms.CRC32; public class Program { public static void Main() { var definition = new Definition { Initializer = 0xFFFFFFFF, TruncatedPolynomial = 0x04C11DB7, FinalXorValue = 0x00000000, ReverseResultBeforeFinalXor = true, ReverseDataBytes = true }; var inputHex = "3D020000000F0000112233445566778899AABBCCDDEEFF"; var input = Convert.FromHexString(inputHex); var whow = new Nito.HashAlgorithms.CRC32(definition); var crc32 = whow.ComputeHash(input); var crc32Hex = Convert.ToHexString(crc32); Console.WriteLine(crc32Hex); // 280ACDA5 } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda