Differenze tra le versioni di "Identificativi OpenPass"

Da Libro Bianco OpenPass.
[versione bozza][versione di qualità]
(Aggiunto testo)
 
(OpenPass UID: : aggiunto testo di spiegazione per mostrare codice Java del CRC)
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 +
__FORCETOC__
 
== OpenPass UID ==
 
== OpenPass UID ==
 
L'UID è il codice seriale identificativo del supporto RFID.
 
L'UID è il codice seriale identificativo del supporto RFID.
Riga 21: Riga 22:
 
Il risultato di tali operazioni è il CRC-OpenPass.
 
Il risultato di tali operazioni è il CRC-OpenPass.
  
Questo è il codice della funzione per il calcolo del CRC sviluppata in Java:
+
Questo è il codice della funzione per il calcolo del CRC sviluppata in Java (clicca su '''Espandi''' a lato):
 
<div class="mw-collapsible mw-collapsed">
 
<div class="mw-collapsible mw-collapsed">
 
<pre>
 
<pre>
Riga 59: Riga 60:
 
</nowiki>
 
</nowiki>
 
</pre>
 
</pre>
 +
</div>
 +
 +
== OpenPass Number ==
 +
L'OpenPass Number è un codice identificativo del biglietto ed è costituito dai seguenti campi:
 +
* Root.Group: gruppo;
 +
* Root.Workstation: cassa che emette il biglietto;
 +
* Root.SerialNumberEx2: progressivo di emissione.
 +
 +
L'OpenPass Number permette di identificare in modo univoco il biglietto, e quindi i relativi passaggi durante la stagione.
 +
 +
 +
<center>[[Il_Sistema_OpenPass|Torna a: Il Sistema OpenPass]]</center>

Versione attuale delle 10:00, 27 set 2016

OpenPass UID

L'UID è il codice seriale identificativo del supporto RFID.

ANEF SKI Lombardia ha identificato un formato univoco distinguibile dai formati utilizzati dagli attuali sistemi di accesso, in modo che sia immediatamente riconoscibile come ID del sistema OpenPass. Il formato è il seguente:

xxxx xxxx xxxx xxxx xxxx-yyy

xxxx xxxx xxxx xxxx xxxx = Chip ID in decimale, in 5 gruppi di 4 numeri separati da spazio (ASCII 0x20)

yyy = CRC-OpenPass : come qui sotto definito.

Definizione della modalità per il calcolo del CRC-OpenPass:

  • CRC order = 16
  • CRC polynom = 0x8408
  • Initial value = 0xFFFF
  • Final XOR value = 0x0
  • CRC Addendum = 0x38B2

Effettuato il calcolo del CRC viene sommato un termine addizionale costante (CRC Addendum), ricavato il modulo base 1000 e il valore a tre cifre rappresentato in decimale (che rappresenta appunto CRC-OpenPass) viene accodato all'UID, preceduto dal carattere - (ASCII 0x2D).

Il risultato di tali operazioni è il CRC-OpenPass.

Questo è il codice della funzione per il calcolo del CRC sviluppata in Java (clicca su Espandi a lato):


//funzione per il calcolo del CRC
int calculate_crc(byte[] data) {
  int crc_preset = 0xFFFF; //valore iniziale
  int crc_poly = 0x8408; //polinomio
  int final_xor_value = 0x0; //xor finale
 
  int current_crc_value = crc_preset;
  for (int i = 0; i < data.length; i++ )
  {
    current_crc_value ^= data[i] & 0xFF;
    for (int j = 0; j < 8; j++)
    {
       if ((current_crc_value & 1) != 0){
         current_crc_value = (current_crc_value >>> 1) ^ crc_poly;
       }
       else{
         current_crc_value = current_crc_value >>> 1;
       }
    }
  }

  //xor finale
  current_crc_value = (current_crc_value ^ final_xor_value);

  int crc_addendum = 0x38B2; //addendum openpass
  current_crc_value += crc_addendum;

  //modulo
  current_crc_value = current_crc_value % 1000; //modulo openpass

  return current_crc_value & 0xFFFF;
}

OpenPass Number

L'OpenPass Number è un codice identificativo del biglietto ed è costituito dai seguenti campi:

  • Root.Group: gruppo;
  • Root.Workstation: cassa che emette il biglietto;
  • Root.SerialNumberEx2: progressivo di emissione.

L'OpenPass Number permette di identificare in modo univoco il biglietto, e quindi i relativi passaggi durante la stagione.


Torna a: Il Sistema OpenPass