FASC-N: correct encoding of the packed 4-bit decimal format with odd parity
The BCD digits in the FASC-N credential are sent lsb first followed by an odd parity. Since this perl script is simply packing the bits in their expected order, the encodings should exactly match figure 7 in "Technical Implementation Guidance: Smart Card Enabled Physical Access Control Systems Version 2.2".
This commit is contained in:
+10
-10
@@ -31,24 +31,24 @@
|
|||||||
# S9999F9999F999999F0F1F0000000000300001E
|
# S9999F9999F999999F0F1F0000000000300001E
|
||||||
# and outputs that in hex, encoded in the 5-bit form described in
|
# and outputs that in hex, encoded in the 5-bit form described in
|
||||||
# "Technical Implementation Guidance: Smart Card Enabled Physical Access
|
# "Technical Implementation Guidance: Smart Card Enabled Physical Access
|
||||||
# Control Systems"
|
# Control Systems Version 2.2", Section 6.2, Figure 7.
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use Bit::Vector;
|
use Bit::Vector;
|
||||||
|
|
||||||
my %encoding = (
|
my %encoding = (
|
||||||
0 => "00001",
|
0 => "00001",
|
||||||
1 => "00010",
|
1 => "10000",
|
||||||
2 => "00100",
|
2 => "01000",
|
||||||
3 => "00111",
|
3 => "11001",
|
||||||
4 => "01000",
|
4 => "00100",
|
||||||
5 => "01011",
|
5 => "10101",
|
||||||
6 => "01101",
|
6 => "01101",
|
||||||
7 => "01110",
|
7 => "11100",
|
||||||
8 => "10000",
|
8 => "00010",
|
||||||
9 => "10011",
|
9 => "10011",
|
||||||
S => "11010", # the examples and definitions of S and F differ
|
S => "11010",
|
||||||
F => "10110", # but we'll go with the examples here..
|
F => "10110",
|
||||||
E => "11111",
|
E => "11111",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user