| 110 |
struct |
struct |
| 111 |
{ |
{ |
| 112 |
unsigned short map[256]; |
unsigned short map[256]; |
| 113 |
} kcls[8 + 8]; |
} kcls[8 + 8]; /* atode なぜ 8 + 8 ? */ |
| 114 |
|
|
| 115 |
/* 拡張鍵クラス */ |
/* 拡張鍵クラス */ |
| 116 |
#define KCLS_DT0 64 |
#define KCLS_DT0 64 |
| 217 |
} |
} |
| 218 |
|
|
| 219 |
if (n < 6) |
if (n < 6) |
| 220 |
|
/* MAKAI start */ |
| 221 |
|
#ifdef ALKEY |
| 222 |
|
kcls[n + 1].map[0x00] = 0; |
| 223 |
|
#else /* ALLKEY */ |
| 224 |
kcls[n + 1].map[0x00] = kcls[n + 1].map[0x80] = 0; |
kcls[n + 1].map[0x00] = kcls[n + 1].map[0x80] = 0; |
| 225 |
|
#endif /* ALLKEY */ |
| 226 |
|
/* MAKAI end */ |
| 227 |
if (n == 6) |
if (n == 6) |
| 228 |
kcls[7].map[0x00] |= KCLS_AN; |
kcls[7].map[0x00] |= KCLS_AN; |
| 229 |
} |
} |
| 248 |
} |
} |
| 249 |
} |
} |
| 250 |
#endif |
#endif |
| 251 |
|
|
| 252 |
|
/* MAKAI start */ |
| 253 |
|
#ifdef NOMORE |
| 254 |
|
/* if ( ch != 0 ) printf( "ch = %d -> ", ch ); */ |
| 255 |
|
ch %= 256; |
| 256 |
|
/* if ( ch != 0 ) printf( "%d\n", ch ); */ |
| 257 |
|
#endif /* NOMORE */ |
| 258 |
|
/* MAKAI end */ |
| 259 |
|
|
| 260 |
for (i = 0; i < 256; i++) |
for (i = 0; i < 256; i++) |
| 261 |
{ |
{ |
| 262 |
if (kcls[n].map[i]) |
if (kcls[n].map[i]) |
| 265 |
return i; |
return i; |
| 266 |
cnt++; |
cnt++; |
| 267 |
} |
} |
| 268 |
|
/* MAKAI start */ |
| 269 |
|
#ifdef ALLKEY |
| 270 |
|
if (n != 1 && n != 2 && i >= 128) |
| 271 |
|
break; |
| 272 |
|
#else /* ALLKEY */ |
| 273 |
if (n != 1 && n != 2 && i >= 127) |
if (n != 1 && n != 2 && i >= 127) |
| 274 |
break; |
break; |
| 275 |
|
#endif /* ALLKEY */ |
| 276 |
|
/* MAKAI end */ |
| 277 |
} |
} |
| 278 |
/* 見つからなかったのでもいっぺん */ |
/* 見つからなかったのでもいっぺん */ |
| 279 |
assert(cnt > 0); |
assert(cnt > 0); |
| 381 |
key[n] = key_set(n, 0); |
key[n] = key_set(n, 0); |
| 382 |
else { |
else { |
| 383 |
if ( umeStr[0] == '\0' ) { |
if ( umeStr[0] == '\0' ) { |
| 384 |
|
#ifdef ALLKEY |
| 385 |
|
key[n] = key_set(n, rand()); /* atode +1 は要るのか ? */ |
| 386 |
|
#else /* ALLKEY */ |
| 387 |
key[n] = key_set(n, rand()); |
key[n] = key_set(n, rand()); |
| 388 |
|
#endif /* ALLKEY */ |
| 389 |
} else { |
} else { |
| 390 |
key[n] = umeStr[n]; |
key[n] = umeStr[n]; |
| 391 |
} |
} |
| 396 |
printf("key[%d]=%02X ncls=%04X\n", n, key[n], kcls[n].map[key[n]]); |
printf("key[%d]=%02X ncls=%04X\n", n, key[n], kcls[n].map[key[n]]); |
| 397 |
#endif |
#endif |
| 398 |
|
|
| 399 |
|
/* MAKAI start */ |
| 400 |
|
#ifndef ALLKEY |
| 401 |
/* セットされた文字を元に、次キャラの文字クラスを決める */ |
/* セットされた文字を元に、次キャラの文字クラスを決める */ |
| 402 |
key_make_map(key, n); |
key_make_map(key, n); |
| 403 |
|
#endif /* not ALLKEY */ |
| 404 |
|
/* MAKAI end */ |
| 405 |
|
|
| 406 |
return key_reset(key, n + 1); |
return key_reset(key, n + 1); |
| 407 |
} |
} |
| 464 |
|
|
| 465 |
if (kcls[n].map[key[n]]) |
if (kcls[n].map[key[n]]) |
| 466 |
{ |
{ |
| 467 |
|
/* MAKAI start */ |
| 468 |
|
#ifndef ALLKEY |
| 469 |
key_make_map(key, n); |
key_make_map(key, n); |
| 470 |
|
#endif /* not ALLKEY */ |
| 471 |
|
/* MAKAI end */ |
| 472 |
key_reset(key, n + 1); |
key_reset(key, n + 1); |
| 473 |
return 1; |
return 1; |
| 474 |
} |
} |
| 498 |
} |
} |
| 499 |
} |
} |
| 500 |
|
|
| 501 |
|
/* MAKAI start */ |
| 502 |
|
#ifdef ALLKEY |
| 503 |
|
{ |
| 504 |
|
int idx; |
| 505 |
|
kcls[0].map[0] = 0; |
| 506 |
|
for ( idx = 1; idx < 8; idx++ ) { |
| 507 |
|
for ( i = 0; i < 256; i++ ) { |
| 508 |
|
unsigned bm = 0; |
| 509 |
|
|
| 510 |
|
for ( j = 0; j < 256; j++ ) { |
| 511 |
|
bm |= cp932[256 * i + j]; |
| 512 |
|
} |
| 513 |
|
kcls[idx].map[i] = bm & (KCLS_AN | KCLS_KA | KCLS_K1); |
| 514 |
|
if ( i > 128 ) { |
| 515 |
|
kcls[idx].map[i - 128] |= kcls[idx].map[i]; |
| 516 |
|
} |
| 517 |
|
} |
| 518 |
|
} |
| 519 |
|
} |
| 520 |
|
#endif /* ALLKEY */ |
| 521 |
|
/* MAKAI end */ |
| 522 |
|
|
| 523 |
key_reset(key, 0); |
key_reset(key, 0); |
| 524 |
} |
} |
| 525 |
|
|
| 669 |
|
|
| 670 |
r = vfprintf(ofp, fmt, ap); |
r = vfprintf(ofp, fmt, ap); |
| 671 |
va_end(ap); |
va_end(ap); |
| 672 |
|
#ifdef HITEXIT |
| 673 |
|
exit( 0 ); |
| 674 |
|
#endif /* HITEXIT */ |
| 675 |
if (r > 0) |
if (r > 0) |
| 676 |
return r; |
return r; |
| 677 |
perror("log_printf"); |
perror("log_printf"); |
| 1605 |
*/ |
*/ |
| 1606 |
int i; |
int i; |
| 1607 |
|
|
| 1608 |
for ( i = 0; i < 2000; i++ ) { |
for ( i = 0; i < 100000; i++ ) { |
| 1609 |
printf( "%02x %02x %02x %02x %02x %02x %02x %02x\n", |
printf( "%02x %02x %02x %02x %02x %02x %02x %02x\n", |
| 1610 |
key[0], key[1], key[2], key[3], key[4], key[5], key[6], key[7] ); |
key[0], key[1], key[2], key[3], key[4], key[5], key[6], key[7] ); |
| 1611 |
key_init(key); |
key_init(key); |
| 2004 |
buf[8] = ( buf[8] & - ( 1 << N_STRIDE ) & 0x7F ) + ALU_BITS * kk + k; |
buf[8] = ( buf[8] & - ( 1 << N_STRIDE ) & 0x7F ) + ALU_BITS * kk + k; |
| 2005 |
if ( cr ) fprintf( stderr, "\n" ); |
if ( cr ) fprintf( stderr, "\n" ); |
| 2006 |
cr = 0; |
cr = 0; |
| 2007 |
|
/* MAKAI start */ |
| 2008 |
|
#ifdef ALLKEY |
| 2009 |
|
strcpy( buf2, "全空間です" ); |
| 2010 |
|
#else /* ALLKEY */ |
| 2011 |
if ( translate( buf+1, 0, 1 ) ) { |
if ( translate( buf+1, 0, 1 ) ) { |
| 2012 |
strcpy( buf2, buf ); |
strcpy( buf2, buf ); |
| 2013 |
} else { |
} else { |
| 2014 |
strcpy( buf2, "残念でした" ); |
strcpy( buf2, "残念でした" ); |
| 2015 |
} |
} |
| 2016 |
|
#endif /* ALLKEY */ |
| 2017 |
|
/* MAKAI end */ |
| 2018 |
log_printf( rfp, "◆%s %s" |
log_printf( rfp, "◆%s %s" |
| 2019 |
"\t%04d/%02d/%02d %02d:%02d:%02d.%03d" |
"\t%04d/%02d/%02d %02d:%02d:%02d.%03d" |
| 2020 |
"\t(%02X %02X %02X %02X %02X %02X %02X %02X/%02X) %s\n", |
"\t(%02X %02X %02X %02X %02X %02X %02X %02X/%02X) %s\n", |
| 2041 |
buf[8] = ( buf[8] & - ( 1 << N_STRIDE ) & 0x7F ) + ALU_BITS * kk + k; |
buf[8] = ( buf[8] & - ( 1 << N_STRIDE ) & 0x7F ) + ALU_BITS * kk + k; |
| 2042 |
if ( cr ) fprintf( stderr, "\n" ); |
if ( cr ) fprintf( stderr, "\n" ); |
| 2043 |
cr = 0; |
cr = 0; |
| 2044 |
|
/* MAKAI start */ |
| 2045 |
|
#ifdef ALLKEY |
| 2046 |
|
strcpy( buf2, "全空間です" ); |
| 2047 |
|
#else /* ALLKEY */ |
| 2048 |
if ( translate( buf+1, 0, 1 ) ) { |
if ( translate( buf+1, 0, 1 ) ) { |
| 2049 |
strcpy( buf2, buf ); |
strcpy( buf2, buf ); |
| 2050 |
} else { |
} else { |
| 2051 |
strcpy( buf2, "残念でした" ); |
strcpy( buf2, "残念でした" ); |
| 2052 |
} |
} |
| 2053 |
|
#endif /* ALLKEY */ |
| 2054 |
|
/* MAKAI end */ |
| 2055 |
log_printf( lfp, "◆%s %s" |
log_printf( lfp, "◆%s %s" |
| 2056 |
"\t%04d/%02d/%02d %02d:%02d:%02d.%03d" |
"\t%04d/%02d/%02d %02d:%02d:%02d.%03d" |
| 2057 |
"\t(%02X %02X %02X %02X %02X %02X %02X %02X/%02X) %s\n", |
"\t(%02X %02X %02X %02X %02X %02X %02X %02X/%02X) %s\n", |
| 2133 |
if (cr) |
if (cr) |
| 2134 |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
| 2135 |
cr = 0; |
cr = 0; |
| 2136 |
|
/* MAKAI start */ |
| 2137 |
|
#ifdef ALLKEY |
| 2138 |
|
strcpy( buf2, "全空間です" ); |
| 2139 |
|
#else /* ALLKEY */ |
| 2140 |
if (translate(buf, 0, 1)) { |
if (translate(buf, 0, 1)) { |
| 2141 |
buf2[0] = '#'; |
buf2[0] = '#'; |
| 2142 |
strcpy( buf2+1, buf ); |
strcpy( buf2+1, buf ); |
| 2143 |
} else { |
} else { |
| 2144 |
strcpy( buf2, "残念でした" ); |
strcpy( buf2, "残念でした" ); |
| 2145 |
} |
} |
| 2146 |
|
#endif /* ALLKEY */ |
| 2147 |
|
/* MAKAI end */ |
| 2148 |
log_printf(ofp, "◆%s %s" |
log_printf(ofp, "◆%s %s" |
| 2149 |
"\t%04d/%02d/%02d %02d:%02d:%02d.%03d" |
"\t%04d/%02d/%02d %02d:%02d:%02d.%03d" |
| 2150 |
"\t(%02X %02X %02X %02X %02X %02X %02X %02X/%02X) %02d\n", |
"\t(%02X %02X %02X %02X %02X %02X %02X %02X/%02X) %02d\n", |