github.com/Ptt-official-app/go-bbs@v0.12.0/crypt/const.go (about)

     1  package crypt
     2  
     3  const (
     4  	PASSLEN = 14
     5  )
     6  
     7  const (
     8  	desIterations = 16
     9  )
    10  
    11  var spTrans = [8][64]uint32{
    12  	/* nibble 0 */
    13  	{
    14  		0x00820200, 0x00020000, 0x80800000, 0x80820200,
    15  		0x00800000, 0x80020200, 0x80020000, 0x80800000,
    16  		0x80020200, 0x00820200, 0x00820000, 0x80000200,
    17  		0x80800200, 0x00800000, 0x00000000, 0x80020000,
    18  		0x00020000, 0x80000000, 0x00800200, 0x00020200,
    19  		0x80820200, 0x00820000, 0x80000200, 0x00800200,
    20  		0x80000000, 0x00000200, 0x00020200, 0x80820000,
    21  		0x00000200, 0x80800200, 0x80820000, 0x00000000,
    22  		0x00000000, 0x80820200, 0x00800200, 0x80020000,
    23  		0x00820200, 0x00020000, 0x80000200, 0x00800200,
    24  		0x80820000, 0x00000200, 0x00020200, 0x80800000,
    25  		0x80020200, 0x80000000, 0x80800000, 0x00820000,
    26  		0x80820200, 0x00020200, 0x00820000, 0x80800200,
    27  		0x00800000, 0x80000200, 0x80020000, 0x00000000,
    28  		0x00020000, 0x00800000, 0x80800200, 0x00820200,
    29  		0x80000000, 0x80820000, 0x00000200, 0x80020200,
    30  	},
    31  	/* nibble 1 */
    32  	{
    33  		0x10042004, 0x00000000, 0x00042000, 0x10040000,
    34  		0x10000004, 0x00002004, 0x10002000, 0x00042000,
    35  		0x00002000, 0x10040004, 0x00000004, 0x10002000,
    36  		0x00040004, 0x10042000, 0x10040000, 0x00000004,
    37  		0x00040000, 0x10002004, 0x10040004, 0x00002000,
    38  		0x00042004, 0x10000000, 0x00000000, 0x00040004,
    39  		0x10002004, 0x00042004, 0x10042000, 0x10000004,
    40  		0x10000000, 0x00040000, 0x00002004, 0x10042004,
    41  		0x00040004, 0x10042000, 0x10002000, 0x00042004,
    42  		0x10042004, 0x00040004, 0x10000004, 0x00000000,
    43  		0x10000000, 0x00002004, 0x00040000, 0x10040004,
    44  		0x00002000, 0x10000000, 0x00042004, 0x10002004,
    45  		0x10042000, 0x00002000, 0x00000000, 0x10000004,
    46  		0x00000004, 0x10042004, 0x00042000, 0x10040000,
    47  		0x10040004, 0x00040000, 0x00002004, 0x10002000,
    48  		0x10002004, 0x00000004, 0x10040000, 0x00042000,
    49  	},
    50  	/* nibble 2 */
    51  	{
    52  		0x41000000, 0x01010040, 0x00000040, 0x41000040,
    53  		0x40010000, 0x01000000, 0x41000040, 0x00010040,
    54  		0x01000040, 0x00010000, 0x01010000, 0x40000000,
    55  		0x41010040, 0x40000040, 0x40000000, 0x41010000,
    56  		0x00000000, 0x40010000, 0x01010040, 0x00000040,
    57  		0x40000040, 0x41010040, 0x00010000, 0x41000000,
    58  		0x41010000, 0x01000040, 0x40010040, 0x01010000,
    59  		0x00010040, 0x00000000, 0x01000000, 0x40010040,
    60  		0x01010040, 0x00000040, 0x40000000, 0x00010000,
    61  		0x40000040, 0x40010000, 0x01010000, 0x41000040,
    62  		0x00000000, 0x01010040, 0x00010040, 0x41010000,
    63  		0x40010000, 0x01000000, 0x41010040, 0x40000000,
    64  		0x40010040, 0x41000000, 0x01000000, 0x41010040,
    65  		0x00010000, 0x01000040, 0x41000040, 0x00010040,
    66  		0x01000040, 0x00000000, 0x41010000, 0x40000040,
    67  		0x41000000, 0x40010040, 0x00000040, 0x01010000,
    68  	},
    69  	/* nibble 3 */
    70  	{
    71  		0x00100402, 0x04000400, 0x00000002, 0x04100402,
    72  		0x00000000, 0x04100000, 0x04000402, 0x00100002,
    73  		0x04100400, 0x04000002, 0x04000000, 0x00000402,
    74  		0x04000002, 0x00100402, 0x00100000, 0x04000000,
    75  		0x04100002, 0x00100400, 0x00000400, 0x00000002,
    76  		0x00100400, 0x04000402, 0x04100000, 0x00000400,
    77  		0x00000402, 0x00000000, 0x00100002, 0x04100400,
    78  		0x04000400, 0x04100002, 0x04100402, 0x00100000,
    79  		0x04100002, 0x00000402, 0x00100000, 0x04000002,
    80  		0x00100400, 0x04000400, 0x00000002, 0x04100000,
    81  		0x04000402, 0x00000000, 0x00000400, 0x00100002,
    82  		0x00000000, 0x04100002, 0x04100400, 0x00000400,
    83  		0x04000000, 0x04100402, 0x00100402, 0x00100000,
    84  		0x04100402, 0x00000002, 0x04000400, 0x00100402,
    85  		0x00100002, 0x00100400, 0x04100000, 0x04000402,
    86  		0x00000402, 0x04000000, 0x04000002, 0x04100400,
    87  	},
    88  	/* nibble 4 */
    89  	{
    90  		0x02000000, 0x00004000, 0x00000100, 0x02004108,
    91  		0x02004008, 0x02000100, 0x00004108, 0x02004000,
    92  		0x00004000, 0x00000008, 0x02000008, 0x00004100,
    93  		0x02000108, 0x02004008, 0x02004100, 0x00000000,
    94  		0x00004100, 0x02000000, 0x00004008, 0x00000108,
    95  		0x02000100, 0x00004108, 0x00000000, 0x02000008,
    96  		0x00000008, 0x02000108, 0x02004108, 0x00004008,
    97  		0x02004000, 0x00000100, 0x00000108, 0x02004100,
    98  		0x02004100, 0x02000108, 0x00004008, 0x02004000,
    99  		0x00004000, 0x00000008, 0x02000008, 0x02000100,
   100  		0x02000000, 0x00004100, 0x02004108, 0x00000000,
   101  		0x00004108, 0x02000000, 0x00000100, 0x00004008,
   102  		0x02000108, 0x00000100, 0x00000000, 0x02004108,
   103  		0x02004008, 0x02004100, 0x00000108, 0x00004000,
   104  		0x00004100, 0x02004008, 0x02000100, 0x00000108,
   105  		0x00000008, 0x00004108, 0x02004000, 0x02000008,
   106  	},
   107  	/* nibble 5 */
   108  	{
   109  		0x20000010, 0x00080010, 0x00000000, 0x20080800,
   110  		0x00080010, 0x00000800, 0x20000810, 0x00080000,
   111  		0x00000810, 0x20080810, 0x00080800, 0x20000000,
   112  		0x20000800, 0x20000010, 0x20080000, 0x00080810,
   113  		0x00080000, 0x20000810, 0x20080010, 0x00000000,
   114  		0x00000800, 0x00000010, 0x20080800, 0x20080010,
   115  		0x20080810, 0x20080000, 0x20000000, 0x00000810,
   116  		0x00000010, 0x00080800, 0x00080810, 0x20000800,
   117  		0x00000810, 0x20000000, 0x20000800, 0x00080810,
   118  		0x20080800, 0x00080010, 0x00000000, 0x20000800,
   119  		0x20000000, 0x00000800, 0x20080010, 0x00080000,
   120  		0x00080010, 0x20080810, 0x00080800, 0x00000010,
   121  		0x20080810, 0x00080800, 0x00080000, 0x20000810,
   122  		0x20000010, 0x20080000, 0x00080810, 0x00000000,
   123  		0x00000800, 0x20000010, 0x20000810, 0x20080800,
   124  		0x20080000, 0x00000810, 0x00000010, 0x20080010,
   125  	},
   126  	/* nibble 6 */
   127  	{
   128  		0x00001000, 0x00000080, 0x00400080, 0x00400001,
   129  		0x00401081, 0x00001001, 0x00001080, 0x00000000,
   130  		0x00400000, 0x00400081, 0x00000081, 0x00401000,
   131  		0x00000001, 0x00401080, 0x00401000, 0x00000081,
   132  		0x00400081, 0x00001000, 0x00001001, 0x00401081,
   133  		0x00000000, 0x00400080, 0x00400001, 0x00001080,
   134  		0x00401001, 0x00001081, 0x00401080, 0x00000001,
   135  		0x00001081, 0x00401001, 0x00000080, 0x00400000,
   136  		0x00001081, 0x00401000, 0x00401001, 0x00000081,
   137  		0x00001000, 0x00000080, 0x00400000, 0x00401001,
   138  		0x00400081, 0x00001081, 0x00001080, 0x00000000,
   139  		0x00000080, 0x00400001, 0x00000001, 0x00400080,
   140  		0x00000000, 0x00400081, 0x00400080, 0x00001080,
   141  		0x00000081, 0x00001000, 0x00401081, 0x00400000,
   142  		0x00401080, 0x00000001, 0x00001001, 0x00401081,
   143  		0x00400001, 0x00401080, 0x00401000, 0x00001001,
   144  	},
   145  	/* nibble 7 */
   146  	{
   147  		0x08200020, 0x08208000, 0x00008020, 0x00000000,
   148  		0x08008000, 0x00200020, 0x08200000, 0x08208020,
   149  		0x00000020, 0x08000000, 0x00208000, 0x00008020,
   150  		0x00208020, 0x08008020, 0x08000020, 0x08200000,
   151  		0x00008000, 0x00208020, 0x00200020, 0x08008000,
   152  		0x08208020, 0x08000020, 0x00000000, 0x00208000,
   153  		0x08000000, 0x00200000, 0x08008020, 0x08200020,
   154  		0x00200000, 0x00008000, 0x08208000, 0x00000020,
   155  		0x00200000, 0x00008000, 0x08000020, 0x08208020,
   156  		0x00008020, 0x08000000, 0x00000000, 0x00208000,
   157  		0x08200020, 0x08008020, 0x08008000, 0x00200020,
   158  		0x08208000, 0x00000020, 0x00200020, 0x08008000,
   159  		0x08208020, 0x00200000, 0x08200000, 0x08000020,
   160  		0x00208000, 0x00008020, 0x08008020, 0x08200000,
   161  		0x00000020, 0x08208000, 0x00208020, 0x00000000,
   162  		0x08000000, 0x08200020, 0x00008000, 0x00208020,
   163  	},
   164  } // end SPtrans
   165  
   166  var skb = [8][64]uint32{
   167  	/* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
   168  	{
   169  		0x00000000, 0x00000010, 0x20000000, 0x20000010,
   170  		0x00010000, 0x00010010, 0x20010000, 0x20010010,
   171  		0x00000800, 0x00000810, 0x20000800, 0x20000810,
   172  		0x00010800, 0x00010810, 0x20010800, 0x20010810,
   173  		0x00000020, 0x00000030, 0x20000020, 0x20000030,
   174  		0x00010020, 0x00010030, 0x20010020, 0x20010030,
   175  		0x00000820, 0x00000830, 0x20000820, 0x20000830,
   176  		0x00010820, 0x00010830, 0x20010820, 0x20010830,
   177  		0x00080000, 0x00080010, 0x20080000, 0x20080010,
   178  		0x00090000, 0x00090010, 0x20090000, 0x20090010,
   179  		0x00080800, 0x00080810, 0x20080800, 0x20080810,
   180  		0x00090800, 0x00090810, 0x20090800, 0x20090810,
   181  		0x00080020, 0x00080030, 0x20080020, 0x20080030,
   182  		0x00090020, 0x00090030, 0x20090020, 0x20090030,
   183  		0x00080820, 0x00080830, 0x20080820, 0x20080830,
   184  		0x00090820, 0x00090830, 0x20090820, 0x20090830,
   185  	},
   186  	/* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
   187  	{
   188  		0x00000000, 0x02000000, 0x00002000, 0x02002000,
   189  		0x00200000, 0x02200000, 0x00202000, 0x02202000,
   190  		0x00000004, 0x02000004, 0x00002004, 0x02002004,
   191  		0x00200004, 0x02200004, 0x00202004, 0x02202004,
   192  		0x00000400, 0x02000400, 0x00002400, 0x02002400,
   193  		0x00200400, 0x02200400, 0x00202400, 0x02202400,
   194  		0x00000404, 0x02000404, 0x00002404, 0x02002404,
   195  		0x00200404, 0x02200404, 0x00202404, 0x02202404,
   196  		0x10000000, 0x12000000, 0x10002000, 0x12002000,
   197  		0x10200000, 0x12200000, 0x10202000, 0x12202000,
   198  		0x10000004, 0x12000004, 0x10002004, 0x12002004,
   199  		0x10200004, 0x12200004, 0x10202004, 0x12202004,
   200  		0x10000400, 0x12000400, 0x10002400, 0x12002400,
   201  		0x10200400, 0x12200400, 0x10202400, 0x12202400,
   202  		0x10000404, 0x12000404, 0x10002404, 0x12002404,
   203  		0x10200404, 0x12200404, 0x10202404, 0x12202404,
   204  	},
   205  	/* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
   206  	{
   207  		0x00000000, 0x00000001, 0x00040000, 0x00040001,
   208  		0x01000000, 0x01000001, 0x01040000, 0x01040001,
   209  		0x00000002, 0x00000003, 0x00040002, 0x00040003,
   210  		0x01000002, 0x01000003, 0x01040002, 0x01040003,
   211  		0x00000200, 0x00000201, 0x00040200, 0x00040201,
   212  		0x01000200, 0x01000201, 0x01040200, 0x01040201,
   213  		0x00000202, 0x00000203, 0x00040202, 0x00040203,
   214  		0x01000202, 0x01000203, 0x01040202, 0x01040203,
   215  		0x08000000, 0x08000001, 0x08040000, 0x08040001,
   216  		0x09000000, 0x09000001, 0x09040000, 0x09040001,
   217  		0x08000002, 0x08000003, 0x08040002, 0x08040003,
   218  		0x09000002, 0x09000003, 0x09040002, 0x09040003,
   219  		0x08000200, 0x08000201, 0x08040200, 0x08040201,
   220  		0x09000200, 0x09000201, 0x09040200, 0x09040201,
   221  		0x08000202, 0x08000203, 0x08040202, 0x08040203,
   222  		0x09000202, 0x09000203, 0x09040202, 0x09040203,
   223  	},
   224  	/* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
   225  	{
   226  		0x00000000, 0x00100000, 0x00000100, 0x00100100,
   227  		0x00000008, 0x00100008, 0x00000108, 0x00100108,
   228  		0x00001000, 0x00101000, 0x00001100, 0x00101100,
   229  		0x00001008, 0x00101008, 0x00001108, 0x00101108,
   230  		0x04000000, 0x04100000, 0x04000100, 0x04100100,
   231  		0x04000008, 0x04100008, 0x04000108, 0x04100108,
   232  		0x04001000, 0x04101000, 0x04001100, 0x04101100,
   233  		0x04001008, 0x04101008, 0x04001108, 0x04101108,
   234  		0x00020000, 0x00120000, 0x00020100, 0x00120100,
   235  		0x00020008, 0x00120008, 0x00020108, 0x00120108,
   236  		0x00021000, 0x00121000, 0x00021100, 0x00121100,
   237  		0x00021008, 0x00121008, 0x00021108, 0x00121108,
   238  		0x04020000, 0x04120000, 0x04020100, 0x04120100,
   239  		0x04020008, 0x04120008, 0x04020108, 0x04120108,
   240  		0x04021000, 0x04121000, 0x04021100, 0x04121100,
   241  		0x04021008, 0x04121008, 0x04021108, 0x04121108,
   242  	},
   243  	/* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
   244  	{
   245  		0x00000000, 0x10000000, 0x00010000, 0x10010000,
   246  		0x00000004, 0x10000004, 0x00010004, 0x10010004,
   247  		0x20000000, 0x30000000, 0x20010000, 0x30010000,
   248  		0x20000004, 0x30000004, 0x20010004, 0x30010004,
   249  		0x00100000, 0x10100000, 0x00110000, 0x10110000,
   250  		0x00100004, 0x10100004, 0x00110004, 0x10110004,
   251  		0x20100000, 0x30100000, 0x20110000, 0x30110000,
   252  		0x20100004, 0x30100004, 0x20110004, 0x30110004,
   253  		0x00001000, 0x10001000, 0x00011000, 0x10011000,
   254  		0x00001004, 0x10001004, 0x00011004, 0x10011004,
   255  		0x20001000, 0x30001000, 0x20011000, 0x30011000,
   256  		0x20001004, 0x30001004, 0x20011004, 0x30011004,
   257  		0x00101000, 0x10101000, 0x00111000, 0x10111000,
   258  		0x00101004, 0x10101004, 0x00111004, 0x10111004,
   259  		0x20101000, 0x30101000, 0x20111000, 0x30111000,
   260  		0x20101004, 0x30101004, 0x20111004, 0x30111004,
   261  	},
   262  	/* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
   263  	{
   264  		0x00000000, 0x08000000, 0x00000008, 0x08000008,
   265  		0x00000400, 0x08000400, 0x00000408, 0x08000408,
   266  		0x00020000, 0x08020000, 0x00020008, 0x08020008,
   267  		0x00020400, 0x08020400, 0x00020408, 0x08020408,
   268  		0x00000001, 0x08000001, 0x00000009, 0x08000009,
   269  		0x00000401, 0x08000401, 0x00000409, 0x08000409,
   270  		0x00020001, 0x08020001, 0x00020009, 0x08020009,
   271  		0x00020401, 0x08020401, 0x00020409, 0x08020409,
   272  		0x02000000, 0x0A000000, 0x02000008, 0x0A000008,
   273  		0x02000400, 0x0A000400, 0x02000408, 0x0A000408,
   274  		0x02020000, 0x0A020000, 0x02020008, 0x0A020008,
   275  		0x02020400, 0x0A020400, 0x02020408, 0x0A020408,
   276  		0x02000001, 0x0A000001, 0x02000009, 0x0A000009,
   277  		0x02000401, 0x0A000401, 0x02000409, 0x0A000409,
   278  		0x02020001, 0x0A020001, 0x02020009, 0x0A020009,
   279  		0x02020401, 0x0A020401, 0x02020409, 0x0A020409,
   280  	},
   281  	/* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
   282  	{
   283  		0x00000000, 0x00000100, 0x00080000, 0x00080100,
   284  		0x01000000, 0x01000100, 0x01080000, 0x01080100,
   285  		0x00000010, 0x00000110, 0x00080010, 0x00080110,
   286  		0x01000010, 0x01000110, 0x01080010, 0x01080110,
   287  		0x00200000, 0x00200100, 0x00280000, 0x00280100,
   288  		0x01200000, 0x01200100, 0x01280000, 0x01280100,
   289  		0x00200010, 0x00200110, 0x00280010, 0x00280110,
   290  		0x01200010, 0x01200110, 0x01280010, 0x01280110,
   291  		0x00000200, 0x00000300, 0x00080200, 0x00080300,
   292  		0x01000200, 0x01000300, 0x01080200, 0x01080300,
   293  		0x00000210, 0x00000310, 0x00080210, 0x00080310,
   294  		0x01000210, 0x01000310, 0x01080210, 0x01080310,
   295  		0x00200200, 0x00200300, 0x00280200, 0x00280300,
   296  		0x01200200, 0x01200300, 0x01280200, 0x01280300,
   297  		0x00200210, 0x00200310, 0x00280210, 0x00280310,
   298  		0x01200210, 0x01200310, 0x01280210, 0x01280310,
   299  	},
   300  	/* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
   301  	{
   302  		0x00000000, 0x04000000, 0x00040000, 0x04040000,
   303  		0x00000002, 0x04000002, 0x00040002, 0x04040002,
   304  		0x00002000, 0x04002000, 0x00042000, 0x04042000,
   305  		0x00002002, 0x04002002, 0x00042002, 0x04042002,
   306  		0x00000020, 0x04000020, 0x00040020, 0x04040020,
   307  		0x00000022, 0x04000022, 0x00040022, 0x04040022,
   308  		0x00002020, 0x04002020, 0x00042020, 0x04042020,
   309  		0x00002022, 0x04002022, 0x00042022, 0x04042022,
   310  		0x00000800, 0x04000800, 0x00040800, 0x04040800,
   311  		0x00000802, 0x04000802, 0x00040802, 0x04040802,
   312  		0x00002800, 0x04002800, 0x00042800, 0x04042800,
   313  		0x00002802, 0x04002802, 0x00042802, 0x04042802,
   314  		0x00000820, 0x04000820, 0x00040820, 0x04040820,
   315  		0x00000822, 0x04000822, 0x00040822, 0x04040822,
   316  		0x00002820, 0x04002820, 0x00042820, 0x04042820,
   317  		0x00002822, 0x04002822, 0x00042822, 0x04042822,
   318  	},
   319  }
   320  
   321  var shifts2 = [16]bool{false, false, true, true, true, true, true, true, false, true, true, true, true, true, true, false}
   322  
   323  var conSalt = [128]uint8{
   324  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   325  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   326  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   327  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   328  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   329  	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
   330  	0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
   331  	0x0A, 0x0B, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A,
   332  	0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12,
   333  	0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A,
   334  	0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22,
   335  	0x23, 0x24, 0x25, 0x20, 0x21, 0x22, 0x23, 0x24,
   336  	0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C,
   337  	0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34,
   338  	0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C,
   339  	0x3D, 0x3E, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
   340  }
   341  
   342  var cov2char = [64]uint8{
   343  	0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
   344  	0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44,
   345  	0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C,
   346  	0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54,
   347  	0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62,
   348  	0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A,
   349  	0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72,
   350  	0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A,
   351  }