home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 December / Chip_2002-12_cd1.bin / ctenari / Hytha / MultiHSH.exe / SR.RAR / SR / DCPCrypt / Ciphers / DCPdes.inc < prev    next >
Text File  |  1999-10-25  |  13KB  |  298 lines

  1. const
  2.   shifts2: array[0..15]of byte=
  3.     (0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0);
  4.  
  5.   des_skb: array[0..7,0..63]of dword=(
  6.     (
  7.     (* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 *)
  8.     $00000000,$00000010,$20000000,$20000010,
  9.     $00010000,$00010010,$20010000,$20010010,
  10.     $00000800,$00000810,$20000800,$20000810,
  11.     $00010800,$00010810,$20010800,$20010810,
  12.     $00000020,$00000030,$20000020,$20000030,
  13.     $00010020,$00010030,$20010020,$20010030,
  14.     $00000820,$00000830,$20000820,$20000830,
  15.     $00010820,$00010830,$20010820,$20010830,
  16.     $00080000,$00080010,$20080000,$20080010,
  17.     $00090000,$00090010,$20090000,$20090010,
  18.     $00080800,$00080810,$20080800,$20080810,
  19.     $00090800,$00090810,$20090800,$20090810,
  20.     $00080020,$00080030,$20080020,$20080030,
  21.     $00090020,$00090030,$20090020,$20090030,
  22.     $00080820,$00080830,$20080820,$20080830,
  23.     $00090820,$00090830,$20090820,$20090830
  24.     ),(
  25.     (* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 *)
  26.     $00000000,$02000000,$00002000,$02002000,
  27.     $00200000,$02200000,$00202000,$02202000,
  28.     $00000004,$02000004,$00002004,$02002004,
  29.     $00200004,$02200004,$00202004,$02202004,
  30.     $00000400,$02000400,$00002400,$02002400,
  31.     $00200400,$02200400,$00202400,$02202400,
  32.     $00000404,$02000404,$00002404,$02002404,
  33.     $00200404,$02200404,$00202404,$02202404,
  34.     $10000000,$12000000,$10002000,$12002000,
  35.     $10200000,$12200000,$10202000,$12202000,
  36.     $10000004,$12000004,$10002004,$12002004,
  37.     $10200004,$12200004,$10202004,$12202004,
  38.     $10000400,$12000400,$10002400,$12002400,
  39.     $10200400,$12200400,$10202400,$12202400,
  40.     $10000404,$12000404,$10002404,$12002404,
  41.     $10200404,$12200404,$10202404,$12202404
  42.     ),(
  43.     (* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 *)
  44.     $00000000,$00000001,$00040000,$00040001,
  45.     $01000000,$01000001,$01040000,$01040001,
  46.     $00000002,$00000003,$00040002,$00040003,
  47.     $01000002,$01000003,$01040002,$01040003,
  48.     $00000200,$00000201,$00040200,$00040201,
  49.     $01000200,$01000201,$01040200,$01040201,
  50.     $00000202,$00000203,$00040202,$00040203,
  51.     $01000202,$01000203,$01040202,$01040203,
  52.     $08000000,$08000001,$08040000,$08040001,
  53.     $09000000,$09000001,$09040000,$09040001,
  54.     $08000002,$08000003,$08040002,$08040003,
  55.     $09000002,$09000003,$09040002,$09040003,
  56.     $08000200,$08000201,$08040200,$08040201,
  57.     $09000200,$09000201,$09040200,$09040201,
  58.     $08000202,$08000203,$08040202,$08040203,
  59.     $09000202,$09000203,$09040202,$09040203
  60.     ),(
  61.     (* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 *)
  62.     $00000000,$00100000,$00000100,$00100100,
  63.     $00000008,$00100008,$00000108,$00100108,
  64.     $00001000,$00101000,$00001100,$00101100,
  65.     $00001008,$00101008,$00001108,$00101108,
  66.     $04000000,$04100000,$04000100,$04100100,
  67.     $04000008,$04100008,$04000108,$04100108,
  68.     $04001000,$04101000,$04001100,$04101100,
  69.     $04001008,$04101008,$04001108,$04101108,
  70.     $00020000,$00120000,$00020100,$00120100,
  71.     $00020008,$00120008,$00020108,$00120108,
  72.     $00021000,$00121000,$00021100,$00121100,
  73.     $00021008,$00121008,$00021108,$00121108,
  74.     $04020000,$04120000,$04020100,$04120100,
  75.     $04020008,$04120008,$04020108,$04120108,
  76.     $04021000,$04121000,$04021100,$04121100,
  77.     $04021008,$04121008,$04021108,$04121108
  78.     ),(
  79.     (* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 *)
  80.     $00000000,$10000000,$00010000,$10010000,
  81.     $00000004,$10000004,$00010004,$10010004,
  82.     $20000000,$30000000,$20010000,$30010000,
  83.     $20000004,$30000004,$20010004,$30010004,
  84.     $00100000,$10100000,$00110000,$10110000,
  85.     $00100004,$10100004,$00110004,$10110004,
  86.     $20100000,$30100000,$20110000,$30110000,
  87.     $20100004,$30100004,$20110004,$30110004,
  88.     $00001000,$10001000,$00011000,$10011000,
  89.     $00001004,$10001004,$00011004,$10011004,
  90.     $20001000,$30001000,$20011000,$30011000,
  91.     $20001004,$30001004,$20011004,$30011004,
  92.     $00101000,$10101000,$00111000,$10111000,
  93.     $00101004,$10101004,$00111004,$10111004,
  94.     $20101000,$30101000,$20111000,$30111000,
  95.     $20101004,$30101004,$20111004,$30111004
  96.     ),(
  97.     (* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 *)
  98.     $00000000,$08000000,$00000008,$08000008,
  99.     $00000400,$08000400,$00000408,$08000408,
  100.     $00020000,$08020000,$00020008,$08020008,
  101.     $00020400,$08020400,$00020408,$08020408,
  102.     $00000001,$08000001,$00000009,$08000009,
  103.     $00000401,$08000401,$00000409,$08000409,
  104.     $00020001,$08020001,$00020009,$08020009,
  105.     $00020401,$08020401,$00020409,$08020409,
  106.     $02000000,$0A000000,$02000008,$0A000008,
  107.     $02000400,$0A000400,$02000408,$0A000408,
  108.     $02020000,$0A020000,$02020008,$0A020008,
  109.     $02020400,$0A020400,$02020408,$0A020408,
  110.     $02000001,$0A000001,$02000009,$0A000009,
  111.     $02000401,$0A000401,$02000409,$0A000409,
  112.     $02020001,$0A020001,$02020009,$0A020009,
  113.     $02020401,$0A020401,$02020409,$0A020409
  114.     ),(
  115.     (* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 *)
  116.     $00000000,$00000100,$00080000,$00080100,
  117.     $01000000,$01000100,$01080000,$01080100,
  118.     $00000010,$00000110,$00080010,$00080110,
  119.     $01000010,$01000110,$01080010,$01080110,
  120.     $00200000,$00200100,$00280000,$00280100,
  121.     $01200000,$01200100,$01280000,$01280100,
  122.     $00200010,$00200110,$00280010,$00280110,
  123.     $01200010,$01200110,$01280010,$01280110,
  124.     $00000200,$00000300,$00080200,$00080300,
  125.     $01000200,$01000300,$01080200,$01080300,
  126.     $00000210,$00000310,$00080210,$00080310,
  127.     $01000210,$01000310,$01080210,$01080310,
  128.     $00200200,$00200300,$00280200,$00280300,
  129.     $01200200,$01200300,$01280200,$01280300,
  130.     $00200210,$00200310,$00280210,$00280310,
  131.     $01200210,$01200310,$01280210,$01280310
  132.     ),(
  133.     (* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 *)
  134.     $00000000,$04000000,$00040000,$04040000,
  135.     $00000002,$04000002,$00040002,$04040002,
  136.     $00002000,$04002000,$00042000,$04042000,
  137.     $00002002,$04002002,$00042002,$04042002,
  138.     $00000020,$04000020,$00040020,$04040020,
  139.     $00000022,$04000022,$00040022,$04040022,
  140.     $00002020,$04002020,$00042020,$04042020,
  141.     $00002022,$04002022,$00042022,$04042022,
  142.     $00000800,$04000800,$00040800,$04040800,
  143.     $00000802,$04000802,$00040802,$04040802,
  144.     $00002800,$04002800,$00042800,$04042800,
  145.     $00002802,$04002802,$00042802,$04042802,
  146.     $00000820,$04000820,$00040820,$04040820,
  147.     $00000822,$04000822,$00040822,$04040822,
  148.     $00002820,$04002820,$00042820,$04042820,
  149.     $00002822,$04002822,$00042822,$04042822
  150.     ));
  151.  
  152.   des_sptrans: array[0..7,0..63] of dword=(
  153.     (
  154.     (* nibble 0 *)
  155.     $02080800, $00080000, $02000002, $02080802,
  156.     $02000000, $00080802, $00080002, $02000002,
  157.     $00080802, $02080800, $02080000, $00000802,
  158.     $02000802, $02000000, $00000000, $00080002,
  159.     $00080000, $00000002, $02000800, $00080800,
  160.     $02080802, $02080000, $00000802, $02000800,
  161.     $00000002, $00000800, $00080800, $02080002,
  162.     $00000800, $02000802, $02080002, $00000000,
  163.     $00000000, $02080802, $02000800, $00080002,
  164.     $02080800, $00080000, $00000802, $02000800,
  165.     $02080002, $00000800, $00080800, $02000002,
  166.     $00080802, $00000002, $02000002, $02080000,
  167.     $02080802, $00080800, $02080000, $02000802,
  168.     $02000000, $00000802, $00080002, $00000000,
  169.     $00080000, $02000000, $02000802, $02080800,
  170.     $00000002, $02080002, $00000800, $00080802
  171.     ),(
  172.     (* nibble 1 *)
  173.     $40108010, $00000000, $00108000, $40100000,
  174.     $40000010, $00008010, $40008000, $00108000,
  175.     $00008000, $40100010, $00000010, $40008000,
  176.     $00100010, $40108000, $40100000, $00000010,
  177.     $00100000, $40008010, $40100010, $00008000,
  178.     $00108010, $40000000, $00000000, $00100010,
  179.     $40008010, $00108010, $40108000, $40000010,
  180.     $40000000, $00100000, $00008010, $40108010,
  181.     $00100010, $40108000, $40008000, $00108010,
  182.     $40108010, $00100010, $40000010, $00000000,
  183.     $40000000, $00008010, $00100000, $40100010,
  184.     $00008000, $40000000, $00108010, $40008010,
  185.     $40108000, $00008000, $00000000, $40000010,
  186.     $00000010, $40108010, $00108000, $40100000,
  187.     $40100010, $00100000, $00008010, $40008000,
  188.     $40008010, $00000010, $40100000, $00108000
  189.     ),(
  190.     (* nibble 2 *)
  191.     $04000001, $04040100, $00000100, $04000101,
  192.     $00040001, $04000000, $04000101, $00040100,
  193.     $04000100, $00040000, $04040000, $00000001,
  194.     $04040101, $00000101, $00000001, $04040001,
  195.     $00000000, $00040001, $04040100, $00000100,
  196.     $00000101, $04040101, $00040000, $04000001,
  197.     $04040001, $04000100, $00040101, $04040000,
  198.     $00040100, $00000000, $04000000, $00040101,
  199.     $04040100, $00000100, $00000001, $00040000,
  200.     $00000101, $00040001, $04040000, $04000101,
  201.     $00000000, $04040100, $00040100, $04040001,
  202.     $00040001, $04000000, $04040101, $00000001,
  203.     $00040101, $04000001, $04000000, $04040101,
  204.     $00040000, $04000100, $04000101, $00040100,
  205.     $04000100, $00000000, $04040001, $00000101,
  206.     $04000001, $00040101, $00000100, $04040000
  207.     ),(
  208.     (* nibble 3 *)
  209.     $00401008, $10001000, $00000008, $10401008,
  210.     $00000000, $10400000, $10001008, $00400008,
  211.     $10401000, $10000008, $10000000, $00001008,
  212.     $10000008, $00401008, $00400000, $10000000,
  213.     $10400008, $00401000, $00001000, $00000008,
  214.     $00401000, $10001008, $10400000, $00001000,
  215.     $00001008, $00000000, $00400008, $10401000,
  216.     $10001000, $10400008, $10401008, $00400000,
  217.     $10400008, $00001008, $00400000, $10000008,
  218.     $00401000, $10001000, $00000008, $10400000,
  219.     $10001008, $00000000, $00001000, $00400008,
  220.     $00000000, $10400008, $10401000, $00001000,
  221.     $10000000, $10401008, $00401008, $00400000,
  222.     $10401008, $00000008, $10001000, $00401008,
  223.     $00400008, $00401000, $10400000, $10001008,
  224.     $00001008, $10000000, $10000008, $10401000
  225.     ),(
  226.     (* nibble 4 *)
  227.     $08000000, $00010000, $00000400, $08010420,
  228.     $08010020, $08000400, $00010420, $08010000,
  229.     $00010000, $00000020, $08000020, $00010400,
  230.     $08000420, $08010020, $08010400, $00000000,
  231.     $00010400, $08000000, $00010020, $00000420,
  232.     $08000400, $00010420, $00000000, $08000020,
  233.     $00000020, $08000420, $08010420, $00010020,
  234.     $08010000, $00000400, $00000420, $08010400,
  235.     $08010400, $08000420, $00010020, $08010000,
  236.     $00010000, $00000020, $08000020, $08000400,
  237.     $08000000, $00010400, $08010420, $00000000,
  238.     $00010420, $08000000, $00000400, $00010020,
  239.     $08000420, $00000400, $00000000, $08010420,
  240.     $08010020, $08010400, $00000420, $00010000,
  241.     $00010400, $08010020, $08000400, $00000420,
  242.     $00000020, $00010420, $08010000, $08000020
  243.     ),(
  244.     (* nibble 5 *)
  245.     $80000040, $00200040, $00000000, $80202000,
  246.     $00200040, $00002000, $80002040, $00200000,
  247.     $00002040, $80202040, $00202000, $80000000,
  248.     $80002000, $80000040, $80200000, $00202040,
  249.     $00200000, $80002040, $80200040, $00000000,
  250.     $00002000, $00000040, $80202000, $80200040,
  251.     $80202040, $80200000, $80000000, $00002040,
  252.     $00000040, $00202000, $00202040, $80002000,
  253.     $00002040, $80000000, $80002000, $00202040,
  254.     $80202000, $00200040, $00000000, $80002000,
  255.     $80000000, $00002000, $80200040, $00200000,
  256.     $00200040, $80202040, $00202000, $00000040,
  257.     $80202040, $00202000, $00200000, $80002040,
  258.     $80000040, $80200000, $00202040, $00000000,
  259.     $00002000, $80000040, $80002040, $80202000,
  260.     $80200000, $00002040, $00000040, $80200040
  261.     ),(
  262.     (* nibble 6 *)
  263.     $00004000, $00000200, $01000200, $01000004,
  264.     $01004204, $00004004, $00004200, $00000000,
  265.     $01000000, $01000204, $00000204, $01004000,
  266.     $00000004, $01004200, $01004000, $00000204,
  267.     $01000204, $00004000, $00004004, $01004204,
  268.     $00000000, $01000200, $01000004, $00004200,
  269.     $01004004, $00004204, $01004200, $00000004,
  270.     $00004204, $01004004, $00000200, $01000000,
  271.     $00004204, $01004000, $01004004, $00000204,
  272.     $00004000, $00000200, $01000000, $01004004,
  273.     $01000204, $00004204, $00004200, $00000000,
  274.     $00000200, $01000004, $00000004, $01000200,
  275.     $00000000, $01000204, $01000200, $00004200,
  276.     $00000204, $00004000, $01004204, $01000000,
  277.     $01004200, $00000004, $00004004, $01004204,
  278.     $01000004, $01004200, $01004000, $00004004
  279.     ),(
  280.     (* nibble 7 *)
  281.     $20800080, $20820000, $00020080, $00000000,
  282.     $20020000, $00800080, $20800000, $20820080,
  283.     $00000080, $20000000, $00820000, $00020080,
  284.     $00820080, $20020080, $20000080, $20800000,
  285.     $00020000, $00820080, $00800080, $20020000,
  286.     $20820080, $20000080, $00000000, $00820000,
  287.     $20000000, $00800000, $20020080, $20800080,
  288.     $00800000, $00020000, $20820000, $00000080,
  289.     $00800000, $00020000, $20000080, $20820080,
  290.     $00020080, $20000000, $00000000, $00820000,
  291.     $20800080, $20020080, $20020000, $00800080,
  292.     $20820000, $00000080, $00800080, $20020000,
  293.     $20820080, $00800000, $20800000, $20000080,
  294.     $00820000, $00020080, $20020080, $20800000,
  295.     $00000080, $20820000, $00820080, $00000000,
  296.     $20000000, $20800080, $00020000, $00820080
  297.     ));
  298.