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 }