OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / freeswan / testing / utils / des-set-odd-parity.pl
1 #!/usr/bin/perl
2
3 @odd_parity=(
4   1,  1,  2,  2,  4,  4,  7,  7,  8,  8, 11, 11, 13, 13, 14, 14,
5  16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
6  32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
7  49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
8  64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79,
9  81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94,
10  97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110,
11 112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127,
12 128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143,
13 145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158,
14 161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174,
15 176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191,
16 193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206,
17 208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223,
18 224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
19 241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254);
20
21 for $i (@ARGV) {
22   if($i =~ /^0x/) {
23     # convert hex to binary
24     $i = pack("H*", substr($i,2));
25   }
26   @bytes=unpack("C*", $i);
27   print join(',', @bytes)."\n";
28   
29   print "0x";
30   foreach $byte (@bytes) {
31     $byte = $odd_parity[$byte];
32     print sprintf("%02x", $byte);
33   }
34   print "\n";
35   print "\"";
36   foreach $byte (@bytes) {
37     $byte = $odd_parity[$byte];
38     print pack("c", $byte);
39   }
40   print "\"\n";
41 }
42   
43
44