Misterio: 4 Bytes deberían representar una Fecha, pero ¿cómo?

Así que pude leer algunos valores no seguros de una tarjeta inteligente alemana oficial. Funciona bien para Números y Cadenas, pero no puedo entender cómo interpretar Fechas.

La fecha que quiero leer se especifica como Fecha de 4 bytes como se ve en la especificación: http://imgur.com/3jU8k

Los cuatro bytes que leo son:

0x4f 0x41 0x8d 0x00 (hex)
0100 1111 0100 0001 1000 1101 0000 0000 (binary)

y debe representar esta fecha: 20.02.2012 binario:

20 - 0001 0100
02 - 0000 0010
2012 - 0111 1101 1100

Otro:

0x58 0xAA 0x31 0x7f (hex)
0101 1000 1010 1010 0011 0001 0111 1111 (binary)

debe representar: 19.02.2017

19 - 0001 0011
02 - 0010
2017 - 0111 1110 0001

Por favor, ayúdame a resolver este acertijo de codificación


Los datos de la tarjeta pueden ser leídos por un software comercial, así que supongo que los datos sin procesar que obtengo se pueden utilizar de cualquier manera.

Para los interesados: el proveedor tiene una especificación muy amplia que he buscado varias veces (http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32002R1360:DE:NO Disponible en múltiples Idiomas) La estructura de la tarjeta se menciona por primera vez en la página 119

preguntado el 22 de mayo de 12 a las 17:05

1 Respuestas

La especificación vinculada dice que cardIssueDate es de tipo TimeReal (Sección 2.20.). La misma especificación define TimeReal como el número de segundos desde 1970-01-01 00:00:00 GMT (es decir Hora UNIX) codificado como ASN.1 ENTERO (Sección 2.110.).

contestado el 22 de mayo de 12 a las 17:05

:( tienes razón. Incluso pensé en eso pero cometí un error al verificarlo. ¡Muchas gracias! - Rretzbach

Que está usando Big Endian / MSB a la izquierda, no olvide verificar que está usando Big Endian independientemente de la plataforma. - Maarten Bodewes

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.