New cipher.
authormdw <mdw>
Sat, 17 Jun 2000 12:11:49 +0000 (12:11 +0000)
committermdw <mdw>
Sat, 17 Jun 2000 12:11:49 +0000 (12:11 +0000)
16 files changed:
seal.c [new file with mode: 0644]
seal.h [new file with mode: 0644]
serpent-check.c [new file with mode: 0644]
serpent-sbox.h [new file with mode: 0644]
serpent.c [new file with mode: 0644]
serpent.h [new file with mode: 0644]
tests/cast128 [new file with mode: 0644]
tests/cast256.aes [new file with mode: 0644]
tests/rc2 [new file with mode: 0644]
tests/rijndael.aes [new file with mode: 0644]
tests/seal [new file with mode: 0644]
tests/serpent.aes [new file with mode: 0644]
tests/twofish.aes [new file with mode: 0644]
twofish-mktab.c [new file with mode: 0644]
twofish.c [new file with mode: 0644]
twofish.h [new file with mode: 0644]

diff --git a/seal.c b/seal.c
new file mode 100644 (file)
index 0000000..92901b1
--- /dev/null
+++ b/seal.c
@@ -0,0 +1,624 @@
+/* -*-c-*-
+ *
+ * $Id: seal.c,v 1.1 2000/06/17 12:08:34 mdw Exp $
+ *
+ * The SEAL pseudo-random function family
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: seal.c,v $
+ * Revision 1.1  2000/06/17 12:08:34  mdw
+ * New cipher.
+ *
+ */
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <assert.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <mLib/bits.h>
+
+#include "arena.h"
+#include "gcipher.h"
+#include "grand.h"
+#include "paranoia.h"
+#include "seal.h"
+#include "sha.h"
+
+/*----- Global variables --------------------------------------------------*/
+
+const octet seal_keysz[] = { KSZ_ANY, SHA_HASHSZ };
+
+/*----- Main code ---------------------------------------------------------*/
+
+/* --- @gamma@ --- *
+ *
+ * Arguments:  @uint32 *p@ = output table
+ *             @size_t sz@ = size of the output table
+ *             @const void *k@ = pointer to key material
+ *             @unsigned i@ = integer offset
+ *
+ * Returns:    ---
+ *
+ * Use:                Initializes a SEAL key table.
+ */
+
+static void gamma(uint32 *p, size_t sz, const void *k, unsigned i)
+{
+  uint32 buf[80] = { 0 };
+  const octet *kk = k;
+  uint32 aa = LOAD32(kk);
+  uint32 bb = LOAD32(kk + 4);
+  uint32 cc = LOAD32(kk + 8);
+  uint32 dd = LOAD32(kk + 12);
+  uint32 ee = LOAD32(kk + 16);
+
+  unsigned skip = i % 5;
+  i /= 5;
+
+  /* --- While there's hashing to do, do hashing --- */
+
+  while (sz) {
+    uint32 a = aa, b = bb, c = cc, d = dd, e = ee;
+    int j;
+
+    /* --- Initialize and expand the buffer --- */
+
+    buf[0] = i++;
+
+    for (j = 16; j < 80; j++) {
+      uint32 x = buf[j - 3] ^ buf[j - 8] ^ buf[j - 14] ^ buf[j - 16];
+      buf[j] = ROL32(x, 1);
+    }
+
+    /* --- Definitions for round functions --- */
+
+#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
+#define G(x, y, z) ((x) ^ (y) ^ (z))
+#define H(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
+
+#define T(v, w, x, y, z, i, f, k) do {                                 \
+  uint32 _x;                                                           \
+  z = ROL32(v, 5) + f(w, x, y) + z + buf[i] + k;                       \
+  w = ROR32(w, 2);                                                     \
+  _x = v; v = z; z = y; y = x; x = w; w = _x;                          \
+} while (0)
+
+#define FF(v, w, x, y, z, i) T(v, w, x, y, z, i, F, 0x5a827999)
+#define GG(v, w, x, y, z, i) T(v, w, x, y, z, i, G, 0x6ed9eba1)
+#define HH(v, w, x, y, z, i) T(v, w, x, y, z, i, H, 0x8f1bbcdc)
+#define II(v, w, x, y, z, i) T(v, w, x, y, z, i, G, 0xca62c1d6)
+
+    /* --- The main compression function --- *
+     *
+     * Since this isn't doing bulk hashing, do it the easy way.
+     */
+
+    for (j = 0; j < 20; j++)
+      FF(a, b, c, d, e, j);
+    for (j = 20; j < 40; j++)
+      GG(a, b, c, d, e, j);
+    for (j = 40; j < 60; j++)
+      HH(a, b, c, d, e, j);
+    for (j = 60; j < 80; j++)
+      II(a, b, c, d, e, j);
+
+    /* --- Do the chaining at the end --- */
+
+    a += aa; b += bb; c += cc; d += dd; e += ee;
+
+    /* --- Write to the output buffer --- */
+
+    switch (skip) {
+      case 0:
+       if (sz) { *p++ = a; sz--; }
+      case 1:
+       if (sz) { *p++ = b; sz--; }
+      case 2:
+       if (sz) { *p++ = c; sz--; }
+      case 3:
+       if (sz) { *p++ = d; sz--; }
+      case 4:
+       if (sz) { *p++ = e; sz--; }
+       skip = 0;
+    }
+  }  
+}
+
+/* --- @seal_initkey@ --- *
+ *
+ * Arguments:  @seal_key *k@ = pointer to key block
+ *             @const void *buf@ = pointer to key material
+ *             @size_t sz@ = size of the key material
+ *
+ * Returns:    ---
+ *
+ * Use:                Initializes a SEAL key block.  The key material may be any
+ *             size, but if it's not 20 bytes long it's passed to SHA for
+ *             hashing first.
+ */
+
+void seal_initkey(seal_key *k, const void *buf, size_t sz)
+{
+  /* --- Hash the key if it's the wrong size --- */
+
+  if (sz == SHA_HASHSZ)
+    memcpy(k->k, buf, sizeof(k->k));
+  else {
+    sha_ctx c;
+    sha_init(&c);
+    sha_hash(&c, buf, sz);
+    sha_done(&c, k->k);
+  }
+
+  /* --- Expand the key to fit the various tables --- */
+
+  gamma(k->t, 512, k->k, 0);
+  gamma(k->s, 256, k->k, 0x1000);
+  gamma(k->r, SEAL_R, k->k, 0x2000);
+}
+
+/* --- @seal_reset@ --- *
+ *
+ * Arguments:  @seal_ctx *c@ = pointer to a SEAL context
+ *
+ * Returns:    ---
+ *
+ * Use:                Resets the context so that more data can be extracted from
+ *             it.
+ */
+
+static void seal_reset(seal_ctx *c)
+{
+  seal_key *k = c->k;
+  uint32 n = c->n;
+  uint32 A, B, C, D;
+  unsigned p;
+
+  /* --- Initialize the new chaining variables --- */
+
+  if (c->l >= SEAL_R) {
+    gamma(c->rbuf, SEAL_R, k->k, c->ri);
+    c->ri += SEAL_R;
+    c->l = 0;
+    c->r = c->rbuf;
+  }
+
+  A = n ^ c->r[0];
+  B = ROR32(n,  8) ^ c->r[1];
+  C = ROR32(n, 16) ^ c->r[2];
+  D = ROR32(n, 24) ^ c->r[3];
+  c->l += 4;
+  c->r += 4;
+
+  /* --- Ensure that everything is sufficiently diffused --- */
+
+  p = A & 0x7fc; B += k->t[p >> 2]; A = ROR32(A, 9);
+  p = B & 0x7fc; C += k->t[p >> 2]; B = ROR32(B, 9);
+  p = C & 0x7fc; D += k->t[p >> 2]; C = ROR32(C, 9);
+  p = D & 0x7fc; A += k->t[p >> 2]; D = ROR32(D, 9);
+  p = A & 0x7fc; B += k->t[p >> 2]; A = ROR32(A, 9);
+  p = B & 0x7fc; C += k->t[p >> 2]; B = ROR32(B, 9);
+  p = C & 0x7fc; D += k->t[p >> 2]; C = ROR32(C, 9);
+  p = D & 0x7fc; A += k->t[p >> 2]; D = ROR32(D, 9);
+
+  /* --- Write out some context --- */
+
+  c->n1 = D; c->n2 = B; c->n3 = A; c->n4 = C;
+
+  /* --- Diffuse some more --- */
+
+  p = A & 0x7fc; B += k->t[p >> 2]; A = ROR32(A, 9);
+  p = B & 0x7fc; C += k->t[p >> 2]; B = ROR32(B, 9);
+  p = C & 0x7fc; D += k->t[p >> 2]; C = ROR32(C, 9);
+  p = D & 0x7fc; A += k->t[p >> 2]; D = ROR32(D, 9);
+
+  /* --- Write out the magic numbers --- */
+
+  c->a = A; c->b = B; c->c = C; c->d = D;
+  c->i = 0;
+}
+
+/* --- @seal_initctx@ --- *
+ *
+ * Arguments:  @seal_ctx *c@ = pointer to a SEAL context
+ *             @seal_key *k@ = pointer to a SEAL key
+ *             @uint32 n@ = integer sequence number
+ *
+ * Returns:    ---
+ *
+ * Use:                Initializes a SEAL context which can be used for random
+ *             number generation or whatever.
+ */
+
+void seal_initctx(seal_ctx *c, seal_key *k, uint32 n)
+{
+  c->k = k;
+  c->n = n;
+  c->l = 0;
+  c->r = k->r;
+  c->ri = 0x2000 + SEAL_R;
+  c->qsz = 0;
+  seal_reset(c);
+}
+
+/* --- @seal_encrypt@ --- *
+ *
+ * Arguments:  @seal_ctx *c@ = pointer to a SEAL context
+ *             @const void *src@ = pointer to source data
+ *             @void *dest@ = pointer to destination data
+ *             @size_t sz@ = size of the data
+ *
+ * Returns:    ---
+ *
+ * Use:                Encrypts a block of data using SEAL.  If @src@ is zero,
+ *             @dest@ is filled with SEAL output.  If @dest@ is zero, the
+ *             SEAL generator is just spun around for a bit.  This shouldn't
+ *             be necessary, because SEAL isn't RC4.
+ */
+
+void seal_encrypt(seal_ctx *c, const void *src, void *dest, size_t sz)
+{
+  const octet *s = src;
+  octet *d = dest;
+
+  /* --- Expect a big dollop of bytes --- */
+
+  if (sz > c->qsz) {
+    seal_key *k = c->k;
+    uint32 A = c->a, B = c->b, C = c->c, D = c->d;
+    uint32 n1 = c->n1, n2 = c->n2, n3 = c->n3, n4 = c->n4;
+    uint32 aa, bb, cc, dd;
+    unsigned j = c->i;
+
+    /* --- Empty the queue first --- */
+
+    if (c->qsz) {
+      if (d) {
+       unsigned i;
+       octet *p = c->q + sizeof(c->q) - c->qsz;
+       for (i = 0; i < c->qsz; i++)
+         *d++ = (s ? *s++ ^ *p++ : *p++);
+      }
+      sz -= c->qsz;
+    }
+
+    /* --- Main sequence --- */
+
+    for (;;) {
+      unsigned P, Q;
+
+      /* --- Reset if we've run out of steam on this iteration --- */
+
+      if (j == 256) {
+       seal_reset(c);
+        A = c->a, B = c->b, C = c->c, D = c->d;
+       n1 = c->n1, n2 = c->n2, n3 = c->n3, n4 = c->n4;
+       j = 0;
+      }
+
+      /* --- Make some new numbers --- */
+
+      P = A & 0x7fc; B += k->t[P >> 2]; A = ROR32(A, 9); B ^= A;
+      Q = B & 0x7fc; C ^= k->t[Q >> 2]; B = ROR32(B, 9); C += B;
+      P = (P + C) & 0x7fc; D += k->t[P >> 2]; C = ROR32(C, 9); D ^= C;
+      Q = (Q + D) & 0x7fc; A ^= k->t[Q >> 2]; D = ROR32(D, 9); A += D;
+      P = (P + A) & 0x7fc; B ^= k->t[P >> 2]; A = ROR32(A, 9);
+      Q = (Q + B) & 0x7fc; C += k->t[Q >> 2]; B = ROR32(B, 9);
+      P = (P + C) & 0x7fc; D ^= k->t[P >> 2]; C = ROR32(C, 9);
+      Q = (Q + D) & 0x7fc; A += k->t[Q >> 2]; D = ROR32(D, 9);
+      
+      /* --- Remember the output and set up the next round --- */
+
+      aa = B + k->s[j + 0];
+      bb = C ^ k->s[j + 1];
+      cc = D + k->s[j + 2];
+      dd = A ^ k->s[j + 3];
+      j += 4;
+
+      if (j & 4)
+       A += n1, B += n2, C ^= n1, D ^= n2;
+      else
+       A += n3, B += n4, C ^= n3, D ^= n4;
+
+      /* --- Bail out here if we need to do buffering --- */
+
+      if (sz < 16)
+       break;
+
+      /* --- Write the next 16 bytes --- */
+
+      if (d) {
+       if (s) {
+         aa ^= LOAD32_L(s + 0);
+         bb ^= LOAD32_L(s + 4);
+         cc ^= LOAD32_L(s + 8);
+         dd ^= LOAD32_L(s + 12);
+         s += 16;
+       }
+       STORE32_L(d + 0, aa);
+       STORE32_L(d + 4, bb);
+       STORE32_L(d + 8, cc);
+       STORE32_L(d + 12, dd);
+       d += 16;
+      }
+      sz -= 16;
+    }
+
+    /* --- Write the new queue --- */
+
+    STORE32_L(c->q + 0, aa);
+    STORE32_L(c->q + 4, bb);
+    STORE32_L(c->q + 8, cc);
+    STORE32_L(c->q + 12, dd);
+    c->qsz = 16;
+
+    c->a = A; c->b = B; c->c = C; c->d = D;
+    c->i = j;
+  }
+
+  /* --- Deal with the rest from the queue --- */
+
+  if (sz) {
+    unsigned i;
+    octet *p = c->q + sizeof(c->q) - c->qsz;
+    if (d) {
+      for (i = 0; i < sz; i++)
+       *d++ = (s ? *s++ ^ *p++ : *p++);
+    }
+    c->qsz -= sz;
+  }
+}
+
+/*----- Generic cipher interface ------------------------------------------*/
+
+typedef struct gctx {
+  gcipher c;
+  seal_key k;
+  seal_ctx cc;
+} gctx;
+
+static const gcipher_ops gops;
+
+static gcipher *ginit(const void *k, size_t sz)
+{
+  gctx *g = S_CREATE(gctx);
+  g->c.ops = &gops;
+  seal_initkey(&g->k, k, sz);
+  seal_initctx(&g->cc, &g->k, 0);
+  return (&g->c);
+}
+
+static void gencrypt(gcipher *c, const void *s, void *t, size_t sz)
+{
+  gctx *g = (gctx *)c;
+  seal_encrypt(&g->cc, s, t, sz);
+}
+
+static void gsetiv(gcipher *c, const void *iv)
+{
+  gctx *g = (gctx *)c;
+  uint32 n = *(const uint32 *)iv;
+  seal_initctx(&g->cc, &g->k, n);
+}
+
+static void gdestroy(gcipher *c)
+{
+  gctx *g = (gctx *)c;
+  BURN(*g);
+  S_DESTROY(g);
+}
+
+static const gcipher_ops gops = {
+  &seal,
+  gencrypt, gencrypt, gdestroy, gsetiv, 0
+};
+
+const gccipher seal = {
+  "seal", seal_keysz, 0,
+  ginit
+};
+
+/*----- Generic random number generator interface -------------------------*/
+
+typedef struct grctx {
+  grand r;
+  seal_key k;
+  seal_ctx cc;
+} grctx;
+
+static void grdestroy(grand *r)
+{
+  grctx *g = (grctx *)r;
+  BURN(*g);
+  S_DESTROY(g);
+}
+
+static int grmisc(grand *r, unsigned op, ...)
+{
+  grctx *g = (grctx *)r;
+  va_list ap;
+  int rc = 0;
+  va_start(ap, op);
+
+  switch (op) {
+    case GRAND_CHECK:
+      switch (va_arg(ap, unsigned)) {
+       case GRAND_CHECK:
+       case GRAND_SEEDINT:
+       case GRAND_SEEDUINT32:
+       case GRAND_SEEDBLOCK:
+       case GRAND_SEEDRAND:
+         rc = 1;
+         break;
+       default:
+         rc = 0;
+         break;
+      }
+      break;
+    case GRAND_SEEDINT:
+      seal_initctx(&g->cc, &g->k, va_arg(ap, int));
+      break;
+    case GRAND_SEEDUINT32:
+      seal_initctx(&g->cc, &g->k, va_arg(ap, uint32));
+      break;
+    case GRAND_SEEDBLOCK: {
+      const void *p = va_arg(ap, const void *);
+      size_t sz = va_arg(ap, size_t);
+      uint32 n;
+      if (sz >= 4)
+       n = LOAD32_L(p);
+      else {
+       octet buf[4] = { 0 };
+       memcpy(buf, p, sz);
+       n = LOAD32_L(p);
+      }
+      seal_initctx(&g->cc, &g->k, n);
+    } break;
+    case GRAND_SEEDRAND: {
+      grand *rr = va_arg(ap, grand *);
+      seal_initctx(&g->cc, &g->k, rr->ops->word(rr));
+    } break;
+    default:
+      GRAND_BADOP;
+      break;
+  }
+
+  va_end(ap);
+  return (rc);
+}
+
+static octet grbyte(grand *r)
+{
+  grctx *g = (grctx *)r;
+  octet o;
+  seal_encrypt(&g->cc, 0, &o, 1);
+  return (o);
+}
+
+static uint32 grword(grand *r)
+{
+  grctx *g = (grctx *)r;
+  octet b[4];
+  seal_encrypt(&g->cc, 0, b, 4);
+  return (LOAD32(b));
+}
+
+static void grfill(grand *r, void *p, size_t sz)
+{
+  grctx *g = (grctx *)r;
+  seal_encrypt(&g->cc, 0, p, sz);
+}
+
+static const grand_ops grops = {
+  "seal",
+  GRAND_CRYPTO, 0,
+  grmisc, grdestroy,
+  grword, grbyte, grword, grand_range, grfill
+};
+
+/* --- @seal_rand@ --- *
+ *
+ * Arguments:  @const void *k@ = pointer to key material
+ *             @size_t sz@ = size of key material
+ *             @uint32 n@ = sequence number
+ *
+ * Returns:    Pointer to generic random number generator interface.
+ *
+ * Use:                Creates a random number interface wrapper around a SEAL
+ *             pseudorandom function.
+ */
+
+grand *seal_rand(const void *k, size_t sz, uint32 n)
+{
+  grctx *g = S_CREATE(grctx);
+  g->r.ops = &grops;
+  seal_initkey(&g->k, k, sz);
+  seal_initctx(&g->cc, &g->k, n);
+  return (&g->r);
+}
+
+/*----- Test rig ----------------------------------------------------------*/
+
+#ifdef TEST_RIG
+
+#include <string.h>
+
+#include <mLib/testrig.h>
+
+static int verify(dstr *v)
+{
+  seal_key k;
+  seal_ctx c;
+  uint32 n = *(uint32 *)v[1].buf;
+  dstr d = DSTR_INIT;
+  dstr z = DSTR_INIT;
+  int i;
+  int ok = 1;
+
+  DENSURE(&d, v[2].len);
+  DENSURE(&z, v[2].len);
+  memset(z.buf, 0, v[2].len);
+  z.len = d.len = v[2].len;
+  seal_initkey(&k, v[0].buf, v[0].len);
+
+  for (i = 0; i < v[2].len; i++) {
+    seal_initctx(&c, &k, n);
+    seal_encrypt(&c, 0, d.buf, i);
+    seal_encrypt(&c, z.buf, d.buf + i, d.len - i);
+    if (memcmp(d.buf, v[2].buf, d.len) != 0) {
+      ok = 0;
+      printf("*** seal failure\n");
+      printf("*** k = "); type_hex.dump(&v[0], stdout); putchar('\n');
+      printf("*** n = %08lx\n", (unsigned long)n);
+      printf("*** i = %i\n", i);
+      printf("*** expected = "); type_hex.dump(&v[2], stdout); putchar('\n');
+      printf("*** computed = "); type_hex.dump(&d, stdout); putchar('\n');
+    }
+  }
+
+  dstr_destroy(&d);
+  dstr_destroy(&z);
+
+  return (ok);
+}
+
+static test_chunk defs[] = {
+  { "seal", verify, { &type_hex, &type_uint32, &type_hex, 0 } },
+  { 0, 0, { 0 } }
+};
+
+int main(int argc, char *argv[])
+{
+  test_run(argc, argv, defs, SRCDIR"/tests/seal");
+  return (0);
+}
+
+#endif
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/seal.h b/seal.h
new file mode 100644 (file)
index 0000000..62f6db9
--- /dev/null
+++ b/seal.h
@@ -0,0 +1,173 @@
+/* -*-c-*-
+ *
+ * $Id: seal.h,v 1.1 2000/06/17 12:08:34 mdw Exp $
+ *
+ * The SEAL pseudo-random function family
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: seal.h,v $
+ * Revision 1.1  2000/06/17 12:08:34  mdw
+ * New cipher.
+ *
+ */
+
+/*----- Notes on the SEAL pseudo-random function family -------------------*
+ *
+ * SEAL is a slightly odd cryptographic primitive.  It was designed by Phil
+ * Rogaway and Don Coppersmith at IBM, basically as an exercise in producing
+ * a really fast symmetric cipher of some kind.  They succeeded: SEAL is
+ * faster than the much simpler RC4.
+ *
+ * For each key, it gives you %$2^{32}$% different output streams.  This
+ * implementation imposes no length limits on the size of output streams and
+ * performs careful buffer handling to allow arbitrary amounts of data to be
+ * extracted.  In practice, extracting more than about 64K is possibly dodgy
+ * from a security point of view.
+ *
+ * SEAL is patented.
+ */
+
+#ifndef CATACOMB_SEAL_H
+#define CATACOMB_SEAL_H
+
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
+/*----- Header files ------------------------------------------------------*/
+
+#ifndef CATACOMB_GCIPHER_H
+#  include "gcipher.h"
+#endif
+
+#ifndef CATACOMB_GRAND_H
+#  include "grand.h"
+#endif
+
+/*----- Data structures ---------------------------------------------------*/
+
+#define SEAL_R 256
+
+typedef struct seal_key {
+  octet k[20];                         /* Copy of the 160-bit key */
+  uint32 t[512];                       /* Substitution table */
+  uint32 s[256];                       /* Magic for each iteration */
+  uint32 r[SEAL_R];                    /* Magic for the first 64K */
+} seal_key;
+
+typedef struct seal_ctx {
+  seal_key *k;                         /* Pointer to the key block */
+  uint32 *r, ri;                       /* Pointer to current magic */
+  uint32 n, l;                         /* Various indices into things */
+  uint32 a, b, c, d;                   /* Current chaining variables */
+  uint32 n1, n2, n3, n4;               /* Increments for the variables */
+  unsigned i;                          /* Index into current iteration */
+  octet q[16];                         /* Output buffer */
+  unsigned qsz;                                /* Number of bytes in the buffer */
+  uint32 rbuf[SEAL_R];                 /* Buffer for later magic */
+} seal_ctx;
+
+/*----- Functions provided ------------------------------------------------*/
+
+/* --- @seal_initkey@ --- *
+ *
+ * Arguments:  @seal_key *k@ = pointer to key block
+ *             @const void *buf@ = pointer to key material
+ *             @size_t sz@ = size of the key material
+ *
+ * Returns:    ---
+ *
+ * Use:                Initializes a SEAL key block.  The key material may be any
+ *             size, but if it's not 20 bytes long it's passed to SHA for
+ *             hashing first.
+ */
+
+extern void seal_initkey(seal_key */*k*/,
+                        const void */*buf*/, size_t /*sz*/);
+
+/* --- @seal_initctx@ --- *
+ *
+ * Arguments:  @seal_ctx *c@ = pointer to a SEAL context
+ *             @seal_key *k@ = pointer to a SEAL key
+ *             @uint32 n@ = integer sequence number
+ *
+ * Returns:    ---
+ *
+ * Use:                Initializes a SEAL context which can be used for random
+ *             number generation or whatever.
+ */
+
+extern void seal_initctx(seal_ctx */*c*/, seal_key */*k*/, uint32 /*n*/);
+
+/* --- @seal_encrypt@ --- *
+ *
+ * Arguments:  @seal_ctx *c@ = pointer to a SEAL context
+ *             @const void *src@ = pointer to source data
+ *             @void *dest@ = pointer to destination data
+ *             @size_t sz@ = size of the data
+ *
+ * Returns:    ---
+ *
+ * Use:                Encrypts a block of data using SEAL.  If @src@ is zero,
+ *             @dest@ is filled with SEAL output.  If @dest@ is zero, the
+ *             SEAL generator is just spun around for a bit.  This shouldn't
+ *             be necessary, because SEAL isn't RC4.
+ */
+
+extern void seal_encrypt(seal_ctx */*c*/, const void */*src*/,
+                        void */*dest*/, size_t /*sz*/);
+
+/*----- Generic cipher interface ------------------------------------------*/
+
+#define SEAL_KEYSZ 20
+extern const octet seal_keysz[];
+
+extern const gccipher seal;
+
+/*----- Generic random number generator interface -------------------------*/
+
+/* --- @seal_rand@ --- *
+ *
+ * Arguments:  @const void *k@ = pointer to key material
+ *             @size_t sz@ = size of key material
+ *             @uint32 n@ = sequence number
+ *
+ * Returns:    Pointer to generic random number generator interface.
+ *
+ * Use:                Creates a random number interface wrapper around a SEAL
+ *             pseudorandom function.
+ */
+
+extern grand *seal_rand(const void */*k*/, size_t /*sz*/, uint32 /*n*/);
+
+/*----- That's all, folks -------------------------------------------------*/
+
+#ifdef __cplusplus
+  }
+#endif
+
+#endif
diff --git a/serpent-check.c b/serpent-check.c
new file mode 100644 (file)
index 0000000..647beea
--- /dev/null
@@ -0,0 +1,109 @@
+/* -*-c-*-
+ *
+ * $Id: serpent-check.c,v 1.1 2000/06/17 12:08:43 mdw Exp $
+ *
+ * Check the Serpent S-boxes
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: serpent-check.c,v $
+ * Revision 1.1  2000/06/17 12:08:43  mdw
+ * New cipher.
+ *
+ */
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <mLib/bits.h>
+
+#include "serpent-sbox.h"
+
+/*----- S-box tables ------------------------------------------------------*/
+
+static const octet s[8][16] = {
+  {  3,  8, 15,  1, 10,  6,  5, 11, 14, 13,  4,  2,  7,  0,  9, 12 },
+  { 15, 12,  2,  7,  9,  0,  5, 10,  1, 11, 14,  8,  6, 13,  3,  4 },
+  {  8,  6,  7,  9,  3, 12, 10, 15, 13,  1, 14,  4,  0, 11,  5,  2 },
+  {  0, 15, 11,  8, 12,  9,  6,  3, 13,  1,  2,  4, 10,  7,  5, 14 },
+  {  1, 15,  8,  3, 12,  0, 11,  6,  2,  5,  4, 10,  9, 14,  7, 13 },
+  { 15,  5,  2, 11,  4, 10,  9, 12,  0,  3, 14,  8, 13,  6,  7,  1 },
+  {  7,  2, 12,  5,  8,  4,  6, 11, 14,  9,  1, 15, 13,  3, 10,  0 },
+  {  1, 13, 15,  0, 14,  8,  2, 11,  7,  4, 12, 10,  9,  3,  5,  6 }
+};
+
+/*----- Main code ---------------------------------------------------------*/
+
+/* --- @check@ --- *
+ *
+ * Arguments:  @unsigned a, b, c, d@ = four bitslice output registers
+ *             @const octet *p@ = pointer to S-box
+ *
+ * Returns:    Zero if OK, nonzero on failure.
+ *
+ * Use:                Checks that an S-box output is correct.
+ */
+
+static int check(unsigned a, unsigned b, unsigned c, unsigned d,
+                const octet *p)
+{
+  octet buf[16];
+  octet *q = buf;
+  unsigned i;
+
+  for (i = 0; i < 16; i++) {
+    *q++ = (a & 1) | ((b & 1) << 1) | ((c & 1) << 2) | ((d & 1) << 3);
+    a >>= 1; b >>= 1; c >>= 1; d >>= 1;
+  }
+  return (memcmp(buf, p, sizeof(buf)));
+}
+
+#define CHECK(i) do {                                                  \
+  unsigned a = 0xaaaa, b = 0xcccc, c = 0xf0f0, d = 0xff00;             \
+  S##i(a, b, c, d);                                                    \
+  if (check(a, b, c, d, s[i])) {                                       \
+    fprintf(stderr, "failure in S%i\n", i);                            \
+    rc = EXIT_FAILURE;                                                 \
+  }                                                                    \
+  IS##i(a, b, c, d);                                                   \
+  if (a != 0xaaaa || b != 0xcccc || c != 0xf0f0 || d != 0xff00) {      \
+    fprintf(stderr, "failure in IS%i\n", i);                           \
+    rc = EXIT_FAILURE;                                                 \
+  }                                                                    \
+} while (0)
+
+int main(void)
+{
+  int rc = 0;
+  CHECK(0); CHECK(1); CHECK(2); CHECK(3);
+  CHECK(4); CHECK(5); CHECK(6); CHECK(7);
+  return (rc);
+}
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/serpent-sbox.h b/serpent-sbox.h
new file mode 100644 (file)
index 0000000..7285bb2
--- /dev/null
@@ -0,0 +1,238 @@
+/* -*-c-*-
+ *
+ * $Id: serpent-sbox.h,v 1.1 2000/06/17 12:08:43 mdw Exp $
+ *
+ * Bitslice S-box implementations
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: serpent-sbox.h,v $
+ * Revision 1.1  2000/06/17 12:08:43  mdw
+ * New cipher.
+ *
+ */
+
+/*----- Credit where it's due ---------------------------------------------*
+ *
+ * These S-box expressions are taken from the paper `Speeding up Serpent', by
+ * Dag Arne Osvik, submitted to AES3.
+ */
+
+#ifndef CATACOMB_SERPENT_SBOX_H
+#define CATACOMB_SERPENT_SBOX_H
+
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <mLib/bits.h>
+
+/*----- Macros provided ---------------------------------------------------*/
+
+/* --- @S0@ --- */
+
+#define S0(r0, r1, r2, r3) do {                                                \
+  uint32 r4;                                                           \
+  r3 ^= r0; r4  = r1; r1 &= r3; r4 ^= r2;                              \
+  r1 ^= r0; r0 |= r3; r0 ^= r4; r4 ^= r3;                              \
+  r3 ^= r2; r2 |= r1; r2 ^= r4; r4 = ~r4;                              \
+  r4 |= r1; r1 ^= r3; r1 ^= r4; r3 |= r0;                              \
+  r1 ^= r3; r4 ^= r3;                                                  \
+  r3 = r0; r0 = r1; r1 = r4;                                           \
+} while (0)
+
+#define IS0(r0, r1, r2, r3) do {                                       \
+  uint32 r4;                                                           \
+  r2 = ~r2; r4  = r1; r1 |= r0; r4 = ~r4;                              \
+  r1 ^= r2; r2 |= r4; r1 ^= r3; r0 ^= r4;                              \
+  r2 ^= r0; r0 &= r3; r4 ^= r0; r0 |= r1;                              \
+  r0 ^= r2; r3 ^= r4; r2 ^= r1; r3 ^= r0;                              \
+  r3 ^= r1; r2 &= r3; r4 ^= r2;                                                \
+  r2 = r1; r1 = r4;                                                    \
+} while (0)
+
+/* --- @S1@ --- */
+
+#define S1(r0, r1, r2, r3) do {                                                \
+  uint32 r4;                                                           \
+  r0 = ~r0; r2 = ~r2; r4  = r0; r0 &= r1;                              \
+  r2 ^= r0; r0 |= r3; r3 ^= r2; r1 ^= r0;                              \
+  r0 ^= r4; r4 |= r1; r1 ^= r3; r2 |= r0;                              \
+  r2 &= r4; r0 ^= r1; r1 &= r2; r1 ^= r0;                              \
+  r0 &= r2; r0 ^= r4;                                                  \
+  r4 = r0; r0 = r2; r2 = r3; r3 = r1; r1 = r4;                         \
+} while (0)
+
+#define IS1(r0, r1, r2, r3) do {                                       \
+  uint32 r4;                                                           \
+  r4  = r1; r1 ^= r3; r3 &= r1; r4 ^= r2;                              \
+  r3 ^= r0; r0 |= r1; r2 ^= r3; r0 ^= r4;                              \
+  r0 |= r2; r1 ^= r3; r0 ^= r1; r1 |= r3;                              \
+  r1 ^= r0; r4 = ~r4; r4 ^= r1; r1 |= r0;                              \
+  r1 ^= r0; r1 |= r4; r3 ^= r1;                                                \
+  r1 = r0; r0 = r4; r4 = r2; r2 = r3; r3 = r4;                         \
+} while (0)
+
+/* --- @S2@ --- */
+
+#define S2(r0, r1, r2, r3) do {                                                \
+  uint32 r4;                                                           \
+  r4  = r0; r0 &= r2; r0 ^= r3; r2 ^= r1;                              \
+  r2 ^= r0; r3 |= r4; r3 ^= r1; r4 ^= r2;                              \
+  r1  = r3; r3 |= r4; r3 ^= r0; r0 &= r1;                              \
+  r4 ^= r0; r1 ^= r3; r1 ^= r4; r4 = ~r4;                              \
+  r0 = r2; r2 = r1; r1 = r3; r3 = r4;                                  \
+} while (0)
+
+#define IS2(r0, r1, r2, r3) do {                                       \
+  uint32 r4;                                                           \
+  r2 ^= r3; r3 ^= r0; r4  = r3; r3 &= r2;                              \
+  r3 ^= r1; r1 |= r2; r1 ^= r4; r4 &= r3;                              \
+  r2 ^= r3; r4 &= r0; r4 ^= r2; r2 &= r1;                              \
+  r2 |= r0; r3 = ~r3; r2 ^= r3; r0 ^= r3;                              \
+  r0 &= r1; r3 ^= r4; r3 ^= r0;                                                \
+  r0 = r1; r1 = r4;                                                    \
+} while (0)
+
+/* --- @S3@ --- */
+
+#define S3(r0, r1, r2, r3) do {                                                \
+  uint32 r4;                                                           \
+  r4  = r0; r0 |= r3; r3 ^= r1; r1 &= r4;                              \
+  r4 ^= r2; r2 ^= r3; r3 &= r0; r4 |= r1;                              \
+  r3 ^= r4; r0 ^= r1; r4 &= r0; r1 ^= r3;                              \
+  r4 ^= r2; r1 |= r0; r1 ^= r2; r0 ^= r3;                              \
+  r2  = r1; r1 |= r3; r1 ^= r0;                                                \
+  r0 = r1; r1 = r2; r2 = r3; r3 = r4;                                  \
+} while (0)
+
+#define IS3(r0, r1, r2, r3) do {                                       \
+  uint32 r4;                                                           \
+  r4  = r2; r2 ^= r1; r0 ^= r2; r4 &= r2;                              \
+  r4 ^= r0; r0 &= r1; r1 ^= r3; r3 |= r4;                              \
+  r2 ^= r3; r0 ^= r3; r1 ^= r4; r3 &= r2;                              \
+  r3 ^= r1; r1 ^= r0; r1 |= r2; r0 ^= r3;                              \
+  r1 ^= r4; r0 ^= r1;                                                  \
+  r4 = r0; r0 = r2; r2 = r3; r3 = r4;                                  \
+} while (0)
+
+/* --- @S4@ --- */
+
+#define S4(r0, r1, r2, r3) do {                                                \
+  uint32 r4;                                                           \
+  r1 ^= r3; r3 = ~r3; r2 ^= r3; r3 ^= r0;                              \
+  r4  = r1; r1 &= r3; r1 ^= r2; r4 ^= r3;                              \
+  r0 ^= r4; r2 &= r4; r2 ^= r0; r0 &= r1;                              \
+  r3 ^= r0; r4 |= r1; r4 ^= r0; r0 |= r3;                              \
+  r0 ^= r2; r2 &= r3; r0 = ~r0; r4 ^= r2;                              \
+  r2 = r0; r0 = r1; r1 = r4;                                           \
+} while (0)
+
+#define IS4(r0, r1, r2, r3) do {                                       \
+  uint32 r4;                                                           \
+  r4  = r2; r2 &= r3; r2 ^= r1; r1 |= r3;                              \
+  r1 &= r0; r4 ^= r2; r4 ^= r1; r1 &= r2;                              \
+  r0 = ~r0; r3 ^= r4; r1 ^= r3; r3 &= r0;                              \
+  r3 ^= r2; r0 ^= r1; r2 &= r0; r3 ^= r0;                              \
+  r2 ^= r4, r2 |= r3; r3 ^= r0; r2 ^= r1;                              \
+  r1 = r3; r3 = r4;                                                    \
+} while (0)
+
+/* --- @S5@ --- */
+
+#define S5(r0, r1, r2, r3) do {                                                \
+  uint32 r4;                                                           \
+  r0 ^= r1; r1 ^= r3; r3 = ~r3; r4  = r1;                              \
+  r1 &= r0; r2 ^= r3; r1 ^= r2; r2 |= r4;                              \
+  r4 ^= r3; r3 &= r1; r3 ^= r0; r4 ^= r1;                              \
+  r4 ^= r2; r2 ^= r0; r0 &= r3; r2 = ~r2;                              \
+  r0 ^= r4; r4 |= r3; r2 ^= r4;                                                \
+  r4 = r3; r3 = r2; r2 = r0; r0 = r1; r1 = r4;                         \
+} while (0)
+
+#define IS5(r0, r1, r2, r3) do {                                       \
+  uint32 r4;                                                           \
+  r1 = ~r1; r4  = r3; r2 ^= r1; r3 |= r0;                              \
+  r3 ^= r2; r2 |= r1; r2 &= r0; r4 ^= r3;                              \
+  r2 ^= r4; r4 |= r0; r4 ^= r1; r1 &= r2;                              \
+  r1 ^= r3; r4 ^= r2; r3 &= r4; r4 ^= r1;                              \
+  r3 ^= r4; r4 = ~r4; r3 ^= r0;                                                \
+  r0 = r1; r1 = r4; r4 = r3; r3 = r2; r2 = r4;                         \
+} while (0)
+
+/* --- @S6@ --- */
+
+#define S6(r0, r1, r2, r3) do {                                                \
+  uint32 r4;                                                           \
+  r2 = ~r2; r4  = r3; r3 &= r0; r0 ^= r4;                              \
+  r3 ^= r2; r2 |= r4; r1 ^= r3; r2 ^= r0;                              \
+  r0 |= r1; r2 ^= r1; r4 ^= r0; r0 |= r3;                              \
+  r0 ^= r2; r4 ^= r3; r4 ^= r0; r3 = ~r3;                              \
+  r2 &= r4; r2 ^= r3;                                                  \
+  r3 = r2; r2 = r4;                                                    \
+} while (0)
+
+#define IS6(r0, r1, r2, r3) do {                                       \
+  uint32 r4;                                                           \
+  r0 ^= r2; r4  = r2; r2 &= r0; r4 ^= r3;                              \
+  r2 = ~r2; r3 ^= r1; r2 ^= r3; r4 |= r0;                              \
+  r0 ^= r2; r3 ^= r4; r4 ^= r1; r1 &= r3;                              \
+  r1 ^= r0; r0 ^= r3; r0 |= r2; r3 ^= r1;                              \
+  r4 ^= r0;                                                            \
+  r0 = r1; r1 = r2; r2 = r4;                                           \
+} while (0)
+
+/* --- @S7@ --- */
+
+#define S7(r0, r1, r2, r3) do {                                                \
+  uint32 r4;                                                           \
+  r4  = r1; r1 |= r2; r1 ^= r3; r4 ^= r2;                              \
+  r2 ^= r1; r3 |= r4; r3 &= r0; r4 ^= r2;                              \
+  r3 ^= r1; r1 |= r4; r1 ^= r0; r0 |= r4;                              \
+  r0 ^= r2; r1 ^= r4; r2 ^= r1; r1 &= r0;                              \
+  r1 ^= r4; r2 = ~r2; r2 |= r0; r4 ^= r2;                              \
+  r2 = r1; r1 = r3; r3 = r0; r0 = r4;                                  \
+} while (0)
+
+#define IS7(r0, r1, r2, r3) do {                                       \
+  uint32 r4;                                                           \
+  r4  = r2; r2 ^= r0; r0 &= r3; r4 |= r3;                              \
+  r2 = ~r2; r3 ^= r1; r1 |= r0; r0 ^= r2;                              \
+  r2 &= r4; r3 &= r4; r1 ^= r2; r2 ^= r0;                              \
+  r0 |= r2; r4 ^= r1; r0 ^= r3; r3 ^= r4;                              \
+  r4 |= r0; r3 ^= r2; r4 ^= r2;                                                \
+  r2 = r1; r1 = r0; r0 = r3; r3 = r4;                                  \
+} while (0)
+
+/*----- That's all, folks -------------------------------------------------*/
+
+#ifdef __cplusplus
+  }
+#endif
+
+#endif
diff --git a/serpent.c b/serpent.c
new file mode 100644 (file)
index 0000000..d04d65b
--- /dev/null
+++ b/serpent.c
@@ -0,0 +1,223 @@
+/* -*-c-*-
+ *
+ * $Id: serpent.c,v 1.1 2000/06/17 12:08:43 mdw Exp $
+ *
+ * The Serpent block cipher
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: serpent.c,v $
+ * Revision 1.1  2000/06/17 12:08:43  mdw
+ * New cipher.
+ *
+ */
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <assert.h>
+#include <stdio.h>
+
+#include <mLib/bits.h>
+
+#include "blkc.h"
+#include "gcipher.h"
+#include "serpent.h"
+#include "serpent-sbox.h"
+
+/*----- Global variables --------------------------------------------------*/
+
+const octet serpent_keysz[] = { KSZ_RANGE, SERPENT_KEYSZ, 0, 32, 1 };
+
+/*----- Main code ---------------------------------------------------------*/
+
+/* --- @serpent_init@ --- *
+ *
+ * Arguments:  @serpent_ctx *k@ = pointer to context block to initialize
+ *             @const void *buf@ = pointer to input buffer
+ *             @size_t sz@ = size of input buffer
+ *
+ * Returns:    ---
+ *
+ * Use:                Initializes a Serpent context.  The key may be any length of
+ *             up to 32 bytes (256 bits).
+ */
+
+void serpent_init(serpent_ctx *k, const void *buf, size_t sz)
+{
+  uint32 a;
+  unsigned b;
+  const octet *p, *q;
+  size_t i;
+  uint32 pk[8 + 132];
+
+  KSZ_ASSERT(serpent, sz);
+
+  /* --- Read the key into the buffer --- */
+
+  if (sz > 32)
+    sz = 32;
+  i = 0; p = buf; q = p + sz;
+  a = 0; b = 0;
+  while (p < q) {
+    a |= (uint32)*p++ << b;
+    b += 8;
+    if (b == 32) {
+      pk[i++] = a;
+      a = 0; b = 0;
+    }
+  }
+
+  /* --- Pad short keys --- */
+
+  if (i < 8) {
+    a |= 0x01 << b;
+    b += 8;
+    pk[i++] = a;
+    for (; i < 8; i++)
+      pk[i] = 0;
+  }
+
+  /* --- Expand the prekeys to fill the buffer --- */
+
+  for (i = 8; i < 8 + 132; i++) {
+    uint32 x = (pk[i - 8] ^ pk[i - 5] ^ pk[i - 3] ^ pk[i - 1] ^
+               (i - 8) ^ 0x9e3779b9);
+    k->k[i - 8] = pk[i] = ROL32(x, 11);
+  }
+
+  /* --- Now substitute everything --- */
+
+  i = 0;
+  goto midway;
+  while (i < 132) {
+#define KSUB(r) do {                                                   \
+    uint32 a, b, c, d;                                                 \
+    a = k->k[i]; b = k->k[i + 1]; c = k->k[i + 2]; d = k->k[i + 3];    \
+    S##r(a, b, c, d);                                                  \
+    k->k[i] = a; k->k[i + 1] = b; k->k[i + 2] = c; k->k[i + 3] = d;    \
+    i += 4;                                                            \
+} while (0)
+    KSUB(2); KSUB(1); KSUB(0); KSUB(7);
+    KSUB(6); KSUB(5); KSUB(4);
+  midway:
+    KSUB(3);
+#undef KSUB
+  }
+}
+
+/* --- @serpent_eblk@, @serpent_dblk@ --- *
+ *
+ * Arguments:  @const serpent_ctx *k@ = pointer to key context
+ *             @const uint32 s[4]@ = pointer to source block
+ *             @uint32 d[4]@ = pointer to destination block
+ *
+ * Returns:    ---
+ *
+ * Use:                Low-level block encryption.
+ */
+
+#define EROUND(a, b, c, d, r, k) do {                                  \
+  a ^= *k++; b ^= *k++; c ^= *k++; d ^= *k++;                          \
+  S##r(a, b, c, d);                                                    \
+  a = ROL32(a, 13); c = ROL32(c,  3); b ^= a ^ c; d ^= c ^ (a << 3);   \
+  b = ROL32(b,  1); d = ROL32(d,  7); a ^= b ^ d; c ^= d ^ (b << 7);   \
+  a = ROL32(a,  5); c = ROL32(c, 22);                                  \
+} while (0)
+
+#define DROUND(a, b, c, d, r, k) do {                                  \
+  IS##r(a, b, c, d);                                                   \
+  d ^= *--k; c ^= *--k; b ^= *--k; a ^= *--k;                          \
+  a = ROR32(a,  5); c = ROR32(c, 22); a ^= b ^ d; c ^= d ^ (b << 7);   \
+  b = ROR32(b,  1); d = ROR32(d,  7); b ^= a ^ c; d ^= c ^ (a << 3);   \
+  a = ROR32(a, 13); c = ROR32(c,  3);                                  \
+} while (0)
+
+void serpent_eblk(const serpent_ctx *k, const uint32 *s, uint32 *d)
+{
+  uint32 aa = s[0], bb = s[1], cc = s[2], dd = s[3];
+  const uint32 *kk = k->k;
+
+  EROUND(aa, bb, cc, dd, 0, kk); EROUND(aa, bb, cc, dd, 1, kk);
+  EROUND(aa, bb, cc, dd, 2, kk); EROUND(aa, bb, cc, dd, 3, kk);
+  EROUND(aa, bb, cc, dd, 4, kk); EROUND(aa, bb, cc, dd, 5, kk);
+  EROUND(aa, bb, cc, dd, 6, kk); EROUND(aa, bb, cc, dd, 7, kk);
+
+  EROUND(aa, bb, cc, dd, 0, kk); EROUND(aa, bb, cc, dd, 1, kk);
+  EROUND(aa, bb, cc, dd, 2, kk); EROUND(aa, bb, cc, dd, 3, kk);
+  EROUND(aa, bb, cc, dd, 4, kk); EROUND(aa, bb, cc, dd, 5, kk);
+  EROUND(aa, bb, cc, dd, 6, kk); EROUND(aa, bb, cc, dd, 7, kk);
+
+  EROUND(aa, bb, cc, dd, 0, kk); EROUND(aa, bb, cc, dd, 1, kk);
+  EROUND(aa, bb, cc, dd, 2, kk); EROUND(aa, bb, cc, dd, 3, kk);
+  EROUND(aa, bb, cc, dd, 4, kk); EROUND(aa, bb, cc, dd, 5, kk);
+  EROUND(aa, bb, cc, dd, 6, kk); EROUND(aa, bb, cc, dd, 7, kk);
+
+  EROUND(aa, bb, cc, dd, 0, kk); EROUND(aa, bb, cc, dd, 1, kk);
+  EROUND(aa, bb, cc, dd, 2, kk); EROUND(aa, bb, cc, dd, 3, kk);
+  EROUND(aa, bb, cc, dd, 4, kk); EROUND(aa, bb, cc, dd, 5, kk);
+  EROUND(aa, bb, cc, dd, 6, kk);
+
+  aa ^= *kk++; bb ^= *kk++; cc ^= *kk++; dd ^= *kk++;
+  S7(aa, bb, cc, dd);
+  aa ^= *kk++; bb ^= *kk++; cc ^= *kk++; dd ^= *kk++;
+  d[0] = aa; d[1] = bb; d[2] = cc; d[3] = dd;
+}
+
+void serpent_dblk(const serpent_ctx *k, const uint32 *s, uint32 *d)
+{
+  uint32 aa = s[0], bb = s[1], cc = s[2], dd = s[3];
+  const uint32 *kk = k->k + 132;
+
+  dd ^= *--kk; cc ^= *--kk; bb ^= *--kk; aa ^= *--kk;
+
+  DROUND(aa, bb, cc, dd, 7, kk); DROUND(aa, bb, cc, dd, 6, kk);
+  DROUND(aa, bb, cc, dd, 5, kk); DROUND(aa, bb, cc, dd, 4, kk);
+  DROUND(aa, bb, cc, dd, 3, kk); DROUND(aa, bb, cc, dd, 2, kk);
+  DROUND(aa, bb, cc, dd, 1, kk); DROUND(aa, bb, cc, dd, 0, kk);
+
+  DROUND(aa, bb, cc, dd, 7, kk); DROUND(aa, bb, cc, dd, 6, kk);
+  DROUND(aa, bb, cc, dd, 5, kk); DROUND(aa, bb, cc, dd, 4, kk);
+  DROUND(aa, bb, cc, dd, 3, kk); DROUND(aa, bb, cc, dd, 2, kk);
+  DROUND(aa, bb, cc, dd, 1, kk); DROUND(aa, bb, cc, dd, 0, kk);
+
+  DROUND(aa, bb, cc, dd, 7, kk); DROUND(aa, bb, cc, dd, 6, kk);
+  DROUND(aa, bb, cc, dd, 5, kk); DROUND(aa, bb, cc, dd, 4, kk);
+  DROUND(aa, bb, cc, dd, 3, kk); DROUND(aa, bb, cc, dd, 2, kk);
+  DROUND(aa, bb, cc, dd, 1, kk); DROUND(aa, bb, cc, dd, 0, kk);
+
+  DROUND(aa, bb, cc, dd, 7, kk); DROUND(aa, bb, cc, dd, 6, kk);
+  DROUND(aa, bb, cc, dd, 5, kk); DROUND(aa, bb, cc, dd, 4, kk);
+  DROUND(aa, bb, cc, dd, 3, kk); DROUND(aa, bb, cc, dd, 2, kk);
+  DROUND(aa, bb, cc, dd, 1, kk);
+
+  IS0(aa, bb, cc, dd);
+  dd ^= *--kk; cc ^= *--kk; bb ^= *--kk; aa ^= *--kk;
+  d[0] = aa; d[1] = bb; d[2] = cc; d[3] = dd;
+}
+
+BLKC_TEST(SERPENT, serpent)
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/serpent.h b/serpent.h
new file mode 100644 (file)
index 0000000..6f1458a
--- /dev/null
+++ b/serpent.h
@@ -0,0 +1,114 @@
+/* -*-c-*-
+ *
+ * $Id: serpent.h,v 1.1 2000/06/17 12:08:43 mdw Exp $
+ *
+ * The Serpent block cipher
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: serpent.h,v $
+ * Revision 1.1  2000/06/17 12:08:43  mdw
+ * New cipher.
+ *
+ */
+
+/*----- Notes on the Serpent block cipher ---------------------------------*
+ *
+ * Serpent was designed  and proposed for the AES contest by Ross Anderson,
+ * Eli Biham and Lars Knudsen.  It's not particularly quick, but is
+ * stunningly secure.  The best differential and linear attacks are
+ * speculated to require %$2^{256}$% texts (it's a 128-bit block cipher).
+ * The designers originally intended to file a patent, but failed to persue
+ * it.  Use of the algorithm is completely unencumbered.
+ */
+
+#ifndef CATACOMB_SERPENT_H
+#define CATACOMB_SERPENT_H
+
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <stddef.h>
+
+#include <mLib/bits.h>
+
+/*----- Magic numbers -----------------------------------------------------*/
+
+#define SERPENT_BLKSZ 16
+#define SERPENT_KEYSZ 32
+#define SERPENT_CLASS (N, L, 128)
+
+extern const octet serpent_keysz[];
+
+/*----- Data structures ---------------------------------------------------*/
+
+typedef struct serpent_ctx {
+  uint32 k[4 * 33];
+} serpent_ctx;
+
+/*----- Functions provided ------------------------------------------------*/
+
+/* --- @serpent_init@ --- *
+ *
+ * Arguments:  @serpent_ctx *k@ = pointer to context block to initialize
+ *             @const void *buf@ = pointer to input buffer
+ *             @size_t sz@ = size of input buffer
+ *
+ * Returns:    ---
+ *
+ * Use:                Initializes a Serpent context.  The key may be any length of
+ *             up to 32 bytes (256 bits).
+ */
+
+extern void serpent_init(serpent_ctx */*k*/,
+                        const void */*buf*/, size_t /*sz*/);
+
+/* --- @serpent_eblk@, @serpent_dblk@ --- *
+ *
+ * Arguments:  @const serpent_ctx *k@ = pointer to key context
+ *             @const uint32 s[4]@ = pointer to source block
+ *             @uint32 d[4]@ = pointer to destination block
+ *
+ * Returns:    ---
+ *
+ * Use:                Low-level block encryption.
+ */
+
+extern void serpent_eblk(const serpent_ctx */*k*/,
+                        const uint32 */*s*/, uint32 */*d*/);
+extern void serpent_dblk(const serpent_ctx */*k*/,
+                        const uint32 */*s*/, uint32 */*d*/);
+
+/*----- That's all, folks -------------------------------------------------*/
+
+#ifdef __cplusplus
+  }
+#endif
+
+#endif
diff --git a/tests/cast128 b/tests/cast128
new file mode 100644 (file)
index 0000000..dacd736
--- /dev/null
@@ -0,0 +1,17 @@
+# $Id: cast128,v 1.1 2000/06/17 12:11:49 mdw Exp $
+#
+# Test vectors for CAST128
+
+cast128 {
+  0123456712345678234567893456789a
+  0123456789abcdef
+  238b4fe5847e44b2;
+
+  01234567123456782345
+  0123456789abcdef
+  eb6a711a2c02271b;
+
+  0123456712
+  0123456789abcdef
+  7ac816d16e9b302e;
+}
diff --git a/tests/cast256.aes b/tests/cast256.aes
new file mode 100644 (file)
index 0000000..b8073eb
--- /dev/null
@@ -0,0 +1,3870 @@
+/* Tables Known Answer Test - ecb_tbl.txt\r
+Tables Known Answer Test.  The key was chosen arbitrarily.  The plaintext\r
+in iteration i is chosen so that the s-box entries S1[i-1], S2[i-1], S3[i-1],\r
+and S4[i-1] are needed in the first quad-round of the round function.\r
+The s-box inputs are i-1 because the iteration counter starts at 1\r
+instead of 0\r
+*/\r
+=========================\r
+\r
+FILENAME:  "ecb_tbl.txt"\r
+\r
+Electronic Codebook (ECB) Mode\r
+Tables Known Answer Test\r
+\r
+Algorithm Name: CAST-256\r
+Principal Submitter: Entrust Technologies, Inc. (represented by Carlisle Adams)\r
+\r
+==========\r
+\r
+KEYSIZE=128\r
+\r
+I=1\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000000c9b2807\r
+CT=963a8a50ceb54d08e0dee0f1d0413dcf\r
+\r
+I=2\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000001cab3817\r
+CT=8ae62c42d49a5a2d06290425b743fc53\r
+\r
+I=3\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000002cbb4827\r
+CT=8665cc6b51b46b7e9b270296c3fd2053\r
+\r
+I=4\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000003ccb5837\r
+CT=6760dc4a638060d68d70a17624747686\r
+\r
+I=5\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000004cdb6847\r
+CT=ee3ad6d4e7062d3270a123a21280afb5\r
+\r
+I=6\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000005ceb7857\r
+CT=7042f9274953f47e4b4b3bd0bd54ed30\r
+\r
+I=7\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000006cfb8867\r
+CT=e632bb93f14c636193b64861fc2732b5\r
+\r
+I=8\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000007d0b9877\r
+CT=61696ae3b63430cf8420768dccccd693\r
+\r
+I=9\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008d1ba887\r
+CT=77f3839424fb815e0b5bada740993964\r
+\r
+I=10\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009d2bb897\r
+CT=23453cfd264cf21f5eddbf7d9d353938\r
+\r
+I=11\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ad3bc8a7\r
+CT=b73e7c48980c62d9a2b345ba1099e96b\r
+\r
+I=12\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000bd4bd8b7\r
+CT=e07596c5eab5ce28fd3a95b6c5c974e1\r
+\r
+I=13\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000cd5be8c7\r
+CT=87ff726a8fc3056ef5a5bdf91b9aed28\r
+\r
+I=14\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000dd6bf8d7\r
+CT=8ee7fa9aa577b343cc6a340ed9c019ff\r
+\r
+I=15\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ed7c08e7\r
+CT=e14249fb660efd03aa62e83fff0e8c4c\r
+\r
+I=16\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000fd8c18f7\r
+CT=553343292c5176ab12e0097fa476524b\r
+\r
+I=17\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000000d9c2908\r
+CT=5cce970047262a318177c340c857daa4\r
+\r
+I=18\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000001dac3918\r
+CT=aa6089fb16d66f5398b25438d325ad5e\r
+\r
+I=19\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000002dbc4928\r
+CT=db7b0d87172eb257752b173aa404cd7e\r
+\r
+I=20\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000003dcc5938\r
+CT=8859fa546f0e12dbf8fdbd5bb1bbb98f\r
+\r
+I=21\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000004ddc6948\r
+CT=a2809130661b5e3d63a292ed5f89ab17\r
+\r
+I=22\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000005dec7958\r
+CT=eec8ad3375acf5d2bb642b73fb924f29\r
+\r
+I=23\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000006dfc8968\r
+CT=63236b6ff5f806bca4717f1b2da5b2d6\r
+\r
+I=24\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000007e0c9978\r
+CT=bbc6193c7702b6a19249b517e7638838\r
+\r
+I=25\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008e1ca988\r
+CT=7b6438823cdfad8bad258f8b5c3af34e\r
+\r
+I=26\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009e2cb998\r
+CT=012321feb509d8472b98f4ae10bc0e3c\r
+\r
+I=27\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ae3cc9a8\r
+CT=27e773c19f9d12b3bc850cc93fd8fb8f\r
+\r
+I=28\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000be4cd9b8\r
+CT=19f95ad5c376f6e0f86f11d01310d0db\r
+\r
+I=29\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ce5ce9c8\r
+CT=c227ff66588ea4057e23592e3c479764\r
+\r
+I=30\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000de6cf9d8\r
+CT=0e049f08de8bb261140150ea97614ceb\r
+\r
+I=31\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ee7d09e8\r
+CT=c89b2a9aaf74fd8d7da803fc423eed20\r
+\r
+I=32\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000fe8d19f8\r
+CT=86963f427fcf2593caa2c7dbdeef4fed\r
+\r
+I=33\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000000e9d2a09\r
+CT=5b7b25f8464e820bab65f4296a497720\r
+\r
+I=34\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000001ead3a19\r
+CT=a70905b59e2b037e8666eec5f6333c48\r
+\r
+I=35\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000002ebd4a29\r
+CT=87da3b9bdd82ca912c2fab0f5e415865\r
+\r
+I=36\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000003ecd5a39\r
+CT=cfc54e2865c1239444ec1f1b93324081\r
+\r
+I=37\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000004edd6a49\r
+CT=480a9eea7ee91f94ea8054d5770cbf2d\r
+\r
+I=38\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000005eed7a59\r
+CT=33ef67d552e448ee1f73330ab92b5f4d\r
+\r
+I=39\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000006efd8a69\r
+CT=a4f5236cc227c3d7993880b1758f1f81\r
+\r
+I=40\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000007f0d9a79\r
+CT=d429ae2a38051368f910233a532a6299\r
+\r
+I=41\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008f1daa89\r
+CT=0f355fd67524cbc28e7a53c468cda599\r
+\r
+I=42\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009f2dba99\r
+CT=f5f12d40ee0b6a1d0b96b2bb137b2e8b\r
+\r
+I=43\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000af3dcaa9\r
+CT=69d410eb43e678bf5d6451bcf898ecac\r
+\r
+I=44\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000bf4ddab9\r
+CT=44dfd59b98612f09ce82d20ad0b5abf7\r
+\r
+I=45\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000cf5deac9\r
+CT=515e8ba8f5da350750e62d8a45939bd9\r
+\r
+I=46\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000df6dfad9\r
+CT=1ef5da2c7e645ad6c1e9ae1eb3c49da7\r
+\r
+I=47\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ef7e0ae9\r
+CT=a53ca7ddb7435bb87edd150ebc47253d\r
+\r
+I=48\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ff8e1af9\r
+CT=074bcd2a74d9c09d6bd3a2e01490982f\r
+\r
+I=49\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000000f9e2b0a\r
+CT=90908811240a3014cb074abbec7b998a\r
+\r
+I=50\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000001fae3b1a\r
+CT=35e2766301377cd5ad4f7466d7b71069\r
+\r
+I=51\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000002fbe4b2a\r
+CT=86b93d8eb53858a0f0b4f361827fd290\r
+\r
+I=52\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000003fce5b3a\r
+CT=69275084579a4ac18f7b07cd039f3ac7\r
+\r
+I=53\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000004fde6b4a\r
+CT=232182d7827182af8b57a5950bb137dc\r
+\r
+I=54\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000005fee7b5a\r
+CT=af3cfd5ec3aa076242c39d64dff392ec\r
+\r
+I=55\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000006ffe8b6a\r
+CT=3b2992ddc5f43a6016a251ac2b0a4bff\r
+\r
+I=56\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000800e9b7a\r
+CT=27efdae70a91d1116267eec10ff3ee54\r
+\r
+I=57\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000901eab8a\r
+CT=52e28b80db56f959b2a4338281bd6b68\r
+\r
+I=58\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a02ebb9a\r
+CT=b2a2107f633bf9b31dac547822d4500d\r
+\r
+I=59\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b03ecbaa\r
+CT=a526943a45c24b3f14e80f62a29b71bf\r
+\r
+I=60\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c04edbba\r
+CT=7f5a09aba6cdef07299feacaf09d5675\r
+\r
+I=61\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d05eebca\r
+CT=4556ce0887027e6764702a8a5457db3f\r
+\r
+I=62\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e06efbda\r
+CT=969b05df9efe940ea9a9a38e53615427\r
+\r
+I=63\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f07f0bea\r
+CT=1f7e05f454504e9b2c0e96d7e4af4ea1\r
+\r
+I=64\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000008f1bfa\r
+CT=0f0363bc6f48c5fe8c410a90ef07a2ee\r
+\r
+I=65\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000109f2c0b\r
+CT=3d3c713d41221f50fc44aea11c16e3eb\r
+\r
+I=66\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000020af3c1b\r
+CT=fb8b685fedd99a5945403c5526b39ca4\r
+\r
+I=67\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000030bf4c2b\r
+CT=818bd817414beff07e987cf380874143\r
+\r
+I=68\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000040cf5c3b\r
+CT=58845f144ef1ee8f592171c51ab8416e\r
+\r
+I=69\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000050df6c4b\r
+CT=0c5546daa1344dd05bb10ae2152a8a11\r
+\r
+I=70\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000060ef7c5b\r
+CT=5aafbd571d5b89dd79196467cb4f57c3\r
+\r
+I=71\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000070ff8c6b\r
+CT=459120268fc2cd7e5838f60e44e00b77\r
+\r
+I=72\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000810f9c7b\r
+CT=70f671fbf9488dd94148d1cb4682fc36\r
+\r
+I=73\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000911fac8b\r
+CT=0e6f351527b0c6c8592e939eeceb7a8d\r
+\r
+I=74\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a12fbc9b\r
+CT=cdf88a6592250e1baf4d79b9f4cb1762\r
+\r
+I=75\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b13fccab\r
+CT=d14ba79673e176f8357984b41bda01d1\r
+\r
+I=76\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c14fdcbb\r
+CT=629c00e2bb919182aa4dfd1d71e580ee\r
+\r
+I=77\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d15feccb\r
+CT=ff23f27f55f12080e1032d9e21f4ab6a\r
+\r
+I=78\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e16ffcdb\r
+CT=b2d1f75b9e611e133852f641b9757b43\r
+\r
+I=79\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f1800ceb\r
+CT=a07508903950ac361351cdad1cdb63b1\r
+\r
+I=80\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000001901cfb\r
+CT=f7d0a04346aa82ea6c6ee7dfba0f4006\r
+\r
+I=81\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000011a02d0c\r
+CT=684c6725098500f925b5453b68226c7e\r
+\r
+I=82\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000021b03d1c\r
+CT=753220b99955392f7f30ede484fc2862\r
+\r
+I=83\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000031c04d2c\r
+CT=79c5dec6ac8d95059f2e21eadcd09d36\r
+\r
+I=84\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000041d05d3c\r
+CT=414bb7b17b8e980e93bf3b02ee741fc1\r
+\r
+I=85\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000051e06d4c\r
+CT=6e699cc23bb0e1cb705410d8371ee6bb\r
+\r
+I=86\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000061f07d5c\r
+CT=124c92d0b6d8f917711c04ac4b5a5387\r
+\r
+I=87\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000072008d6c\r
+CT=16937864799b52f4781ec15c67aebc27\r
+\r
+I=88\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000082109d7c\r
+CT=1e85d778246bc09286fa6dff9ceac582\r
+\r
+I=89\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009220ad8c\r
+CT=f08da5f92e5132dc9ea124587d012eb6\r
+\r
+I=90\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a230bd9c\r
+CT=26a08c2688f4306ef66b7285f6d6c3c3\r
+\r
+I=91\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b240cdac\r
+CT=e4b90dd53cdd6bfb7d6149ca8d56658e\r
+\r
+I=92\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c250ddbc\r
+CT=3075dbf5b469a64c1c64d34718b419ab\r
+\r
+I=93\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d260edcc\r
+CT=96ba1d1f6702b7875b156f8534302a18\r
+\r
+I=94\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e270fddc\r
+CT=1a38e59d37ca3e4580e334e8c7253bd2\r
+\r
+I=95\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f2810dec\r
+CT=9ee94bbff218183c9b94093f253cfd97\r
+\r
+I=96\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000002911dfc\r
+CT=df8073af7dcc6cb23678022d917a4ae4\r
+\r
+I=97\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000012a12e0d\r
+CT=6468e23fb0d2e805567d914f97643e62\r
+\r
+I=98\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000022b13e1d\r
+CT=11c10011cb5e50438b64f6bf98c3d10c\r
+\r
+I=99\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000032c14e2d\r
+CT=3ec7ea6ec0ecf592d26b0ffe53c59d48\r
+\r
+I=100\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000042d15e3d\r
+CT=d267beb7917617bfe6824cd292d618df\r
+\r
+I=101\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000052e16e4d\r
+CT=1797500d75d90df48b334e44f65d56ea\r
+\r
+I=102\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000062f17e5d\r
+CT=db8f73ca4ea5387d320114f0910829cb\r
+\r
+I=103\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000073018e6d\r
+CT=70018e6db6f4200c6c1550d227e7045d\r
+\r
+I=104\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000083119e7d\r
+CT=517fc7e1b84821481c8714692cbe8f37\r
+\r
+I=105\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009321ae8d\r
+CT=250fe8e093440b6d94480afcfc83a365\r
+\r
+I=106\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a331be9d\r
+CT=5df955cbcc7a6c9bae7b2d8bed31982c\r
+\r
+I=107\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b341cead\r
+CT=aa84ca4f1a8b4011a7b0e7c831596497\r
+\r
+I=108\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c351debd\r
+CT=8fc5d48fb825be0e56251d2d4329446b\r
+\r
+I=109\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d361eecd\r
+CT=3e697489b479ee45c4dfdb89bd3a08bb\r
+\r
+I=110\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e371fedd\r
+CT=35267d793ef4484cc4792cdfab6086b8\r
+\r
+I=111\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f3820eed\r
+CT=16f68342156ed44a7db0dbe4449df6a4\r
+\r
+I=112\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000003921efd\r
+CT=83eba48f076db9854885df48076267a8\r
+\r
+I=113\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000013a22f0e\r
+CT=ea31ee51bd4844bf6dbd656f07e8acc9\r
+\r
+I=114\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000023b23f1e\r
+CT=46e6c9236fea324f6776f86c43c1b8bb\r
+\r
+I=115\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000033c24f2e\r
+CT=a2ed742e5a0655b8816959519dd3c1fa\r
+\r
+I=116\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000043d25f3e\r
+CT=829dc58367df5721135f9dcbfe590b39\r
+\r
+I=117\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000053e26f4e\r
+CT=e6adb6c417fa61d2c19fc37f71775f03\r
+\r
+I=118\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000063f27f5e\r
+CT=360122e3028a1e7034d39dc1e19978c3\r
+\r
+I=119\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000074028f6e\r
+CT=60f662532ea9ec3b2324d81e9bfaf5cf\r
+\r
+I=120\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000084129f7e\r
+CT=65fb9a684507fb55d64ebaf6af8641a2\r
+\r
+I=121\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009422af8e\r
+CT=dbecbc459e66b7949ed17bb8be549edf\r
+\r
+I=122\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a432bf9e\r
+CT=f5cfb961a6eb2aa39c169a1871897061\r
+\r
+I=123\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b442cfae\r
+CT=3972f7e9a11019b8d71345138f27e733\r
+\r
+I=124\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c452dfbe\r
+CT=c9022a8845c673040569d93c0c4c3e04\r
+\r
+I=125\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d462efce\r
+CT=7c92d87cc16d43fcb79cc186d85beab1\r
+\r
+I=126\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e472ffde\r
+CT=c9c50c3c40afd5960e9d05b0af9ea30e\r
+\r
+I=127\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f4830fee\r
+CT=91b690049e28093102f8eb12a6052fca\r
+\r
+I=128\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000004931ffe\r
+CT=3d5ca3e413fdcc63a81cb17ff880e37c\r
+\r
+I=129\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000014a3300f\r
+CT=37a744c8b5b164a886b1a4a2135a0adf\r
+\r
+I=130\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000024b3401f\r
+CT=329633786c795a0c01fdffc6b3fad4a3\r
+\r
+I=131\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000034c3502f\r
+CT=d6f8411d99b952a2e203e403022d6b29\r
+\r
+I=132\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000044d3603f\r
+CT=b771bd9760746e63bb0d5eb65dc0501d\r
+\r
+I=133\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000054e3704f\r
+CT=7425b6cf731a4ce25e591cb313b1944c\r
+\r
+I=134\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000064f3805f\r
+CT=d20a2a1f53b4155c7beeec3b6386a633\r
+\r
+I=135\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000007503906f\r
+CT=eeebe2040aa84d96b2e6aad3e122650f\r
+\r
+I=136\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008513a07f\r
+CT=3b13ee88b32fb476688c1e99eed4d067\r
+\r
+I=137\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009523b08f\r
+CT=a1b1f6ae1586cfd4c2bd761027a0f8ff\r
+\r
+I=138\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a533c09f\r
+CT=70832aef7ce11cd0ec2d99b5f26e190b\r
+\r
+I=139\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b543d0af\r
+CT=0f49cb1116d18224fd6b09da5b5a2b23\r
+\r
+I=140\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c553e0bf\r
+CT=b306b820e40ee864775c8d282bdc2b84\r
+\r
+I=141\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d563f0cf\r
+CT=aaf2edc421015af227cdf33a441f1a75\r
+\r
+I=142\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e57400df\r
+CT=8c2bda5c9dabcc513649c5706ae9cbc7\r
+\r
+I=143\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f58410ef\r
+CT=e19d97e54252af0a5ddfd209bb4e0a61\r
+\r
+I=144\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000059420ff\r
+CT=17a981e648f7a8352e96c329f7b2e07f\r
+\r
+I=145\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000015a43110\r
+CT=84e45e489ef7d11a1f1afe070ca2dd71\r
+\r
+I=146\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000025b44120\r
+CT=cbb5196f9dcda81096dabe03cb89a37c\r
+\r
+I=147\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000035c45130\r
+CT=98069d6a58c1df93d17a088f16486cc8\r
+\r
+I=148\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000045d46140\r
+CT=013dc23cfc7d375ce7962be03278a0c1\r
+\r
+I=149\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000055e47150\r
+CT=676a87258704b1c9cccf995c4d33bf37\r
+\r
+I=150\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000065f48160\r
+CT=a3decee59602b4f62a10f7ac0a7cdd1e\r
+\r
+I=151\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000076049170\r
+CT=fda119130ccd65e58e129c4d19adcd2b\r
+\r
+I=152\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008614a180\r
+CT=f32fc37a20ef0a9094901ca7df9e885d\r
+\r
+I=153\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009624b190\r
+CT=a41769901102a3ea6d6a017547ab2fd9\r
+\r
+I=154\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a634c1a0\r
+CT=40a2dbf60507da3a7f3754bb0078286d\r
+\r
+I=155\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b644d1b0\r
+CT=723b849be3f6246442782162f81fa528\r
+\r
+I=156\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c654e1c0\r
+CT=0ab22fb09a8bfb25a21e818ae9cb8560\r
+\r
+I=157\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d664f1d0\r
+CT=362c2f583ceb972a3df0d1be3cb62270\r
+\r
+I=158\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e67501e0\r
+CT=a2f22d92c0a7bae5d43f4cc11b84975b\r
+\r
+I=159\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f68511f0\r
+CT=08355ae300ec6c1bcf38fbffb8f14b2d\r
+\r
+I=160\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000006952200\r
+CT=3070dea05d08d865fa4003245f2f7af5\r
+\r
+I=161\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000016a53211\r
+CT=4ce066b7f5955b045d0f283d9d9c1181\r
+\r
+I=162\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000026b54221\r
+CT=31c062822ef698daef0d0e6283cdccb1\r
+\r
+I=163\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000036c55231\r
+CT=7f1c6cc516a42c5325b5821e8a64db58\r
+\r
+I=164\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000046d56241\r
+CT=3c74a06e765ef7ec2602d09f1bcaea85\r
+\r
+I=165\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000056e57251\r
+CT=a0f3d713e6a742ac194476716685f2e6\r
+\r
+I=166\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000066f58261\r
+CT=5b4379f3adc275b84b8efe424f7cc990\r
+\r
+I=167\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000077059271\r
+CT=aaa180c999cc10611d16d9e359166b3d\r
+\r
+I=168\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008715a281\r
+CT=9eca7bf4b18c720c6ec0fb59e0d17b73\r
+\r
+I=169\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009725b291\r
+CT=ea726aee1592189735c6a3dcec458352\r
+\r
+I=170\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a735c2a1\r
+CT=58a96916167ac890237c31398aa0244c\r
+\r
+I=171\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b745d2b1\r
+CT=b0b7b040b10d0fba7391eeff27c3095a\r
+\r
+I=172\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c755e2c1\r
+CT=677dcd9fecb03893b341fd702bbbb2ef\r
+\r
+I=173\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d765f2d1\r
+CT=f55b6adf2167b18459259d20701fbb26\r
+\r
+I=174\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e77602e1\r
+CT=4a4e1b2ce477f6cfb1b1cc37af94cacf\r
+\r
+I=175\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f78612f1\r
+CT=18263198c252c2dd1b92c4b3b4252e51\r
+\r
+I=176\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000007962301\r
+CT=d0967864ce5399dac467776aa6783969\r
+\r
+I=177\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000017a63312\r
+CT=d011dbab4a32e79f04fe2eee50c9ff55\r
+\r
+I=178\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000027b64322\r
+CT=5c66e0f8d548f00989ceaad560c4f7d4\r
+\r
+I=179\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000037c65332\r
+CT=538b88a94d524a51f4f5c4929eca67a9\r
+\r
+I=180\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000047d66342\r
+CT=877bf1db3e9918e16f3b73dc0c1f77fc\r
+\r
+I=181\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000057e67352\r
+CT=1b820961afb5fb273f7626eb8751f68a\r
+\r
+I=182\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000067f68362\r
+CT=1dd6a30ade979b7826b810d8a25d2cbb\r
+\r
+I=183\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000078069372\r
+CT=e577be90a5a64c0b396b3b41404ce3c7\r
+\r
+I=184\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008816a382\r
+CT=93f78613cd37b32eab944fad30fe7038\r
+\r
+I=185\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009826b392\r
+CT=1174bf15c332f3ab093a03ba9595496e\r
+\r
+I=186\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a836c3a2\r
+CT=9832a383e8cfab27248757f83e21b5c9\r
+\r
+I=187\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b846d3b2\r
+CT=be61880eea5039e64b376385920aee73\r
+\r
+I=188\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c856e3c2\r
+CT=7fda0abd0ef789210d50559b4e755b42\r
+\r
+I=189\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d866f3d2\r
+CT=a49828810bc1c7784b0c73e620848446\r
+\r
+I=190\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e87703e2\r
+CT=864067d932acdda057d23dbf18b2a1e6\r
+\r
+I=191\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f88713f2\r
+CT=c15dbfd0c8ba94fa0c756b6461b2af2c\r
+\r
+I=192\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000008972402\r
+CT=6c2b93e9690e7cc624063af3cefb2b3c\r
+\r
+I=193\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000018a73413\r
+CT=9f578768447ec06b54ac6fcc2de7b4a5\r
+\r
+I=194\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000028b74423\r
+CT=729bda61a8e95cfa51fbe550c6226368\r
+\r
+I=195\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000038c75433\r
+CT=04a3f78601d4188e70aba461d2dc4067\r
+\r
+I=196\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000048d76443\r
+CT=a67ea19de5b33479a4aa40292037c3c2\r
+\r
+I=197\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000058e77453\r
+CT=ac7e21057d79dd5955b6f54c45d74f00\r
+\r
+I=198\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000068f78463\r
+CT=a00e8f318df141e95e0b0fa96fea416d\r
+\r
+I=199\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000079079473\r
+CT=ee4b44ef7c1d7658231990e192b0aedc\r
+\r
+I=200\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008917a483\r
+CT=2626ca2a4ab3cba3f9eaad482b1a6b00\r
+\r
+I=201\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009927b493\r
+CT=a3971c69c426af6c832c9e16fb8a8dd6\r
+\r
+I=202\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000a937c4a3\r
+CT=14e123d50c107f5139337760e30df29b\r
+\r
+I=203\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000b947d4b3\r
+CT=750d19f634096d93266a582309366944\r
+\r
+I=204\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000c957e4c3\r
+CT=35cce73895d37db660e84f0c32335424\r
+\r
+I=205\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000d967f4d3\r
+CT=18b2ea3d498dccffd4017b666017cc98\r
+\r
+I=206\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000e97804e3\r
+CT=a4c83c00f8989ace8acc5308108cad68\r
+\r
+I=207\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000f98814f3\r
+CT=3ba7f361a3311e4a427d210def3497db\r
+\r
+I=208\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000009982503\r
+CT=38de516fdbce311ff8a8e463a16e2379\r
+\r
+I=209\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000019a83514\r
+CT=c255658ec77b589de1bed8b1f0791528\r
+\r
+I=210\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000029b84524\r
+CT=a3d18d45114ea2595ab1e5a6f40b6ad9\r
+\r
+I=211\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000039c85534\r
+CT=714ab4913e588a99603cd5c412d3eab6\r
+\r
+I=212\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000049d86544\r
+CT=d3cffb9f3a2070f5390a2fe6372e2f09\r
+\r
+I=213\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000059e87554\r
+CT=b13d316803530b5bcb37e7bdb275ee73\r
+\r
+I=214\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=00000000000000000000000069f88564\r
+CT=d2d8f718375ba1737704c679d2618335\r
+\r
+I=215\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000007a089574\r
+CT=912f09f07c42def64379e70e21e54590\r
+\r
+I=216\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008a18a584\r
+CT=3fe196f774b9332a1838554a1f79be0d\r
+\r
+I=217\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009a28b594\r
+CT=63fc194731890170cfa66ce6955da379\r
+\r
+I=218\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000aa38c5a4\r
+CT=aca928efc85b69c47be12b7cc6975313\r
+\r
+I=219\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ba48d5b4\r
+CT=0101b2d7320663a5e4bc60b06957edd8\r
+\r
+I=220\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ca58e5c4\r
+CT=5be724d649c3732a552e16af0f1bcb65\r
+\r
+I=221\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000da68f5d4\r
+CT=8eecd1e8e8286f8bda700b9ebbc17b28\r
+\r
+I=222\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ea7905e4\r
+CT=5da6560be7f5cd80f2010e8258e8e48d\r
+\r
+I=223\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000fa8915f4\r
+CT=97b6d997b0cc76ad2f6eff5878eca6d9\r
+\r
+I=224\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000000a992604\r
+CT=b8c66a3e5c06ec2b78ba2493b6aa65fe\r
+\r
+I=225\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000001aa93615\r
+CT=0379d03e0dd215b50dab37ac4a86236e\r
+\r
+I=226\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000002ab94625\r
+CT=66331b500d84724bccb833ffc147b53c\r
+\r
+I=227\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000003ac95635\r
+CT=1783b2c4ba08362df96ce1611408ade8\r
+\r
+I=228\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000004ad96645\r
+CT=af00840d83b4c22e2f71439c306b7c5d\r
+\r
+I=229\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000005ae97655\r
+CT=efd6080724e518bd8c6aa41dd23f44c6\r
+\r
+I=230\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000006af98665\r
+CT=01a8e78f02e076f72f06856f2ed5bc34\r
+\r
+I=231\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000007b099675\r
+CT=c6848b3b21c5d1764601c96ae0de2f95\r
+\r
+I=232\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008b19a685\r
+CT=6fa942dcba2890af00ebc9456061b3f0\r
+\r
+I=233\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009b29b695\r
+CT=b142b13d96d9f43a6b3b55cfa6680d49\r
+\r
+I=234\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ab39c6a5\r
+CT=9db624378bcaf33f4f0440a4f84a8f80\r
+\r
+I=235\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000bb49d6b5\r
+CT=4c96f56f4d9c303b788dda7ce40d13e4\r
+\r
+I=236\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000cb59e6c5\r
+CT=c5b59cfc41571e1b98c6b2707349103a\r
+\r
+I=237\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000db69f6d5\r
+CT=eda77fb0e58f56551c2bffa8be699460\r
+\r
+I=238\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000eb7a06e5\r
+CT=dc4e4448494438a4f28033076aafc621\r
+\r
+I=239\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000fb8a16f5\r
+CT=3942eb9411858617a66668dc98fe906f\r
+\r
+I=240\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000000b9a2705\r
+CT=9eda9c851300463cea3a1e9f89b0fbf8\r
+\r
+I=241\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000001baa3716\r
+CT=ed3b426af6c6dca4d1b12b721ffc52fe\r
+\r
+I=242\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000002bba4726\r
+CT=117af859a1af0589d5aab57a2e18c900\r
+\r
+I=243\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000003bca5736\r
+CT=1d0d286efb41a9c9c17b8084511811c9\r
+\r
+I=244\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000004bda6746\r
+CT=472598307fa2daede14b2b0bbe6581d2\r
+\r
+I=245\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000005bea7756\r
+CT=1bd37910b9779a357fcf37026b089a57\r
+\r
+I=246\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000006bfa8766\r
+CT=3881f595192bbe2535d03052a40b39cb\r
+\r
+I=247\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000007c0a9776\r
+CT=48665de9851ee51e540e386a3ffe9ca6\r
+\r
+I=248\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000008c1aa786\r
+CT=2a64d009e40f84c8dc2fab012fbbb2db\r
+\r
+I=249\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000009c2ab796\r
+CT=137b0ebfce51ab995271e6b6298fc63b\r
+\r
+I=250\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ac3ac7a6\r
+CT=5cb34592dac9163c6c953db9f6813717\r
+\r
+I=251\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000bc4ad7b6\r
+CT=a6a9dabd1992c0b411a18bb8ec5a4d58\r
+\r
+I=252\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000cc5ae7c6\r
+CT=9c7d7d4eb5adbbe7780e4626165fcb4f\r
+\r
+I=253\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000dc6af7d6\r
+CT=3d8e3abacd0b7fc63fc30bede5630e40\r
+\r
+I=254\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000ec7b07e6\r
+CT=829427fa5a8ec9008134af599c066ed2\r
+\r
+I=255\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=000000000000000000000000fc8b17f6\r
+CT=ec8d0d74faec36b23f62a76baafc0c0e\r
+\r
+I=256\r
+KEY=2342bb9efa38542c0af75647f29f615d\r
+PT=0000000000000000000000000c9b2806\r
+CT=5bd496f3b91ce1f2d2ed38815135eec8\r
+\r
+==========\r
+\r
+KEYSIZE=192\r
+\r
+I=1\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000de255aff\r
+CT=2bc1929f301347a99d3f3e45ad3401e8\r
+\r
+I=2\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e2295f03\r
+CT=bfeaf5bc2b1bcbbe32a93b9900365923\r
+\r
+I=3\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e62d6307\r
+CT=deb69297fd579373b515fc9e5df4ef61\r
+\r
+I=4\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000ea31670b\r
+CT=aa7a35605816345a6f205df97dc5920b\r
+\r
+I=5\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000ee356b0f\r
+CT=b25683cd9188db9307f8a1236b53de86\r
+\r
+I=6\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f2396f13\r
+CT=0aa9b6245c3900fa06f9555aa7b1dac4\r
+\r
+I=7\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f63d7317\r
+CT=b9f83cb018169df761b5c57f3b34cc64\r
+\r
+I=8\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000fa41771b\r
+CT=7240be2f82fe8076eae8f126a1eac5c1\r
+\r
+I=9\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000fe457b1f\r
+CT=fb804d10224ae9e7957f93dd6c45264a\r
+\r
+I=10\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000002497f23\r
+CT=e2500f04022a1c68e8cea368f0a17032\r
+\r
+I=11\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000064d8327\r
+CT=65044c9801de27a8cc6666e5666e4515\r
+\r
+I=12\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000000a51872b\r
+CT=f1a28da7b0edaf67406328c3b544a2da\r
+\r
+I=13\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000000e558b2f\r
+CT=aea63127579048ceaacadc860a38e184\r
+\r
+I=14\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000012598f33\r
+CT=32831b0debc21a3373f0d3b928a4f24f\r
+\r
+I=15\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000165d9337\r
+CT=d718e51c67cd98f86d93ae089dc4ae62\r
+\r
+I=16\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000001a61973b\r
+CT=9ca996c5c3b3e260bc6fc1b7248823e5\r
+\r
+I=17\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000001e659b3f\r
+CT=7603651fdf71fa58a5c4e3f6b6387699\r
+\r
+I=18\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000022699f43\r
+CT=e490c326e63c91853ce14a6691a59dfc\r
+\r
+I=19\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000266da347\r
+CT=d7c6277832420d3f8592f2ae295cb542\r
+\r
+I=20\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000002a71a74b\r
+CT=c8648c2e4970ea8654789b9eeebfa347\r
+\r
+I=21\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000002e75ab4f\r
+CT=8cfd93e2055d4988ca93490d0ce223b1\r
+\r
+I=22\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003279af53\r
+CT=ca4776afec06236c6ec95c3b01291705\r
+\r
+I=23\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000367db357\r
+CT=1786be513894d07058a77f852a59d6da\r
+\r
+I=24\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003a81b75b\r
+CT=20e7f4dbef01313e7dfca18ed850a315\r
+\r
+I=25\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003e85bb5f\r
+CT=56d59108427ec709386b2d17b30ce534\r
+\r
+I=26\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004289bf63\r
+CT=0628e76164ae0de13f227f33abf14832\r
+\r
+I=27\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000468dc367\r
+CT=b97e7697d149e3f3d52fea26c2cc178a\r
+\r
+I=28\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004a91c76b\r
+CT=b303f81461a5011962030985149ab52e\r
+\r
+I=29\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004e95cb6f\r
+CT=94ad98f360870cfb9681b14129a98fda\r
+\r
+I=30\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000005299cf73\r
+CT=c57bc22c871dda8c050daf7b255ba5ce\r
+\r
+I=31\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000569dd377\r
+CT=b23e0c4fa523b009333f84c832d8083d\r
+\r
+I=32\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000005aa1d77b\r
+CT=5980728a7c4ccb60db41afd615226251\r
+\r
+I=33\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000005ea5db7f\r
+CT=b0ec27a44b532ba6d209ce5cb2eb30d6\r
+\r
+I=34\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000062a9df83\r
+CT=772dd1430ffa8f5985965a958668f0a6\r
+\r
+I=35\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000066ade387\r
+CT=5003c6b7895eafdd50ca65f703e3199a\r
+\r
+I=36\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000006ab1e78b\r
+CT=b2f957188bd8668f9f1aa57ebd064b88\r
+\r
+I=37\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000006eb5eb8f\r
+CT=c0b9c16503121aa40bed9ccf8a7881bd\r
+\r
+I=38\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000072b9ef93\r
+CT=09ea07bfe4344a06f032ebb5644d3ec6\r
+\r
+I=39\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000076bdf397\r
+CT=7d49e6ed2fca2c5074249ed07afce06a\r
+\r
+I=40\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000007ac1f79b\r
+CT=96503bfd347a2a8db65c5f363225f002\r
+\r
+I=41\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000007ec5fb9f\r
+CT=b4bbcf64bf22d05fe7b0b6686c754d01\r
+\r
+I=42\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000082c9ffa3\r
+CT=3afcb9c4fa1bec15073c6d60989c2869\r
+\r
+I=43\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000086ce03a7\r
+CT=0b4c1b4b7b3cd37b07c3d7a585593b06\r
+\r
+I=44\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000008ad207ab\r
+CT=f08190dfa9658c1a3d8004b98c648eef\r
+\r
+I=45\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000008ed60baf\r
+CT=0e9722a294c98522ea6e27f3a9d6694f\r
+\r
+I=46\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000092da0fb3\r
+CT=002b57456cfade42d22f1b23c708692e\r
+\r
+I=47\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000096de13b7\r
+CT=1246a32b7f0b29fe8a0e309eaa1be9a2\r
+\r
+I=48\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000009ae217bb\r
+CT=09a9a37ee697fdc051f57d4364d9e576\r
+\r
+I=49\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000009ee61bbf\r
+CT=3a7e5904df9948e0697ed46d1f56aab5\r
+\r
+I=50\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a2ea1fc3\r
+CT=a0e3ec8c9b75ebf073ce0de0edbf1b77\r
+\r
+I=51\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a6ee23c7\r
+CT=773387fe466e6320184821aed0378d17\r
+\r
+I=52\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000aaf227cb\r
+CT=71b36b27836b2656d11b32937a234c1b\r
+\r
+I=53\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000aef62bcf\r
+CT=dc6f33dcf793470dfafb4d7656c2cb44\r
+\r
+I=54\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000b2fa2fd3\r
+CT=df0ec33203e6d1e66351b265f523281d\r
+\r
+I=55\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000b6fe33d7\r
+CT=c93aa9b65052e64462373f4b8973a934\r
+\r
+I=56\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000bb0237db\r
+CT=50a5514fd9ccdb804d8d4d14e06a45f7\r
+\r
+I=57\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000bf063bdf\r
+CT=44c306eddb374f3cec918bbc8e5c0c21\r
+\r
+I=58\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c30a3fe3\r
+CT=ee4103327ca00ecd1152b131ed477748\r
+\r
+I=59\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c70e43e7\r
+CT=ab67939c075d5d7385f0e38e38f7f269\r
+\r
+I=60\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000cb1247eb\r
+CT=f3b78641fc81ce2929e5d0c55ed99a78\r
+\r
+I=61\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000cf164bef\r
+CT=0124049938dfbb9b3672bb71f5ba08e0\r
+\r
+I=62\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d31a4ff3\r
+CT=72065561c92385867e009e982507001b\r
+\r
+I=63\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d71e53f7\r
+CT=08bc48b9410d06a62e3ea7be5eb50bb7\r
+\r
+I=64\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000db2257fb\r
+CT=6108dbca70b894db8ab3969716daac52\r
+\r
+I=65\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000df265c00\r
+CT=a896d226c70489562ab3a02bc100a494\r
+\r
+I=66\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e32a6004\r
+CT=741d1a6818a899003b4de2a3ef4102f4\r
+\r
+I=67\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e72e6408\r
+CT=a243d9d1d1358590a5d8b386c5c9604f\r
+\r
+I=68\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000eb32680c\r
+CT=c94bb2c0ea733b2b0cbe6391e9ee2aa1\r
+\r
+I=69\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000ef366c10\r
+CT=412245e3152a3545a618652680649da6\r
+\r
+I=70\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f33a7014\r
+CT=6e13a670dd3a2c0ccaedc9252ad57d3b\r
+\r
+I=71\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f73e7418\r
+CT=2cb4dae1664ed7277b477e28a8178aa0\r
+\r
+I=72\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000fb42781c\r
+CT=52908b7496a6f0869b4fb631917d651b\r
+\r
+I=73\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000ff467c20\r
+CT=5578bffe62423d4bfead75c9fbe2c131\r
+\r
+I=74\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000034a8024\r
+CT=7710fdf4e2c23f812810e9fa5cd61303\r
+\r
+I=75\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000074e8428\r
+CT=1e2e3309da8ab9375ec1c9d51d28a350\r
+\r
+I=76\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000000b52882c\r
+CT=f2dd08a0a2ce27c34ab83b334bcaad93\r
+\r
+I=77\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000000f568c30\r
+CT=7a4e420fdd8ffa4517b2a9398f1a7a70\r
+\r
+I=78\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000135a9034\r
+CT=a780b93702ad399a72641ffa6f460ad7\r
+\r
+I=79\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000175e9438\r
+CT=9d4fdf66d34c24a1f4d3b35d9a98fbd3\r
+\r
+I=80\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000001b62983c\r
+CT=59289b19fbf9dc8284033456a8108d59\r
+\r
+I=81\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000001f669c40\r
+CT=7d7eab2b4d0c2769794efca6c49fc002\r
+\r
+I=82\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000236aa044\r
+CT=7f7785f997f198c512cca39aa72749c5\r
+\r
+I=83\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000276ea448\r
+CT=d1194001bf555c529dddd7f53533edb1\r
+\r
+I=84\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000002b72a84c\r
+CT=12e007426e0b69749228ed0507aef8e2\r
+\r
+I=85\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000002f76ac50\r
+CT=796f63d11cf9915097d2b02ac2fa140b\r
+\r
+I=86\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000337ab054\r
+CT=7edbe418a1f25cf3544dc1302da3112e\r
+\r
+I=87\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000377eb458\r
+CT=019a803edb66c8dd384a206ca420377c\r
+\r
+I=88\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003b82b85c\r
+CT=4388ecee6e15075ff9e95b35f2f31a37\r
+\r
+I=89\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003f86bc60\r
+CT=ebe6ce806235b88412f37cd51fb02d36\r
+\r
+I=90\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000438ac064\r
+CT=ec6c657322535a29c7ca06dec11da385\r
+\r
+I=91\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000478ec468\r
+CT=10267b7a89a3e4b3460c953125d4310a\r
+\r
+I=92\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004b92c86c\r
+CT=87c81e0b8012ed08b02b4248517a818b\r
+\r
+I=93\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004f96cc70\r
+CT=8dbc87238aba067a61e21b8df35bae60\r
+\r
+I=94\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000539ad074\r
+CT=73bf8602bb7fd34e92ad120e0c6ec6fd\r
+\r
+I=95\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000579ed478\r
+CT=3d955e1cd1dc435ae8a2062ae6492d6f\r
+\r
+I=96\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000005ba2d87c\r
+CT=45696dcd536400f14b8f8ac58aeb8cc1\r
+\r
+I=97\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000005fa6dc80\r
+CT=0d861ceb37d0960c4ad0ca5edd59cd07\r
+\r
+I=98\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000063aae084\r
+CT=b3d20cddce083cfc9ccab893d585b1da\r
+\r
+I=99\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000067aee488\r
+CT=88c92238d7b1e6899913e80c277d4502\r
+\r
+I=100\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000006bb2e88c\r
+CT=f9c8a7f38fb13651bef8d8c833412c66\r
+\r
+I=101\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000006fb6ec90\r
+CT=7876094ce6b0451006aebc16e1dacd6b\r
+\r
+I=102\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000073baf094\r
+CT=bcac34d19e7c7717eb4831b39979a18b\r
+\r
+I=103\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000077bef498\r
+CT=f6f0755fbaac5b0b9b816c2261fda328\r
+\r
+I=104\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000007bc2f89c\r
+CT=53242ae17b4be119707597f72f3d57db\r
+\r
+I=105\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000007fc6fca0\r
+CT=c0159b0dd48dbbd65de1c5af51791679\r
+\r
+I=106\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000083cb00a4\r
+CT=eb5525360cf90c01591f664e18094bf6\r
+\r
+I=107\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000087cf04a8\r
+CT=e3047dca75ca50726c39fd41ada09f0b\r
+\r
+I=108\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000008bd308ac\r
+CT=b5a23513fce1ecf66f0fd55d9af7bef3\r
+\r
+I=109\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000008fd70cb0\r
+CT=db6fbfc8fbfe2b75e4316e9efb199e77\r
+\r
+I=110\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000093db10b4\r
+CT=d959ddce137b1255cbd1ede9cdf6580e\r
+\r
+I=111\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000097df14b8\r
+CT=f8c926eaeee3c1381ae3f34d1b3e22fe\r
+\r
+I=112\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000009be318bc\r
+CT=150c2a21b613004cfafef4acfd187b3f\r
+\r
+I=113\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000009fe71cc0\r
+CT=46d38fcffe8d01d4e3e12a9ebf12781d\r
+\r
+I=114\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a3eb20c4\r
+CT=a64655871d0ef9afbfff8ca4f4a514e1\r
+\r
+I=115\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a7ef24c8\r
+CT=2fb369df7f52b5aa84a1921975f0b64f\r
+\r
+I=116\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000abf328cc\r
+CT=8a30228665e225c1ddb1029c76a12d55\r
+\r
+I=117\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000aff72cd0\r
+CT=14fca02506971553d19be535187fb821\r
+\r
+I=118\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000b3fb30d4\r
+CT=83cf7e68843e586733d4958552810d82\r
+\r
+I=119\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000b7ff34d8\r
+CT=236f3c8a7843f056689a705c1f48f62a\r
+\r
+I=120\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000bc0338dc\r
+CT=fd0b23329ebb7420f6f468cf6e43d676\r
+\r
+I=121\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c0073ce0\r
+CT=7451c042b4655c5d2f4a80fd20520876\r
+\r
+I=122\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c40b40e4\r
+CT=f96ab24458e86ab85acd33ce9eaeba36\r
+\r
+I=123\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c80f44e8\r
+CT=03493cd9b4531b13b1277d4237b87bc7\r
+\r
+I=124\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000cc1348ec\r
+CT=e32f0d4e0b265d1a0813dba055e42226\r
+\r
+I=125\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d0174cf0\r
+CT=012af0549686af94623d75b91e8822c2\r
+\r
+I=126\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d41b50f4\r
+CT=ca384a3f87e99c3ba75efda1f494e886\r
+\r
+I=127\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d81f54f8\r
+CT=9a783e999d79d9fc55db7023a620ea84\r
+\r
+I=128\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000dc2358fc\r
+CT=5d2050d7557f719c2d521092a0a1bb4b\r
+\r
+I=129\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e0275d01\r
+CT=d48c60ac04e1af528fd329c269e5f65d\r
+\r
+I=130\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e42b6105\r
+CT=398d6c29434f70204dad467a2ff3dbe4\r
+\r
+I=131\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e82f6509\r
+CT=126477b6d5276ae942aa7dd6e136692e\r
+\r
+I=132\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000ec33690d\r
+CT=4af8293503f0ef34bf18f5216cf2ee44\r
+\r
+I=133\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f0376d11\r
+CT=3e5db9ef93137e0e430f06b85218ffd5\r
+\r
+I=134\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f43b7115\r
+CT=34be4c3a2890953e4e80717c05a3ec11\r
+\r
+I=135\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f83f7519\r
+CT=9f67a2f3bd48594fa8f38065eebdb2d0\r
+\r
+I=136\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000fc43791d\r
+CT=1237972e6f97ca11d60d3b3e9b7e894f\r
+\r
+I=137\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000000477d21\r
+CT=01cffc236cac73804469a077faf6edab\r
+\r
+I=138\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000044b8125\r
+CT=bdbaa894a53148a8b22ec6ad350ddc2b\r
+\r
+I=139\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000084f8529\r
+CT=52915a2cffd237c73182817421588db6\r
+\r
+I=140\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000000c53892d\r
+CT=ec61d97ddcd2977cded74052e039a6a6\r
+\r
+I=141\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000010578d31\r
+CT=52f61bfcfa6a72a84fd071e6ebf77413\r
+\r
+I=142\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000145b9135\r
+CT=6b174e50e8e5127b931489a9e0d0b005\r
+\r
+I=143\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000185f9539\r
+CT=56d0e4d9a37fbb8eb3f79b4b5d9b9442\r
+\r
+I=144\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000001c63993d\r
+CT=cf7bdd4a02838940f33e3cfdc826a852\r
+\r
+I=145\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000020679d41\r
+CT=23d5bf8b3956977e6489a1b53914c1d1\r
+\r
+I=146\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000246ba145\r
+CT=d8893ec6fe25f93fbadf5ddd6c2973b7\r
+\r
+I=147\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000286fa549\r
+CT=ae64f9e4bbafff39e220c535b6477719\r
+\r
+I=148\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000002c73a94d\r
+CT=f1750cd302888e475353d1a40723391f\r
+\r
+I=149\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003077ad51\r
+CT=fbaf2205fd18de6029169128e16464ae\r
+\r
+I=150\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000347bb155\r
+CT=24a7aeb91dcfdc63b8da026cae9f8cad\r
+\r
+I=151\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000387fb559\r
+CT=ac37b5ef1830edf2821feba174fac71c\r
+\r
+I=152\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003c83b95d\r
+CT=2ef2957b48d4477a7b0b88ee403614dd\r
+\r
+I=153\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004087bd61\r
+CT=2c6879e9d622c9202f5c469c56601e6c\r
+\r
+I=154\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000448bc165\r
+CT=be1286cabfe7fec4da5b1986ad95a3ca\r
+\r
+I=155\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000488fc569\r
+CT=3b3dc0e4e567b6e201d3bdf936946537\r
+\r
+I=156\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004c93c96d\r
+CT=82a394ef271cf1196ad3cc524ff329e2\r
+\r
+I=157\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000005097cd71\r
+CT=e1098f5f3a190efea3652105c4eb302e\r
+\r
+I=158\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000549bd175\r
+CT=2e6023cdbbdc516e33edf914184d62b2\r
+\r
+I=159\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000589fd579\r
+CT=35849d150316aee81f157ca83a481afb\r
+\r
+I=160\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000005ca3d97d\r
+CT=604c837d1bac4decbe4725cbf748ce3d\r
+\r
+I=161\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000060a7dd81\r
+CT=a1784505bc3165561cbd7274aaa9c929\r
+\r
+I=162\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000064abe185\r
+CT=92cc37f5c2c4f58c70b014398179d123\r
+\r
+I=163\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000068afe589\r
+CT=7846cd2a3de1b743c218de0232841f5e\r
+\r
+I=164\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000006cb3e98d\r
+CT=dce78bb6ac4a8d6df28b1304e49614ab\r
+\r
+I=165\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000070b7ed91\r
+CT=939c949122328d3b8a8283eb60e00c04\r
+\r
+I=166\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000074bbf195\r
+CT=817c6f8db6870f0df6ff206e4afa74e5\r
+\r
+I=167\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000078bff599\r
+CT=27f0eea1852535f2394f53b4b6c087ca\r
+\r
+I=168\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000007cc3f99d\r
+CT=e7854e6b70cb3be5b51180f717c29590\r
+\r
+I=169\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000080c7fda1\r
+CT=9ced9478d8ea3d6c5910d6dbf3ea2806\r
+\r
+I=170\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000084cc01a5\r
+CT=419372afaef7723b9f174c0b31e3c641\r
+\r
+I=171\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000088d005a9\r
+CT=1907b0479279af22600d00f5988bab04\r
+\r
+I=172\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000008cd409ad\r
+CT=28fdacec06030909fbd64a50fd2b1232\r
+\r
+I=173\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000090d80db1\r
+CT=a3898a218c654c42678a2380c042ac6f\r
+\r
+I=174\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000094dc11b5\r
+CT=43fd220639d0fbe439341d735b9438c0\r
+\r
+I=175\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000098e015b9\r
+CT=536c037e4c81b7ba63fa4eaefdaada12\r
+\r
+I=176\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000009ce419bd\r
+CT=b69f1144a0109da903f5e7719c02f5ed\r
+\r
+I=177\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a0e81dc1\r
+CT=d4bfdc6ad48e8c06650f99def762a0e2\r
+\r
+I=178\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a4ec21c5\r
+CT=c6e7ebcf64d25ab98a80595dd0dca3bd\r
+\r
+I=179\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a8f025c9\r
+CT=86e970d2a7e4e89e73da557087d468c3\r
+\r
+I=180\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000acf429cd\r
+CT=b255912fbaf8e6e48be0864f63c0faf1\r
+\r
+I=181\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000b0f82dd1\r
+CT=9806c8ec5d34de35f3626973a014a234\r
+\r
+I=182\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000b4fc31d5\r
+CT=bb7277a850bb47bd576cd3b7fc244652\r
+\r
+I=183\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000b90035d9\r
+CT=17c86589ef136ae2e82dc8f59426852c\r
+\r
+I=184\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000bd0439dd\r
+CT=320f5e3f1e0ba77a38fa75edc23d4c45\r
+\r
+I=185\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c1083de1\r
+CT=29e4b5525d5c6aa01daa10a1e21bd7f7\r
+\r
+I=186\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c50c41e5\r
+CT=9469093fc0e7df7c30f477024352aeba\r
+\r
+I=187\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c91045e9\r
+CT=8793efc0dc96ecb4cf070c8e6ff21c85\r
+\r
+I=188\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000cd1449ed\r
+CT=d765c0f97fd89f943a67a19a53b897f2\r
+\r
+I=189\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d1184df1\r
+CT=70b110abd14a604c92c956e8796e7b11\r
+\r
+I=190\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d51c51f5\r
+CT=3df95ae05689a5f2a15be1682dbbf07d\r
+\r
+I=191\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d92055f9\r
+CT=41675610787a5a366223423d072ae018\r
+\r
+I=192\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000dd2459fd\r
+CT=039852f634b14dd673cc8e559ba8f99c\r
+\r
+I=193\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e1285e02\r
+CT=e3ab921cf57e3a9fdb30a0a1c8fa4591\r
+\r
+I=194\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e52c6206\r
+CT=35b1c35fbe2b1a085f8a85dc13ae2215\r
+\r
+I=195\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000e930660a\r
+CT=a0e5c286dc381692deaa21b8ca20824f\r
+\r
+I=196\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000ed346a0e\r
+CT=c997d738e92a1f804fa8566c9d14fb40\r
+\r
+I=197\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f1386e12\r
+CT=8dc629c4dba8f9c20b3daa93eb114c56\r
+\r
+I=198\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f53c7216\r
+CT=255add94411a5141496aa0e971b7102e\r
+\r
+I=199\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000f940761a\r
+CT=7e73efb4a100c520df19d516ce043886\r
+\r
+I=200\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000fd447a1e\r
+CT=da7702099a19688edd40a95aeec1b9cb\r
+\r
+I=201\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000001487e22\r
+CT=7cf41fca8dc18c55bd6336a2a76403c4\r
+\r
+I=202\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000054c8226\r
+CT=bdabb78de01f51ff6a0d339f38e2838b\r
+\r
+I=203\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000000950862a\r
+CT=de97874a1d9a0b212ac0f4eff724a748\r
+\r
+I=204\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000000d548a2e\r
+CT=ae50e32f57d0606f3f6b82413a015ec0\r
+\r
+I=205\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000011588e32\r
+CT=9508bfa7d95a4d9c34eb9f05894ad632\r
+\r
+I=206\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000155c9236\r
+CT=0fd19c166e65d0fc9e36ab7593e7b906\r
+\r
+I=207\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000001960963a\r
+CT=379d313d6fd5ec54a94c0c8b221bc8a4\r
+\r
+I=208\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000001d649a3e\r
+CT=58e5dbd0655abfc4a0450911fc68c505\r
+\r
+I=209\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000021689e42\r
+CT=733f951a74e3da4990c14cb06e65e9a3\r
+\r
+I=210\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000256ca246\r
+CT=879c661f32b110004ecb5f35b4231302\r
+\r
+I=211\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000002970a64a\r
+CT=98bd123a8ffdc0eeae9a818aa2bfbc64\r
+\r
+I=212\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000002d74aa4e\r
+CT=5ab51cad4af590b2d6350ee2741fb8c5\r
+\r
+I=213\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003178ae52\r
+CT=a71d482778ab93c87064a740899453f2\r
+\r
+I=214\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000357cb256\r
+CT=95efde5578f3ee55f45ec168743d3b69\r
+\r
+I=215\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003980b65a\r
+CT=87b0099f7ad1819232b30f804febc463\r
+\r
+I=216\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000003d84ba5e\r
+CT=bbf1121573b08794e5b9420211d402b6\r
+\r
+I=217\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004188be62\r
+CT=bc9ef2dc414ae5b236aed37e4145d473\r
+\r
+I=218\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000458cc266\r
+CT=67b996d85d7cdb00cf008288ac59cdc0\r
+\r
+I=219\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004990c66a\r
+CT=d4f101fc0ee33439ca1dd74da946d07b\r
+\r
+I=220\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000004d94ca6e\r
+CT=a01e7a1bb44b8a29ada80a9bed74a25a\r
+\r
+I=221\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000005198ce72\r
+CT=5dcffdab2e0e1adb453260b396d389e4\r
+\r
+I=222\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000559cd276\r
+CT=8e70b6828f9133de8eb809d578c6d8e2\r
+\r
+I=223\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000059a0d67a\r
+CT=de1fab8fb9e72f580f559ed77c52e23e\r
+\r
+I=224\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000005da4da7e\r
+CT=c76458511573fd46aa3d090d39f9e4fa\r
+\r
+I=225\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000061a8de82\r
+CT=1c874112181638e007c97afd70600423\r
+\r
+I=226\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000065ace286\r
+CT=7f680ce0dc37cf7d885dcfda65f8cd4d\r
+\r
+I=227\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000069b0e68a\r
+CT=b14efdb5c7d3b076bf5249fedb159424\r
+\r
+I=228\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000006db4ea8e\r
+CT=81c6290196f4096afb7346e13401590f\r
+\r
+I=229\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000071b8ee92\r
+CT=9a2b87db45fb3639f838cc68ad84c097\r
+\r
+I=230\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000075bcf296\r
+CT=c0acf6cf96116540e3981f5246452a02\r
+\r
+I=231\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000079c0f69a\r
+CT=b302794a4648dcd33d36100077923668\r
+\r
+I=232\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000007dc4fa9e\r
+CT=cfeb13f51564fa621dd4c3a3a9c57225\r
+\r
+I=233\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000081c8fea2\r
+CT=51db8ac6f5af21694d54c788664d3b12\r
+\r
+I=234\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000085cd02a6\r
+CT=a6028368cd7cd89db30d3d60bef468a0\r
+\r
+I=235\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000089d106aa\r
+CT=84bd00b5e47e5eb11513d7e4a8c8df45\r
+\r
+I=236\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000008dd50aae\r
+CT=4b0296aaceaf57567b5cf65c723d9976\r
+\r
+I=237\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000091d90eb2\r
+CT=4a45f8533680b7446da88ae2ef1871c4\r
+\r
+I=238\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000095dd12b6\r
+CT=daee2d04698e2f0dd6ba3de8e6033aec\r
+\r
+I=239\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=00000000000000000000000099e116ba\r
+CT=14314be145cd4178cd7d2d3a282ef9a5\r
+\r
+I=240\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=0000000000000000000000009de51abe\r
+CT=ed7efff6960c5da232a1eec5107f2027\r
+\r
+I=241\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a1e91ec2\r
+CT=4b158ae684882b6c3de7f53a623acb5b\r
+\r
+I=242\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a5ed22c6\r
+CT=b4a44c408407f1873466df2c7025998f\r
+\r
+I=243\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000a9f126ca\r
+CT=4e86ccbd7d09cffe614e2a28abaccc7c\r
+\r
+I=244\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000adf52ace\r
+CT=e7bd8690a9da6da42074cebd5cf59ae0\r
+\r
+I=245\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000b1f92ed2\r
+CT=fe1688ef1d4717260b327c671eb1041e\r
+\r
+I=246\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000b5fd32d6\r
+CT=aa6fceee41fc935c905242f441f108db\r
+\r
+I=247\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000ba0136da\r
+CT=e4eedaba112f7b51b02ae3ef6b5c29db\r
+\r
+I=248\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000be053ade\r
+CT=869013dcbe5753f1cf51b6b62df6d9ec\r
+\r
+I=249\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c2093ee2\r
+CT=8eceecbf8992af212a087ca8d262f92c\r
+\r
+I=250\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000c60d42e6\r
+CT=4b5aaf614ada3fd79e8ee496bd20aff6\r
+\r
+I=251\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000ca1146ea\r
+CT=905cda2a4894d17d0ca0c01e8451f3ba\r
+\r
+I=252\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000ce154aee\r
+CT=5195a05baf54338e19f6949319c4626c\r
+\r
+I=253\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d2194ef2\r
+CT=ada47dfbab22d1d66c3978d2824ccf29\r
+\r
+I=254\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000d61d52f6\r
+CT=4ec34fc32a3e9417aa73c4cfd999ba78\r
+\r
+I=255\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000da2156fa\r
+CT=bcefa8793b0751f655b9cb641b391337\r
+\r
+I=256\r
+KEY=2342bb9efa38542cbed0ac83940ac298bac77a7717942863\r
+PT=000000000000000000000000de255afe\r
+CT=fa5a38e12a0280ef5dc1c855f554b75e\r
+\r
+==========\r
+\r
+KEYSIZE=256\r
+\r
+I=1\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000bdf4e311\r
+CT=fa5874ab5aba5c0ba20aa82124c8f5a5\r
+\r
+I=2\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000bef5e412\r
+CT=7b009fbc0188e770acf8f05d7c5a3144\r
+\r
+I=3\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000bff6e513\r
+CT=820fa1f5ba9bcc413198d9c80a5d102a\r
+\r
+I=4\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000c0f7e614\r
+CT=ec3e65601dbd9845c680315d3f03c17c\r
+\r
+I=5\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000c1f8e715\r
+CT=200527b8d9b9920dab217152a6c984f3\r
+\r
+I=6\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000c2f9e816\r
+CT=18066344a160214d4d776b6ede4a7d50\r
+\r
+I=7\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000c3fae917\r
+CT=3b73f21613077af7df6c846e3f8fb58d\r
+\r
+I=8\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000c4fbea18\r
+CT=ac127a7d442872579773412198afd493\r
+\r
+I=9\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000c5fceb19\r
+CT=1e2ebc6c9f2e438e1d90d9b9c6853286\r
+\r
+I=10\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000c6fdec1a\r
+CT=76e76b956747cf5046bb168d9362adc4\r
+\r
+I=11\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000c7feed1b\r
+CT=3c8485cda01fdc90d2b4c47bb8f33751\r
+\r
+I=12\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000c8ffee1c\r
+CT=c8f4cdb0e8a978795380fb38ad4de678\r
+\r
+I=13\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ca00ef1d\r
+CT=2c729e45c85cdecdae8f0fbe092eab3a\r
+\r
+I=14\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000cb01f01e\r
+CT=6560f2b22887ae223005bbb05a2260db\r
+\r
+I=15\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000cc02f11f\r
+CT=8012dbd3638eb2c0e68221fc5d2266ae\r
+\r
+I=16\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000cd03f220\r
+CT=bea980f52a51bd77dafc30fc0849b40b\r
+\r
+I=17\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ce04f321\r
+CT=f8c34940b6ed541f837b0ba671b64a32\r
+\r
+I=18\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000cf05f422\r
+CT=f61772310e2160770eb7e7e92469ff32\r
+\r
+I=19\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d006f523\r
+CT=9a53d5b202f69834dcfea818decbaa0b\r
+\r
+I=20\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d107f624\r
+CT=3ba22379a8d4685ae070d2f80cf90400\r
+\r
+I=21\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d208f725\r
+CT=732431508da1d498edf3371d029713b3\r
+\r
+I=22\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d309f826\r
+CT=f54a4b5ebdb25687446019a951301a2e\r
+\r
+I=23\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d40af927\r
+CT=f747775f4754d3fcdff1b78ba9a0635f\r
+\r
+I=24\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d50bfa28\r
+CT=357ec52fa860807ee75c90279c7e0a7f\r
+\r
+I=25\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d60cfb29\r
+CT=7d9f065550eeaddaa0d91c8d2703c455\r
+\r
+I=26\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d70dfc2a\r
+CT=879405339c70f1d6f1a74f2e621369b8\r
+\r
+I=27\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d80efd2b\r
+CT=44619791de0bb41aadde063cc3fe7173\r
+\r
+I=28\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000d90ffe2c\r
+CT=4b77919370504b788ffa41c641e6318c\r
+\r
+I=29\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000da10ff2d\r
+CT=e6c906bb4d5a9146cdfdea7f0af75352\r
+\r
+I=30\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000db12002e\r
+CT=6299ce44a51eeb34f7153f200016ebeb\r
+\r
+I=31\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000dc13012f\r
+CT=8c17c0c65dcc3238e27460d0ffa420fd\r
+\r
+I=32\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000dd140230\r
+CT=2244ca8a1d19b2089ef79717d07adce3\r
+\r
+I=33\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000de150331\r
+CT=20def388d640665dd1d6f6d69764d5c5\r
+\r
+I=34\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000df160432\r
+CT=3c49c1fd84a3e4d19803813162eec4d6\r
+\r
+I=35\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e0170533\r
+CT=5776cc1f9242711965b21c1b8ae803cb\r
+\r
+I=36\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e1180634\r
+CT=2c870935cd5c6b2f711ec3e53d5e2a11\r
+\r
+I=37\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e2190735\r
+CT=68078810b191fdce945cc11c217d58c4\r
+\r
+I=38\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e31a0836\r
+CT=579fbb9d14af62219cffadc3ebdb8997\r
+\r
+I=39\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e41b0937\r
+CT=2a4b3d1c1ef3ef764289a2f46ce1944f\r
+\r
+I=40\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e51c0a38\r
+CT=e4c79b7e236b8a5434f509ead641585b\r
+\r
+I=41\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e61d0b39\r
+CT=b3966c525c0df51496616478557ac959\r
+\r
+I=42\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e71e0c3a\r
+CT=9acac84294d5ece39edf40b8c3e46f82\r
+\r
+I=43\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e81f0d3b\r
+CT=fbe4f0b565a0d1208fa90875977e48de\r
+\r
+I=44\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000e9200e3c\r
+CT=b06406f01aaef220b8c70743dc1613e8\r
+\r
+I=45\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ea210f3d\r
+CT=550d3ad75a692d1754b0ca6b780c2a50\r
+\r
+I=46\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000eb22103e\r
+CT=1ef11aaf44642eff5311de9087bcabe5\r
+\r
+I=47\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ec23113f\r
+CT=aa0e5fd8629a46607d125648529e561b\r
+\r
+I=48\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ed241240\r
+CT=e7f76cde1a21b51c1d262761b6cb499e\r
+\r
+I=49\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ee251341\r
+CT=a63c576fb1fe748ad20fda23532cd1d7\r
+\r
+I=50\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ef261442\r
+CT=2a9bb16e750aa414e18cb3fe8c3e9d73\r
+\r
+I=51\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f0271543\r
+CT=ad9493d3f4891ebba47aa9605edb432e\r
+\r
+I=52\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f1281644\r
+CT=7ddd66016279d322bd33ebc065b4b3ad\r
+\r
+I=53\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f2291745\r
+CT=1dcc54c5879dc1e4b78a12747ec47cea\r
+\r
+I=54\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f32a1846\r
+CT=e092b08b7df2d5dc77d023c305446b14\r
+\r
+I=55\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f42b1947\r
+CT=dcd6bb01af27e45b2915c6bdea21e7bf\r
+\r
+I=56\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f52c1a48\r
+CT=bbb325e7bb5f0595142f40038ebe75cd\r
+\r
+I=57\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f62d1b49\r
+CT=28abc4f539715938e86e9003b72a9d9b\r
+\r
+I=58\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f72e1c4a\r
+CT=8e0a6d75bed60fb50f1d27802a3563dc\r
+\r
+I=59\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f82f1d4b\r
+CT=831a34120336799b4183a4892e1755bf\r
+\r
+I=60\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000f9301e4c\r
+CT=60ac7da8344aef4e4f04d623c839130b\r
+\r
+I=61\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000fa311f4d\r
+CT=7e6e45faf7559fb0507b5e013b12c3a1\r
+\r
+I=62\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000fb32204e\r
+CT=106173a7c4cf272ffb4dc3c50af363f6\r
+\r
+I=63\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000fc33214f\r
+CT=f77099a848f7bd4e45f8fa854f1cd7be\r
+\r
+I=64\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000fd342250\r
+CT=7f50659eec6be9f70c424d4d9da38c6c\r
+\r
+I=65\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000fe352351\r
+CT=a86f1fc6a4d3576cf6d7809faf9be6d7\r
+\r
+I=66\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ff362452\r
+CT=36831d0475c00789eacae85697cc31b5\r
+\r
+I=67\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000000372553\r
+CT=447cfb2429a97fbda5a7f4275fd5ebc9\r
+\r
+I=68\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000001382654\r
+CT=5234dc352c95c37b777aa5d450617f7b\r
+\r
+I=69\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000002392755\r
+CT=c63e188c7d9b836ff0b534ea6cc5f20b\r
+\r
+I=70\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000033a2856\r
+CT=9d5967bf2b06ca90c036f8a62f31ea3a\r
+\r
+I=71\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000043b2957\r
+CT=dcc2808ad5339d481629c389f7c7bc48\r
+\r
+I=72\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000053c2a58\r
+CT=0c399d8a15c8239e79f20f6cad60e7de\r
+\r
+I=73\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000063d2b59\r
+CT=5d8af0f9077b7a83a7464a13cc1c77b7\r
+\r
+I=74\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000073e2c5a\r
+CT=2a7a74b3e85868a6a07492cd4ce30d21\r
+\r
+I=75\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000083f2d5b\r
+CT=9d185e3fc2424cb8a6dd49c03665bc21\r
+\r
+I=76\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000009402e5c\r
+CT=60d042b8a09ce79308566dd4685a7467\r
+\r
+I=77\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000000a412f5d\r
+CT=bdcce7b1a9395e1136a2114ef686cebf\r
+\r
+I=78\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000000b42305e\r
+CT=e47a85c95d98a403d145293abfb77276\r
+\r
+I=79\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000000c43315f\r
+CT=ba8e7ecac0412666a03522e3476914fa\r
+\r
+I=80\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000000d443260\r
+CT=579bb11a3955359d61db2f2518de492a\r
+\r
+I=81\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000000e453361\r
+CT=b63e428d919ae14b06704fdff37af4a6\r
+\r
+I=82\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000000f463462\r
+CT=53bd525c401ec7af165690756db03442\r
+\r
+I=83\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000010473563\r
+CT=22e4bfe57bad3b26fa98463b1df22660\r
+\r
+I=84\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000011483664\r
+CT=118213cce381e69d36232369eb7f2e4f\r
+\r
+I=85\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000012493765\r
+CT=95bf4cbff2d7359e9612be999831960c\r
+\r
+I=86\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000134a3866\r
+CT=10e51b350ff07cb0823faca252fd4b5e\r
+\r
+I=87\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000144b3967\r
+CT=30260ef49f59cd1167e7b4463fd2e13c\r
+\r
+I=88\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000154c3a68\r
+CT=45004dc49fd0468fe7e6cd6cb11e004c\r
+\r
+I=89\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000164d3b69\r
+CT=a00304978783a70f39e102c5ee323c15\r
+\r
+I=90\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000174e3c6a\r
+CT=df2b5b5a1981e5c650b4e93d4ac0ce98\r
+\r
+I=91\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000184f3d6b\r
+CT=3b497d0a86566fd8c98c30fef8833abb\r
+\r
+I=92\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000019503e6c\r
+CT=2efc72216dc28d7750447e9d3d52f3cc\r
+\r
+I=93\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000001a513f6d\r
+CT=e7c76b0f76cea0e57cdbac0e28aea5db\r
+\r
+I=94\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000001b52406e\r
+CT=432e3e28886dad4554b01b5932522d1d\r
+\r
+I=95\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000001c53416f\r
+CT=209d2a90bad747dc81f703a9f4bec128\r
+\r
+I=96\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000001d544270\r
+CT=f91f84342622518a60a29052d980625a\r
+\r
+I=97\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000001e554371\r
+CT=4d0f49a9d41f498c0099bc6faf234ed6\r
+\r
+I=98\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000001f564472\r
+CT=8a57f034610623afff108a0fca10587a\r
+\r
+I=99\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000020574573\r
+CT=c275e6eef7dddae6f538b22725676738\r
+\r
+I=100\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000021584674\r
+CT=101e5b91d9997d15ef04dd6edbaa8a1b\r
+\r
+I=101\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000022594775\r
+CT=973d748fe7bfefb5bcaaf9c958a76e43\r
+\r
+I=102\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000235a4876\r
+CT=faa7623c9c8b042e5f02aebd14d5409d\r
+\r
+I=103\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000245b4977\r
+CT=945d747f646aeac75b17bdf10082abf9\r
+\r
+I=104\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000255c4a78\r
+CT=1b98918ea254577f98155f0959d33249\r
+\r
+I=105\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000265d4b79\r
+CT=ad1036394dec6c65b0b6014cd3ebb31a\r
+\r
+I=106\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000275e4c7a\r
+CT=b9bdc22f9a413547b67c6608204d70d9\r
+\r
+I=107\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000285f4d7b\r
+CT=406240b2dde247346d65c7174be74221\r
+\r
+I=108\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000029604e7c\r
+CT=82d6683ad6bc93fb6b98b4c916c7af15\r
+\r
+I=109\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000002a614f7d\r
+CT=51fd3aa9bbe162a975200177d29dd996\r
+\r
+I=110\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000002b62507e\r
+CT=20874f837d4e17f72de2009c7b51d6e3\r
+\r
+I=111\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000002c63517f\r
+CT=d063b4437c20e79f7e7c39b423312003\r
+\r
+I=112\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000002d645280\r
+CT=0023292a810e0ee5ee6dfb8963008816\r
+\r
+I=113\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000002e655381\r
+CT=88b2f9c7eff18759e0a43ac0ba9e8a54\r
+\r
+I=114\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000002f665482\r
+CT=055162e8b0dc2fd0985ca949a159b943\r
+\r
+I=115\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000030675583\r
+CT=460af977dd43a8de8514a227f94daa1a\r
+\r
+I=116\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000031685684\r
+CT=3656b3a06918d139d8c7c8c8d9211bd5\r
+\r
+I=117\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000032695785\r
+CT=c88d662dceae227bd6234712b8ba02d5\r
+\r
+I=118\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000336a5886\r
+CT=86454c391001e6945ba70d4963c5d7eb\r
+\r
+I=119\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000346b5987\r
+CT=5a4cedba9b3744172a65267a565c510f\r
+\r
+I=120\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000356c5a88\r
+CT=64dda5c18daee58689fc1946c6c8a46a\r
+\r
+I=121\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000366d5b89\r
+CT=212d17cc33d8183d97887de43743da8b\r
+\r
+I=122\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000376e5c8a\r
+CT=7cb664075397b303f36fa29335055515\r
+\r
+I=123\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000386f5d8b\r
+CT=78db674c3d1e75f9444c75f0b7fbaeda\r
+\r
+I=124\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000039705e8c\r
+CT=183e14f3eead542b5f6611314789ac11\r
+\r
+I=125\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000003a715f8d\r
+CT=2f822f65ed936ad0bf1f6ac6cec202f7\r
+\r
+I=126\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000003b72608e\r
+CT=8165dac4749e0c4c4c473199da9317ee\r
+\r
+I=127\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000003c73618f\r
+CT=abbbbac1cae7fefa1500698ea34288e9\r
+\r
+I=128\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000003d746290\r
+CT=bea12da6ca5afcccd0bba52a70b3827d\r
+\r
+I=129\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000003e756391\r
+CT=8c44e23f842c7987cc8bd3d62b55db5a\r
+\r
+I=130\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000003f766492\r
+CT=3c5b8ccf83ac8af6556d615f4ed4507b\r
+\r
+I=131\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000040776593\r
+CT=5d65b40f21183e7f4108bb86d5196aa2\r
+\r
+I=132\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000041786694\r
+CT=b0bdbab343df9619d6a6dfe55e48ef31\r
+\r
+I=133\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000042796795\r
+CT=da2b151c3ec2c626629f7bdb80c65d84\r
+\r
+I=134\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000437a6896\r
+CT=22001928278748422b3c8db7c19f726f\r
+\r
+I=135\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000447b6997\r
+CT=4603026213d8358235bf31cafc95c33b\r
+\r
+I=136\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000457c6a98\r
+CT=1bc10bb1d0a0b9b17e174c460eab15bf\r
+\r
+I=137\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000467d6b99\r
+CT=266a63551bb0a9ad0dbda1f54f6617ed\r
+\r
+I=138\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000477e6c9a\r
+CT=680c722664281702f045807833faf3c9\r
+\r
+I=139\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000487f6d9b\r
+CT=56fc9d0a51d9e34a4deffaa8267fe220\r
+\r
+I=140\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000049806e9c\r
+CT=0a6a45e955a11badb09bc6db1f278708\r
+\r
+I=141\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000004a816f9d\r
+CT=f6242db2eafb31da660665a680298655\r
+\r
+I=142\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000004b82709e\r
+CT=3eb89660494cfedb5b33e192e8637c83\r
+\r
+I=143\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000004c83719f\r
+CT=73cc92edcf79c2020df6f8b366973874\r
+\r
+I=144\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000004d8472a0\r
+CT=2b417eca2e0766dc81e47c7189355529\r
+\r
+I=145\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000004e8573a1\r
+CT=ef1ee4b07418f816c7a97842b4e3799a\r
+\r
+I=146\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000004f8674a2\r
+CT=31daf598aaa2812d3a8fca33d9463186\r
+\r
+I=147\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000508775a3\r
+CT=04970e556543a0491c4d0ac26f79d702\r
+\r
+I=148\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000518876a4\r
+CT=75974cccd6b0f6532d9174e38682ea17\r
+\r
+I=149\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000528977a5\r
+CT=39bd529deff746f4d328c525aef72ea2\r
+\r
+I=150\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000538a78a6\r
+CT=00558cf192a076104f529d511d2e2522\r
+\r
+I=151\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000548b79a7\r
+CT=5bbe55f61cf5508170e72268078c7f89\r
+\r
+I=152\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000558c7aa8\r
+CT=908b0b2e2e0b62d8543195f140e0b195\r
+\r
+I=153\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000568d7ba9\r
+CT=29ad082ac5e7effb54392648d8de7eff\r
+\r
+I=154\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000578e7caa\r
+CT=2167b24376c9b2da92aaa526e0eb5ba5\r
+\r
+I=155\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000588f7dab\r
+CT=00c8182757fc52f819c3ad44de6d88f6\r
+\r
+I=156\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000059907eac\r
+CT=381317768987fda2a7e2b2654e17f5e3\r
+\r
+I=157\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000005a917fad\r
+CT=cc4e72186b133a9cbf5adf8664df4ed0\r
+\r
+I=158\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000005b9280ae\r
+CT=c52a681a20fd9b8f89e833ecc303f880\r
+\r
+I=159\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000005c9381af\r
+CT=e8f75600640ee6da9f5f85695ccdeac4\r
+\r
+I=160\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000005d9482b0\r
+CT=5da0ad46e6f3dde1e811bae75951f0ec\r
+\r
+I=161\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000005e9583b1\r
+CT=b8e8e69ae4072135d1cf24740f901d88\r
+\r
+I=162\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000005f9684b2\r
+CT=c94c40161476a6318987945fb1df9762\r
+\r
+I=163\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000609785b3\r
+CT=012dd7967f34f7e80e1c2a31a6f0c21b\r
+\r
+I=164\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000619886b4\r
+CT=66f0bd99f97ba97a28f0e3a58cff986c\r
+\r
+I=165\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000629987b5\r
+CT=aeaa698da50bd336f561516c781c9f99\r
+\r
+I=166\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000639a88b6\r
+CT=33f74910a2b7c972ce451e03bcacb060\r
+\r
+I=167\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000649b89b7\r
+CT=2596b758321da2f4418cbf3094c4b3cc\r
+\r
+I=168\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000659c8ab8\r
+CT=ac4b40f1beb3394473f77369b4b212bb\r
+\r
+I=169\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000669d8bb9\r
+CT=de6182b0ef3c7a7064bc510b7e658591\r
+\r
+I=170\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000679e8cba\r
+CT=74b7bb0f1e233deee6ba5342fcb315ba\r
+\r
+I=171\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000689f8dbb\r
+CT=9cca928dde9eb5363421d829dba1f73f\r
+\r
+I=172\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000069a08ebc\r
+CT=6f472acb4e2aa9f364bdf06ff01212e4\r
+\r
+I=173\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000006aa18fbd\r
+CT=4526738a6ea2e38ff4948475ef1d0514\r
+\r
+I=174\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000006ba290be\r
+CT=cd0553cd00333023f8f073e88335eb94\r
+\r
+I=175\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000006ca391bf\r
+CT=2c95f9be0d62811fa148faa213ab044a\r
+\r
+I=176\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000006da492c0\r
+CT=0a56a918271ad706c469f1c64a68b0e8\r
+\r
+I=177\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000006ea593c1\r
+CT=cc55817132b7b952d61ef2ebb9b85376\r
+\r
+I=178\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000006fa694c2\r
+CT=407c1e19ca5bb018f67a5cf045cbcf54\r
+\r
+I=179\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000070a795c3\r
+CT=6c0dbd17a96ab1db1749474301588b8d\r
+\r
+I=180\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000071a896c4\r
+CT=d56ed97fcc4303e5a735cb0d7b3829a0\r
+\r
+I=181\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000072a997c5\r
+CT=07ebf85e23c6a9f2810aaa006729e9af\r
+\r
+I=182\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000073aa98c6\r
+CT=57fcf99aeab65013f768f3e7d40e3242\r
+\r
+I=183\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000074ab99c7\r
+CT=9be962a611715e2f9a330583e8627020\r
+\r
+I=184\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000075ac9ac8\r
+CT=05cb26c27ba7f9a6bf1a522463545918\r
+\r
+I=185\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000076ad9bc9\r
+CT=ee8616ed9d8afbe51535cf33c41382f9\r
+\r
+I=186\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000077ae9cca\r
+CT=b8abb79f315b44b3485441480c5dffb2\r
+\r
+I=187\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000078af9dcb\r
+CT=5d585bf1e68e12b511a8d2549e14d5fd\r
+\r
+I=188\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000079b09ecc\r
+CT=4af119427e6f5555f81a3cda4a2c0258\r
+\r
+I=189\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000007ab19fcd\r
+CT=e8b683c9995fca0494134cdebe5cf31f\r
+\r
+I=190\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000007bb2a0ce\r
+CT=3d2a3238738efc5df2b4fa69cf0b8e65\r
+\r
+I=191\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000007cb3a1cf\r
+CT=4286a7fdcd0c2ed2b0a6d0ea285b6b34\r
+\r
+I=192\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000007db4a2d0\r
+CT=6b44959b200ee6d5b7514913cc812590\r
+\r
+I=193\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000007eb5a3d1\r
+CT=3c62a0bb3f78f5db8cd56918b4c17951\r
+\r
+I=194\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000007fb6a4d2\r
+CT=e61a6e4259414ea3b01e5312f2c18d70\r
+\r
+I=195\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000080b7a5d3\r
+CT=d7cd642233a7287aa8a9039430c84c1a\r
+\r
+I=196\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000081b8a6d4\r
+CT=65924ffae31d08bc7db686a4fdb3796c\r
+\r
+I=197\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000082b9a7d5\r
+CT=74ab65174ca5fa8ab7150b1ca352ca7a\r
+\r
+I=198\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000083baa8d6\r
+CT=8f40682de5a6453ba2451b1c0f8e9955\r
+\r
+I=199\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000084bba9d7\r
+CT=05db30f7137e0bcdb701450bd61bfefa\r
+\r
+I=200\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000085bcaad8\r
+CT=9e96d404c8a6d57dc79bd74ad293c0b6\r
+\r
+I=201\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000086bdabd9\r
+CT=7cee555df89da1bf5e3149d252d66a3c\r
+\r
+I=202\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000087beacda\r
+CT=ce9ffd11994ac818037f091b90f56fc6\r
+\r
+I=203\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000088bfaddb\r
+CT=22fa239c7c70339ea9b26326a93fb133\r
+\r
+I=204\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000089c0aedc\r
+CT=373b1dc15858e9bb06a6d4ca7d6f3339\r
+\r
+I=205\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000008ac1afdd\r
+CT=e1b9862486cec915035d3025874a3871\r
+\r
+I=206\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000008bc2b0de\r
+CT=a7d2cb0d597289f32095bc11024b8a01\r
+\r
+I=207\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000008cc3b1df\r
+CT=2e6bc9fa57142444a9c6e4788e8b053b\r
+\r
+I=208\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000008dc4b2e0\r
+CT=7a23d793235fe6fffc68777c7d22df0b\r
+\r
+I=209\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000008ec5b3e1\r
+CT=f5a01d28dccbfd9b9152b03b07e3ffee\r
+\r
+I=210\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000008fc6b4e2\r
+CT=4ebcb6d6bf0001e5487b6004653a7fc3\r
+\r
+I=211\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000090c7b5e3\r
+CT=bb534bf89a79dd65ab3746103e659912\r
+\r
+I=212\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000091c8b6e4\r
+CT=aaa6fdbd9cb341d88775a4645208b884\r
+\r
+I=213\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000092c9b7e5\r
+CT=0414855ba2db3129770f23ce0b04a979\r
+\r
+I=214\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000093cab8e6\r
+CT=ccf187e6727aa79af1e025975ec18ef6\r
+\r
+I=215\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000094cbb9e7\r
+CT=129943deb3fec66e8583e9234b51a8ce\r
+\r
+I=216\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000095ccbae8\r
+CT=7510831985efd85dd9b7e7a2eaea19fb\r
+\r
+I=217\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000096cdbbe9\r
+CT=504eb2de18ef3385638e025abb3d779f\r
+\r
+I=218\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000097cebcea\r
+CT=2580738153a0db349926469c9d8e68fa\r
+\r
+I=219\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000098cfbdeb\r
+CT=215fca0ad9411f91fa418e682673eed9\r
+\r
+I=220\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=00000000000000000000000099d0beec\r
+CT=3e9429668f70303b189e05ef58f7ae9d\r
+\r
+I=221\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000009ad1bfed\r
+CT=9292787916f31ba18f28c83fe8fe9998\r
+\r
+I=222\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000009bd2c0ee\r
+CT=babcca367e31acaa745d16188de93c75\r
+\r
+I=223\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000009cd3c1ef\r
+CT=ea09dd401093d429bef30c6e9e839294\r
+\r
+I=224\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000009dd4c2f0\r
+CT=415604b05491e132b6e4602fe4a39065\r
+\r
+I=225\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000009ed5c3f1\r
+CT=7003f0078d0f769e65a1ee7882d1c963\r
+\r
+I=226\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=0000000000000000000000009fd6c4f2\r
+CT=3c23b8d97d8f711afb9853389a52ad78\r
+\r
+I=227\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a0d7c5f3\r
+CT=a554f138cf610750154ab34d6a471b96\r
+\r
+I=228\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a1d8c6f4\r
+CT=3e7656487177ff76dc80b80da4bb29a8\r
+\r
+I=229\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a2d9c7f5\r
+CT=6b72061428c4171c63cdd86f72e8a988\r
+\r
+I=230\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a3dac8f6\r
+CT=fbc094633c6c4b15c4bc16f23c85654f\r
+\r
+I=231\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a4dbc9f7\r
+CT=af073332e2551a07c6563e3ff7259a79\r
+\r
+I=232\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a5dccaf8\r
+CT=24f2a30821bab1d5679f24e0ddd3c2af\r
+\r
+I=233\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a6ddcbf9\r
+CT=27a80f9f110b4cd37df649545eb10118\r
+\r
+I=234\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a7deccfa\r
+CT=6b060c8c8f6380cc98e028d18c9ca0c0\r
+\r
+I=235\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a8dfcdfb\r
+CT=4079b0d2887d0cf446dc7dc132abc745\r
+\r
+I=236\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000a9e0cefc\r
+CT=dfdb8680d5b4b70928c807632d29803b\r
+\r
+I=237\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000aae1cffd\r
+CT=84cca1803397ea1c6db50e72270d4a2a\r
+\r
+I=238\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000abe2d0fe\r
+CT=701a71ff5e1fdff521e33cf9939f97d2\r
+\r
+I=239\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ace3d1ff\r
+CT=ed85e5e58ee3e0cfba06c9d9e3705653\r
+\r
+I=240\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000ade4d300\r
+CT=acaaf60ab304babddedadff9c06b0fc9\r
+\r
+I=241\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000aee5d401\r
+CT=1f6fb76c739fc6c8175885bfbcb43f97\r
+\r
+I=242\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000afe6d502\r
+CT=67da44d5df2b9e6cc2cb681ed4169903\r
+\r
+I=243\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b0e7d603\r
+CT=430145e2fc9a348eccf516b84dde1176\r
+\r
+I=244\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b1e8d704\r
+CT=a85160d389f8e47797b7e7f209898c4c\r
+\r
+I=245\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b2e9d805\r
+CT=aab348855cac0dc7bdf2fa02757a2154\r
+\r
+I=246\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b3ead906\r
+CT=5c72aa3065edb91556196a5c28af7155\r
+\r
+I=247\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b4ebda07\r
+CT=9f151952867770c6038d96b3236ada5b\r
+\r
+I=248\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b5ecdb08\r
+CT=7fc18b495733e6594db775e5420f66b1\r
+\r
+I=249\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b6eddc09\r
+CT=54828e2cfcb574d441a83e58fe0175b2\r
+\r
+I=250\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b7eedd0a\r
+CT=70b6e0e8404f9231f0de528086d7bd20\r
+\r
+I=251\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b8efde0b\r
+CT=4f07ab67b3958c008209090ed3a41798\r
+\r
+I=252\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000b9f0df0c\r
+CT=b9e2c687cc4ef28977ba76b4d07ba88d\r
+\r
+I=253\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000baf1e00d\r
+CT=1613ba9d32eff76fb4c281bbdf1f8ed3\r
+\r
+I=254\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000bbf2e10e\r
+CT=2da2e0b389d1905a1f18794270d6776d\r
+\r
+I=255\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000bcf3e20f\r
+CT=68d1185cd8528377f77a9373bb4c46d1\r
+\r
+I=256\r
+KEY=2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604\r
+PT=000000000000000000000000bdf4e310\r
+CT=33b08e8c46ef59020f89a85134a2664c\r
+\r
+==========\r
diff --git a/tests/rc2 b/tests/rc2
new file mode 100644 (file)
index 0000000..d6f9e74
--- /dev/null
+++ b/tests/rc2
@@ -0,0 +1,15 @@
+# Test vectors for RC2
+#
+# $Id: rc2,v 1.1 2000/06/17 12:11:49 mdw Exp $
+
+rc2 {
+   0000000000000000 63 0000000000000000 ebb773f993278eff;
+   ffffffffffffffff 64 ffffffffffffffff 278b27e42e2f0d49;
+   3000000000000000 64 1000000000000001 30649edf9be7d2c2;
+   88 64 0000000000000000 61a8a244adacccf0;
+   88bca90e90875a 64 0000000000000000 6ccf4308974c267f;
+   88bca90e90875a7f0f79c384627bafb2 64 0000000000000000 1a807d272bbe5db1;
+   88bca90e90875a7f0f79c384627bafb2 128 0000000000000000 2269552ab0f85ca6;
+   88bca90e90875a7f0f79c384627bafb216f80a6f85920584c42fceb0be255daf1e 129
+   0000000000000000 5b78d3a43dfff1f1;
+}
diff --git a/tests/rijndael.aes b/tests/rijndael.aes
new file mode 100644 (file)
index 0000000..4dd4c9c
--- /dev/null
@@ -0,0 +1,1954 @@
+/* Description of what tables are tested:
+   The provided implementations each use a different set of tables
+    - Java implementation: uses no tables
+    - reference C implementation: uses Logtable, Alogtable, S, Si, rcon
+    - fast C implementation: uses Logtable, Alogtable,  rcon
+        and additionally, T1, T2, T3, T4, T5, T6, T7, T8
+   All these tables are tested.
+
+=========================
+
+FILENAME:  "ecb_tbl.txt"
+
+Electronic Codebook (ECB) Mode
+Tables Known Answer Tests
+
+Algorithm Name: Rijndael
+Principal Submitter: Joan Daemen
+
+==========
+
+KEYSIZE=128
+
+
+I=1
+KEY=00010203050607080A0B0C0D0F101112
+PT=506812A45F08C889B97F5980038B8359
+CT=D8F532538289EF7D06B506A4FD5BE9C9
+
+I=2
+KEY=14151617191A1B1C1E1F202123242526
+PT=5C6D71CA30DE8B8B00549984D2EC7D4B
+CT=59AB30F4D4EE6E4FF9907EF65B1FB68C
+
+I=3
+KEY=28292A2B2D2E2F30323334353738393A
+PT=53F3F4C64F8616E4E7C56199F48F21F6
+CT=BF1ED2FCB2AF3FD41443B56D85025CB1
+
+I=4
+KEY=3C3D3E3F41424344464748494B4C4D4E
+PT=A1EB65A3487165FB0F1C27FF9959F703
+CT=7316632D5C32233EDCB0780560EAE8B2
+
+I=5
+KEY=50515253555657585A5B5C5D5F606162
+PT=3553ECF0B1739558B08E350A98A39BFA
+CT=408C073E3E2538072B72625E68B8364B
+
+I=6
+KEY=64656667696A6B6C6E6F707173747576
+PT=67429969490B9711AE2B01DC497AFDE8
+CT=E1F94DFA776597BEACA262F2F6366FEA
+
+I=7
+KEY=78797A7B7D7E7F80828384858788898A
+PT=93385C1F2AEC8BED192F5A8E161DD508
+CT=F29E986C6A1C27D7B29FFD7EE92B75F1
+
+I=8
+KEY=8C8D8E8F91929394969798999B9C9D9E
+PT=B5BF946BE19BEB8DB3983B5F4C6E8DDB
+CT=131C886A57F8C2E713ABA6955E2B55B5
+
+I=9
+KEY=A0A1A2A3A5A6A7A8AAABACADAFB0B1B2
+PT=41321EE10E21BD907227C4450FF42324
+CT=D2AB7662DF9B8C740210E5EEB61C199D
+
+I=10
+KEY=B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6
+PT=00A82F59C91C8486D12C0A80124F6089
+CT=14C10554B2859C484CAB5869BBE7C470
+
+I=11
+KEY=C8C9CACBCDCECFD0D2D3D4D5D7D8D9DA
+PT=7CE0FD076754691B4BBD9FAF8A1372FE
+CT=DB4D498F0A49CF55445D502C1F9AB3B5
+
+I=12
+KEY=DCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE
+PT=23605A8243D07764541BC5AD355B3129
+CT=6D96FEF7D66590A77A77BB2056667F7F
+
+I=13
+KEY=F0F1F2F3F5F6F7F8FAFBFCFDFE010002
+PT=12A8CFA23EA764FD876232B4E842BC44
+CT=316FB68EDBA736C53E78477BF913725C
+
+I=14
+KEY=04050607090A0B0C0E0F101113141516
+PT=BCAF32415E8308B3723E5FDD853CCC80
+CT=6936F2B93AF8397FD3A771FC011C8C37
+
+I=15
+KEY=2C2D2E2F31323334363738393B3C3D3E
+PT=89AFAE685D801AD747ACE91FC49ADDE0
+CT=F3F92F7A9C59179C1FCC2C2BA0B082CD
+
+I=16
+KEY=40414243454647484A4B4C4D4F505152
+PT=F521D07B484357C4A69E76124A634216
+CT=6A95EA659EE3889158E7A9152FF04EBC
+
+I=17
+KEY=54555657595A5B5C5E5F606163646566
+PT=3E23B3BC065BCC152407E23896D77783
+CT=1959338344E945670678A5D432C90B93
+
+I=18
+KEY=68696A6B6D6E6F70727374757778797A
+PT=79F0FBA002BE1744670E7E99290D8F52
+CT=E49BDDD2369B83EE66E6C75A1161B394
+
+I=19
+KEY=7C7D7E7F81828384868788898B8C8D8E
+PT=DA23FE9D5BD63E1D72E3DAFBE21A6C2A
+CT=D3388F19057FF704B70784164A74867D
+
+I=20
+KEY=A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6
+PT=E3F5698BA90B6A022EFD7DB2C7E6C823
+CT=23AA03E2D5E4CD24F3217E596480D1E1
+
+I=21
+KEY=E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2
+PT=BDC2691D4F1B73D2700679C3BCBF9C6E
+CT=C84113D68B666AB2A50A8BDB222E91B9
+
+I=22
+KEY=08090A0B0D0E0F10121314151718191A
+PT=BA74E02093217EE1BA1B42BD5624349A
+CT=AC02403981CD4340B507963DB65CB7B6
+
+I=23
+KEY=6C6D6E6F71727374767778797B7C7D7E
+PT=B5C593B5851C57FBF8B3F57715E8F680
+CT=8D1299236223359474011F6BF5088414
+
+I=24
+KEY=80818283858687888A8B8C8D8F909192
+PT=3DA9BD9CEC072381788F9387C3BBF4EE
+CT=5A1D6AB8605505F7977E55B9A54D9B90
+
+I=25
+KEY=94959697999A9B9C9E9FA0A1A3A4A5A6
+PT=4197F3051121702AB65D316B3C637374
+CT=72E9C2D519CF555E4208805AABE3B258
+
+I=26
+KEY=A8A9AAABADAEAFB0B2B3B4B5B7B8B9BA
+PT=9F46C62EC4F6EE3F6E8C62554BC48AB7
+CT=A8F3E81C4A23A39EF4D745DFFE026E80
+
+I=27
+KEY=BCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE
+PT=0220673FE9E699A4EBC8E0DBEB6979C8
+CT=546F646449D31458F9EB4EF5483AEE6C
+
+I=28
+KEY=D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2
+PT=B2B99171337DED9BC8C2C23FF6F18867
+CT=4DBE4BC84AC797C0EE4EFB7F1A07401C
+
+I=29
+KEY=E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6
+PT=A7FACF4E301E984E5EFEEFD645B23505
+CT=25E10BFB411BBD4D625AC8795C8CA3B3
+
+I=30
+KEY=F8F9FAFBFDFEFE00020304050708090A
+PT=F7C762E4A9819160FD7ACFB6C4EEDCDD
+CT=315637405054EC803614E43DEF177579
+
+I=31
+KEY=0C0D0E0F11121314161718191B1C1D1E
+PT=9B64FC21EA08709F4915436FAA70F1BE
+CT=60C5BC8A1410247295C6386C59E572A8
+
+I=32
+KEY=20212223252627282A2B2C2D2F303132
+PT=52AF2C3DE07EE6777F55A4ABFC100B3F
+CT=01366FC8CA52DFE055D6A00A76471BA6
+
+I=33
+KEY=34353637393A3B3C3E3F404143444546
+PT=2FCA001224386C57AA3F968CBE2C816F
+CT=ECC46595516EC612449C3F581E7D42FF
+
+I=34
+KEY=48494A4B4D4E4F50525354555758595A
+PT=4149C73658A4A9C564342755EE2C132F
+CT=6B7FFE4C602A154B06EE9C7DAB5331C9
+
+I=35
+KEY=5C5D5E5F61626364666768696B6C6D6E
+PT=AF60005A00A1772F7C07A48A923C23D2
+CT=7DA234C14039A240DD02DD0FBF84EB67
+
+I=36
+KEY=70717273757677787A7B7C7D7F808182
+PT=6FCCBC28363759914B6F0280AFAF20C6
+CT=C7DC217D9E3604FFE7E91F080ECD5A3A
+
+I=37
+KEY=84858687898A8B8C8E8F909193949596
+PT=7D82A43DDF4FEFA2FC5947499884D386
+CT=37785901863F5C81260EA41E7580CDA5
+
+I=38
+KEY=98999A9B9D9E9FA0A2A3A4A5A7A8A9AA
+PT=5D5A990EAAB9093AFE4CE254DFA49EF9
+CT=A07B9338E92ED105E6AD720FCCCE9FE4
+
+I=39
+KEY=ACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE
+PT=4CD1E2FD3F4434B553AAE453F0ED1A02
+CT=AE0FB9722418CC21A7DA816BBC61322C
+
+I=40
+KEY=C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2
+PT=5A2C9A9641D4299125FA1B9363104B5E
+CT=C826A193080FF91FFB21F71D3373C877
+
+I=41
+KEY=D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6
+PT=B517FE34C0FA217D341740BFD4FE8DD4
+CT=1181B11B0E494E8D8B0AA6B1D5AC2C48
+
+I=42
+KEY=E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FA
+PT=014BAF2278A69D331D5180103643E99A
+CT=6743C3D1519AB4F2CD9A78AB09A511BD
+
+I=43
+KEY=FCFDFEFF01020304060708090B0C0D0E
+PT=B529BD8164F20D0AA443D4932116841C
+CT=DC55C076D52BACDF2EEFD952946A439D
+
+I=44
+KEY=10111213151617181A1B1C1D1F202122
+PT=2E596DCBB2F33D4216A1176D5BD1E456
+CT=711B17B590FFC72B5C8E342B601E8003
+
+I=45
+KEY=24252627292A2B2C2E2F303133343536
+PT=7274A1EA2B7EE2424E9A0E4673689143
+CT=19983BB0950783A537E1339F4AA21C75
+
+I=46
+KEY=38393A3B3D3E3F40424344454748494A
+PT=AE20020BD4F13E9D90140BEE3B5D26AF
+CT=3BA7762E15554169C0F4FA39164C410C
+
+I=47
+KEY=4C4D4E4F51525354565758595B5C5D5E
+PT=BAAC065DA7AC26E855E79C8849D75A02
+CT=A0564C41245AFCA7AF8AA2E0E588EA89
+
+I=48
+KEY=60616263656667686A6B6C6D6F707172
+PT=7C917D8D1D45FAB9E2540E28832540CC
+CT=5E36A42A2E099F54AE85ECD92E2381ED
+
+I=49
+KEY=74757677797A7B7C7E7F808183848586
+PT=BDE6F89E16DAADB0E847A2A614566A91
+CT=770036F878CD0F6CA2268172F106F2FE
+
+I=50
+KEY=88898A8B8D8E8F90929394959798999A
+PT=C9DE163725F1F5BE44EBB1DB51D07FBC
+CT=7E4E03908B716116443CCF7C94E7C259
+
+I=51
+KEY=9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE
+PT=3AF57A58F0C07DFFA669572B521E2B92
+CT=482735A48C30613A242DD494C7F9185D
+
+I=52
+KEY=B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2
+PT=3D5EBAC306DDE4604F1B4FBBBFCDAE55
+CT=B4C0F6C9D4D7079ADDF9369FC081061D
+
+I=53
+KEY=C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6
+PT=C2DFA91BCEB76A1183C995020AC0B556
+CT=D5810FE0509AC53EDCD74F89962E6270
+
+I=54
+KEY=D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EA
+PT=C70F54305885E9A0746D01EC56C8596B
+CT=03F17A16B3F91848269ECDD38EBB2165
+
+I=55
+KEY=ECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE
+PT=C4F81B610E98012CE000182050C0C2B2
+CT=DA1248C3180348BAD4A93B4D9856C9DF
+
+I=56
+KEY=00010203050607080A0B0C0D0F101112
+PT=EAAB86B1D02A95D7404EFF67489F97D4
+CT=3D10D7B63F3452C06CDF6CCE18BE0C2C
+
+I=57
+KEY=14151617191A1B1C1E1F202123242526
+PT=7C55BDB40B88870B52BEC3738DE82886
+CT=4AB823E7477DFDDC0E6789018FCB6258
+
+I=58
+KEY=28292A2B2D2E2F30323334353738393A
+PT=BA6EAA88371FF0A3BD875E3F2A975CE0
+CT=E6478BA56A77E70CFDAA5C843ABDE30E
+
+I=59
+KEY=3C3D3E3F41424344464748494B4C4D4E
+PT=08059130C4C24BD30CF0575E4E0373DC
+CT=1673064895FBEAF7F09C5429FF75772D
+
+I=60
+KEY=50515253555657585A5B5C5D5F606162
+PT=9A8EAB004EF53093DFCF96F57E7EDA82
+CT=4488033AE9F2EFD0CA9383BFCA1A94E9
+
+I=61
+KEY=64656667696A6B6C6E6F707173747576
+PT=0745B589E2400C25F117B1D796C28129
+CT=978F3B8C8F9D6F46626CAC3C0BCB9217
+
+I=62
+KEY=78797A7B7D7E7F80828384858788898A
+PT=2F1777781216CEC3F044F134B1B92BBE
+CT=E08C8A7E582E15E5527F1D9E2EECB236
+
+I=63
+KEY=8C8D8E8F91929394969798999B9C9D9E
+PT=353A779FFC541B3A3805D90CE17580FC
+CT=CEC155B76AC5FFDA4CF4F9CA91E49A7A
+
+I=64
+KEY=A0A1A2A3A5A6A7A8AAABACADAFB0B1B2
+PT=1A1EAE4415CEFCF08C4AC1C8F68BEA8F
+CT=D5AC7165763225DD2A38CDC6862C29AD
+
+I=65
+KEY=B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6
+PT=E6E7E4E5B0B3B2B5D4D5AAAB16111013
+CT=03680FE19F7CE7275452020BE70E8204
+
+I=66
+KEY=C8C9CACBCDCECFD0D2D3D4D5D7D8D9DA
+PT=F8F9FAFBFBF8F9E677767170EFE0E1E2
+CT=461DF740C9781C388E94BB861CEB54F6
+
+I=67
+KEY=DCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE
+PT=63626160A1A2A3A445444B4A75727370
+CT=451BD60367F96483042742219786A074
+
+I=68
+KEY=F0F1F2F3F5F6F7F8FAFBFCFDFE010002
+PT=717073720605040B2D2C2B2A05FAFBF9
+CT=E4DFA42671A02E57EF173B85C0EA9F2B
+
+I=69
+KEY=04050607090A0B0C0E0F101113141516
+PT=78797A7BEAE9E8EF3736292891969794
+CT=ED11B89E76274282227D854700A78B9E
+
+I=70
+KEY=18191A1B1D1E1F20222324252728292A
+PT=838281803231300FDDDCDBDAA0AFAEAD
+CT=433946EAA51EA47AF33895F2B90B3B75
+
+I=71
+KEY=2C2D2E2F31323334363738393B3C3D3E
+PT=18191A1BBFBCBDBA75747B7A7F78797A
+CT=6BC6D616A5D7D0284A5910AB35022528
+
+I=72
+KEY=40414243454647484A4B4C4D4F505152
+PT=848586879B989996A3A2A5A4849B9A99
+CT=D2A920ECFE919D354B5F49EAE9719C98
+
+I=73
+KEY=54555657595A5B5C5E5F606163646566
+PT=0001020322212027CACBF4F551565754
+CT=3A061B17F6A92885EFBD0676985B373D
+
+I=74
+KEY=68696A6B6D6E6F70727374757778797A
+PT=CECFCCCDAFACADB2515057564A454447
+CT=FADEEC16E33EA2F4688499D157E20D8F
+
+I=75
+KEY=7C7D7E7F81828384868788898B8C8D8E
+PT=92939091CDCECFC813121D1C80878685
+CT=5CDEFEDE59601AA3C3CDA36FA6B1FA13
+
+I=76
+KEY=90919293959697989A9B9C9D9FA0A1A2
+PT=D2D3D0D16F6C6D6259585F5ED1EEEFEC
+CT=9574B00039844D92EBBA7EE8719265F8
+
+I=77
+KEY=A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6
+PT=ACADAEAF878485820F0E1110D5D2D3D0
+CT=9A9CF33758671787E5006928188643FA
+
+I=78
+KEY=B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CA
+PT=9091929364676619E6E7E0E1757A7B78
+CT=2CDDD634C846BA66BB46CBFEA4A674F9
+
+I=79
+KEY=CCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE
+PT=BABBB8B98A89888F74757A7B92959497
+CT=D28BAE029393C3E7E26E9FAFBBB4B98F
+
+I=80
+KEY=E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2
+PT=8D8C8F8E6E6D6C633B3A3D3CCAD5D4D7
+CT=EC27529B1BEE0A9AB6A0D73EBC82E9B7
+
+I=81
+KEY=F4F5F6F7F9FAFBFCFEFE010103040506
+PT=86878485010203040808F7F767606162
+CT=3CB25C09472AFF6EE7E2B47CCD7CCB17
+
+I=82
+KEY=08090A0B0D0E0F10121314151718191A
+PT=8E8F8C8D656667788A8B8C8D010E0F0C
+CT=DEE33103A7283370D725E44CA38F8FE5
+
+I=83
+KEY=1C1D1E1F21222324262728292B2C2D2E
+PT=C8C9CACB858687807A7B7475E7E0E1E2
+CT=27F9BCD1AAC64BFFC11E7815702C1A69
+
+I=84
+KEY=30313233353637383A3B3C3D3F404142
+PT=6D6C6F6E5053525D8C8D8A8BADD2D3D0
+CT=5DF534FFAD4ED0749A9988E9849D0021
+
+I=85
+KEY=44454647494A4B4C4E4F505153545556
+PT=28292A2B393A3B3C0607181903040506
+CT=A48BEE75DB04FB60CA2B80F752A8421B
+
+I=86
+KEY=58595A5B5D5E5F60626364656768696A
+PT=A5A4A7A6B0B3B28DDBDADDDCBDB2B3B0
+CT=024C8CF70BC86EE5CE03678CB7AF45F9
+
+I=87
+KEY=6C6D6E6F71727374767778797B7C7D7E
+PT=323330316467666130313E3F2C2B2A29
+CT=3C19AC0F8A3A3862CE577831301E166B
+
+I=88
+KEY=80818283858687888A8B8C8D8F909192
+PT=27262524080B0A05171611100B141516
+CT=C5E355B796A57421D59CA6BE82E73BCA
+
+I=89
+KEY=94959697999A9B9C9E9FA0A1A3A4A5A6
+PT=040506074142434435340B0AA3A4A5A6
+CT=D94033276417ABFB05A69D15B6E386E2
+
+I=90
+KEY=A8A9AAABADAEAFB0B2B3B4B5B7B8B9BA
+PT=242526271112130C61606766BDB2B3B0
+CT=24B36559EA3A9B9B958FE6DA3E5B8D85
+
+I=91
+KEY=BCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE
+PT=4B4A4948252627209E9F9091CEC9C8CB
+CT=20FD4FEAA0E8BF0CCE7861D74EF4CB72
+
+I=92
+KEY=D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2
+PT=68696A6B6665646B9F9E9998D9E6E7E4
+CT=350E20D5174277B9EC314C501570A11D
+
+I=93
+KEY=E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6
+PT=34353637C5C6C7C0F0F1EEEF7C7B7A79
+CT=87A29D61B7C604D238FE73045A7EFD57
+
+I=94
+KEY=F8F9FAFBFDFEFE00020304050708090A
+PT=32333031C2C1C13F0D0C0B0A050A0B08
+CT=2C3164C1CC7D0064816BDC0FAA362C52
+
+I=95
+KEY=0C0D0E0F11121314161718191B1C1D1E
+PT=CDCCCFCEBEBDBCBBABAAA5A4181F1E1D
+CT=195FE5E8A05A2ED594F6E4400EEE10B3
+
+I=96
+KEY=20212223252627282A2B2C2D2F303132
+PT=212023223635343BA0A1A6A7445B5A59
+CT=E4663DF19B9A21A5A284C2BD7F905025
+
+I=97
+KEY=34353637393A3B3C3E3F404143444546
+PT=0E0F0C0DA8ABAAAD2F2E515002050407
+CT=21B88714CFB4E2A933BD281A2C4743FD
+
+I=98
+KEY=48494A4B4D4E4F50525354555758595A
+PT=070605042A2928378E8F8889BDB2B3B0
+CT=CBFC3980D704FD0FC54378AB84E17870
+
+I=99
+KEY=5C5D5E5F61626364666768696B6C6D6E
+PT=CBCAC9C893909196A9A8A7A6A5A2A3A0
+CT=BC5144BAA48BDEB8B63E22E03DA418EF
+
+I=100
+KEY=70717273757677787A7B7C7D7F808182
+PT=80818283C1C2C3CC9C9D9A9B0CF3F2F1
+CT=5A1DBAEF1EE2984B8395DA3BDFFA3CCC
+
+I=101
+KEY=84858687898A8B8C8E8F909193949596
+PT=1213101125262720FAFBE4E5B1B6B7B4
+CT=F0B11CD0729DFCC80CEC903D97159574
+
+I=102
+KEY=98999A9B9D9E9FA0A2A3A4A5A7A8A9AA
+PT=7F7E7D7C3033320D97969190222D2C2F
+CT=9F95314ACFDDC6D1914B7F19A9CC8209
+
+I=103
+KEY=ACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE
+PT=4E4F4C4D484B4A4D81808F8E53545556
+CT=595736F6F0F70914A94E9E007F022519
+
+I=104
+KEY=C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2
+PT=DCDDDEDFB0B3B2BD15141312A1BEBFBC
+CT=1F19F57892CAE586FCDFB4C694DEB183
+
+I=105
+KEY=D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6
+PT=93929190282B2A2DC4C5FAFB92959497
+CT=540700EE1F6F3DAB0B3EDDF6CAEE1EF5
+
+I=106
+KEY=E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FA
+PT=F5F4F7F6C4C7C6D9373631307E717073
+CT=14A342A91019A331687A2254E6626CA2
+
+I=107
+KEY=FCFDFEFF01020304060708090B0C0D0E
+PT=93929190B6B5B4B364656A6B05020300
+CT=7B25F3C3B2EEA18D743EF283140F29FF
+
+I=108
+KEY=10111213151617181A1B1C1D1F202122
+PT=BABBB8B90D0E0F00A4A5A2A3043B3A39
+CT=46C2587D66E5E6FA7F7CA6411AD28047
+
+I=109
+KEY=24252627292A2B2C2E2F303133343536
+PT=D8D9DADB7F7C7D7A10110E0F787F7E7D
+CT=09470E72229D954ED5EE73886DFEEBA9
+
+I=110
+KEY=38393A3B3D3E3F40424344454748494A
+PT=FEFFFCFDEFECED923B3A3D3C6768696A
+CT=D77C03DE92D4D0D79EF8D4824EF365EB
+
+I=111
+KEY=4C4D4E4F51525354565758595B5C5D5E
+PT=D6D7D4D58A89888F96979899A5A2A3A0
+CT=1D190219F290E0F1715D152D41A23593
+
+I=112
+KEY=60616263656667686A6B6C6D6F707172
+PT=18191A1BA8ABAAA5303136379B848586
+CT=A2CD332CE3A0818769616292E87F757B
+
+I=113
+KEY=74757677797A7B7C7E7F808183848586
+PT=6B6A6968A4A7A6A1D6D72829B0B7B6B5
+CT=D54AFA6CE60FBF9341A3690E21385102
+
+I=114
+KEY=88898A8B8D8E8F90929394959798999A
+PT=000102038A89889755545352A6A9A8AB
+CT=06E5C364DED628A3F5E05E613E356F46
+
+I=115
+KEY=9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE
+PT=2D2C2F2EB3B0B1B6B6B7B8B9F2F5F4F7
+CT=EAE63C0E62556DAC85D221099896355A
+
+I=116
+KEY=B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2
+PT=979695943536373856575051E09F9E9D
+CT=1FED060E2C6FC93EE764403A889985A2
+
+I=117
+KEY=C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6
+PT=A4A5A6A7989B9A9DB1B0AFAE7A7D7C7F
+CT=C25235C1A30FDEC1C7CB5C5737B2A588
+
+I=118
+KEY=D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EA
+PT=C1C0C3C2686B6A55A8A9AEAFEAE5E4E7
+CT=796DBEF95147D4D30873AD8B7B92EFC0
+
+I=119
+KEY=ECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE
+PT=C1C0C3C2141716118C8D828364636261
+CT=CBCF0FB34D98D0BD5C22CE37211A46BF
+
+I=120
+KEY=00010203050607080A0B0C0D0F101112
+PT=93929190CCCFCEC196979091E0FFFEFD
+CT=94B44DA6466126CAFA7C7FD09063FC24
+
+I=121
+KEY=14151617191A1B1C1E1F202123242526
+PT=B4B5B6B7F9FAFBFC25241B1A6E69686B
+CT=D78C5B5EBF9B4DBDA6AE506C5074C8FE
+
+I=122
+KEY=28292A2B2D2E2F30323334353738393A
+PT=868784850704051AC7C6C1C08788898A
+CT=6C27444C27204B043812CF8CF95F9769
+
+I=123
+KEY=3C3D3E3F41424344464748494B4C4D4E
+PT=F4F5F6F7AAA9A8AFFDFCF3F277707172
+CT=BE94524EE5A2AA50BBA8B75F4C0AEBCF
+
+I=124
+KEY=50515253555657585A5B5C5D5F606162
+PT=D3D2D1D00605040BC3C2C5C43E010003
+CT=A0AEAAE91BA9F31F51AEB3588CF3A39E
+
+I=125
+KEY=64656667696A6B6C6E6F707173747576
+PT=73727170424140476A6B74750D0A0B08
+CT=275297779C28266EF9FE4C6A13C08488
+
+I=126
+KEY=78797A7B7D7E7F80828384858788898A
+PT=C2C3C0C10A0908F754555253A1AEAFAC
+CT=86523D92BB8672CB01CF4A77FD725882
+
+I=127
+KEY=8C8D8E8F91929394969798999B9C9D9E
+PT=6D6C6F6EF8FBFAFD82838C8DF8FFFEFD
+CT=4B8327640E9F33322A04DD96FCBF9A36
+
+I=128
+KEY=A0A1A2A3A5A6A7A8AAABACADAFB0B1B2
+PT=F5F4F7F684878689A6A7A0A1D2CDCCCF
+CT=CE52AF650D088CA559425223F4D32694
+
+==========
+
+KEYSIZE=192
+
+
+I=1
+KEY=00010203050607080A0B0C0D0F10111214151617191A1B1C
+PT=2D33EEF2C0430A8A9EBF45E809C40BB6
+CT=DFF4945E0336DF4C1C56BC700EFF837F
+
+I=2
+KEY=1E1F20212324252628292A2B2D2E2F30323334353738393A
+PT=6AA375D1FA155A61FB72353E0A5A8756
+CT=B6FDDEF4752765E347D5D2DC196D1252
+
+I=3
+KEY=3C3D3E3F41424344464748494B4C4D4E5051525355565758
+PT=BC3736518B9490DCB8ED60EB26758ED4
+CT=D23684E3D963B3AFCF1A114ACA90CBD6
+
+I=4
+KEY=5A5B5C5D5F60616264656667696A6B6C6E6F707173747576
+PT=AA214402B46CFFB9F761EC11263A311E
+CT=3A7AC027753E2A18C2CEAB9E17C11FD0
+
+I=5
+KEY=78797A7B7D7E7F80828384858788898A8C8D8E8F91929394
+PT=02AEA86E572EEAB66B2C3AF5E9A46FD6
+CT=8F6786BD007528BA26603C1601CDD0D8
+
+I=6
+KEY=969798999B9C9D9EA0A1A2A3A5A6A7A8AAABACADAFB0B1B2
+PT=E2AEF6ACC33B965C4FA1F91C75FF6F36
+CT=D17D073B01E71502E28B47AB551168B3
+
+I=7
+KEY=B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6C8C9CACBCDCECFD0
+PT=0659DF46427162B9434865DD9499F91D
+CT=A469DA517119FAB95876F41D06D40FFA
+
+I=8
+KEY=D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE
+PT=49A44239C748FEB456F59C276A5658DF
+CT=6091AA3B695C11F5C0B6AD26D3D862FF
+
+I=9
+KEY=F0F1F2F3F5F6F7F8FAFBFCFDFE01000204050607090A0B0C
+PT=66208F6E9D04525BDEDB2733B6A6BE37
+CT=70F9E67F9F8DF1294131662DC6E69364
+
+I=10
+KEY=0E0F10111314151618191A1B1D1E1F20222324252728292A
+PT=3393F8DFC729C97F5480B950BC9666B0
+CT=D154DCAFAD8B207FA5CBC95E9996B559
+
+I=11
+KEY=2C2D2E2F31323334363738393B3C3D3E4041424345464748
+PT=606834C8CE063F3234CF1145325DBD71
+CT=4934D541E8B46FA339C805A7AEB9E5DA
+
+I=12
+KEY=4A4B4C4D4F50515254555657595A5B5C5E5F606163646566
+PT=FEC1C04F529BBD17D8CECFCC4718B17F
+CT=62564C738F3EFE186E1A127A0C4D3C61
+
+I=13
+KEY=68696A6B6D6E6F70727374757778797A7C7D7E7F81828384
+PT=32DF99B431ED5DC5ACF8CAF6DC6CE475
+CT=07805AA043986EB23693E23BEF8F3438
+
+I=14
+KEY=868788898B8C8D8E90919293959697989A9B9C9D9FA0A1A2
+PT=7FDC2B746F3F665296943B83710D1F82
+CT=DF0B4931038BADE848DEE3B4B85AA44B
+
+I=15
+KEY=A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6B8B9BABBBDBEBFC0
+PT=8FBA1510A3C5B87E2EAA3F7A91455CA2
+CT=592D5FDED76582E4143C65099309477C
+
+I=16
+KEY=C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE
+PT=2C9B468B1C2EED92578D41B0716B223B
+CT=C9B8D6545580D3DFBCDD09B954ED4E92
+
+I=17
+KEY=E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFC
+PT=0A2BBF0EFC6BC0034F8A03433FCA1B1A
+CT=5DCCD5D6EB7C1B42ACB008201DF707A0
+
+I=18
+KEY=FEFE01010304050608090A0B0D0E0F10121314151718191A
+PT=25260E1F31F4104D387222E70632504B
+CT=A2A91682FFEB6ED1D34340946829E6F9
+
+I=19
+KEY=1C1D1E1F21222324262728292B2C2D2E3031323335363738
+PT=C527D25A49F08A5228D338642AE65137
+CT=E45D185B797000348D9267960A68435D
+
+I=20
+KEY=3A3B3C3D3F40414244454647494A4B4C4E4F505153545556
+PT=3B49FC081432F5890D0E3D87E884A69E
+CT=45E060DAE5901CDA8089E10D4F4C246B
+
+I=21
+KEY=58595A5B5D5E5F60626364656768696A6C6D6E6F71727374
+PT=D173F9ED1E57597E166931DF2754A083
+CT=F6951AFACC0079A369C71FDCFF45DF50
+
+I=22
+KEY=767778797B7C7D7E80818283858687888A8B8C8D8F909192
+PT=8C2B7CAFA5AFE7F13562DAEAE1ADEDE0
+CT=9E95E00F351D5B3AC3D0E22E626DDAD6
+
+I=23
+KEY=94959697999A9B9C9E9FA0A1A3A4A5A6A8A9AAABADAEAFB0
+PT=AAF4EC8C1A815AEB826CAB741339532C
+CT=9CB566FF26D92DAD083B51FDC18C173C
+
+I=24
+KEY=D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2E4E5E6E7E9EAEBEC
+PT=40BE8C5D9108E663F38F1A2395279ECF
+CT=C9C82766176A9B228EB9A974A010B4FB
+
+I=25
+KEY=2A2B2C2D2F30313234353637393A3B3C3E3F404143444546
+PT=0C8AD9BC32D43E04716753AA4CFBE351
+CT=D8E26AA02945881D5137F1C1E1386E88
+
+I=26
+KEY=48494A4B4D4E4F50525354555758595A5C5D5E5F61626364
+PT=1407B1D5F87D63357C8DC7EBBAEBBFEE
+CT=C0E024CCD68FF5FFA4D139C355A77C55
+
+I=27
+KEY=84858687898A8B8C8E8F90919394959698999A9B9D9E9FA0
+PT=E62734D1AE3378C4549E939E6F123416
+CT=0B18B3D16F491619DA338640DF391D43
+
+I=28
+KEY=A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE
+PT=5A752CFF2A176DB1A1DE77F2D2CDEE41
+CT=DBE09AC8F66027BF20CB6E434F252EFC
+
+I=29
+KEY=C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2D4D5D6D7D9DADBDC
+PT=A9C8C3A4EABEDC80C64730DDD018CD88
+CT=6D04E5E43C5B9CBE05FEB9606B6480FE
+
+I=30
+KEY=1A1B1C1D1F20212224252627292A2B2C2E2F303133343536
+PT=EE9B3DBBDB86180072130834D305999A
+CT=DD1D6553B96BE526D9FEE0FBD7176866
+
+I=31
+KEY=38393A3B3D3E3F40424344454748494A4C4D4E4F51525354
+PT=A7FA8C3586B8EBDE7568EAD6F634A879
+CT=0260CA7E3F979FD015B0DD4690E16D2A
+
+I=32
+KEY=929394959798999A9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE
+PT=37E0F4A87F127D45AC936FE7AD88C10A
+CT=9893734DE10EDCC8A67C3B110B8B8CC6
+
+I=33
+KEY=464748494B4C4D4E50515253555657585A5B5C5D5F606162
+PT=3F77D8B5D92BAC148E4E46F697A535C5
+CT=93B30B750516B2D18808D710C2EE84EF
+
+I=34
+KEY=828384858788898A8C8D8E8F91929394969798999B9C9D9E
+PT=D25EBB686C40F7E2C4DA1014936571CA
+CT=16F65FA47BE3CB5E6DFE7C6C37016C0E
+
+I=35
+KEY=A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBC
+PT=4F1C769D1E5B0552C7ECA84DEA26A549
+CT=F3847210D5391E2360608E5ACB560581
+
+I=36
+KEY=BEBFC0C1C3C4C5C6C8C9CACBCDCECFD0D2D3D4D5D7D8D9DA
+PT=8548E2F882D7584D0FAFC54372B6633A
+CT=8754462CD223366D0753913E6AF2643D
+
+I=37
+KEY=DCDDDEDFE1E2E3E4E6E7E8E9EBECEDEEF0F1F2F3F5F6F7F8
+PT=87D7A336CB476F177CD2A51AF2A62CDF
+CT=1EA20617468D1B806A1FD58145462017
+
+I=38
+KEY=FAFBFCFDFE01000204050607090A0B0C0E0F101113141516
+PT=03B1FEAC668C4E485C1065DFC22B44EE
+CT=3B155D927355D737C6BE9DDA60136E2E
+
+I=39
+KEY=18191A1B1D1E1F20222324252728292A2C2D2E2F31323334
+PT=BDA15E66819FA72D653A6866AA287962
+CT=26144F7B66DAA91B6333DBD3850502B3
+
+I=40
+KEY=363738393B3C3D3E40414243454647484A4B4C4D4F505152
+PT=4D0C7A0D2505B80BF8B62CEB12467F0A
+CT=E4F9A4AB52CED8134C649BF319EBCC90
+
+I=41
+KEY=54555657595A5B5C5E5F60616364656668696A6B6D6E6F70
+PT=626D34C9429B37211330986466B94E5F
+CT=B9DDD29AC6128A6CAB121E34A4C62B36
+
+I=42
+KEY=727374757778797A7C7D7E7F81828384868788898B8C8D8E
+PT=333C3E6BF00656B088A17E5FF0E7F60A
+CT=6FCDDAD898F2CE4EFF51294F5EAAF5C9
+
+I=43
+KEY=90919293959697989A9B9C9D9FA0A1A2A4A5A6A7A9AAABAC
+PT=687ED0CDC0D2A2BC8C466D05EF9D2891
+CT=C9A6FE2BF4028080BEA6F7FC417BD7E3
+
+I=44
+KEY=AEAFB0B1B3B4B5B6B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CA
+PT=487830E78CC56C1693E64B2A6660C7B6
+CT=6A2026846D8609D60F298A9C0673127F
+
+I=45
+KEY=CCCDCECFD1D2D3D4D6D7D8D9DBDCDDDEE0E1E2E3E5E6E7E8
+PT=7A48D6B7B52B29392AA2072A32B66160
+CT=2CB25C005E26EFEA44336C4C97A4240B
+
+I=46
+KEY=EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFCFEFE010103040506
+PT=907320E64C8C5314D10F8D7A11C8618D
+CT=496967AB8680DDD73D09A0E4C7DCC8AA
+
+I=47
+KEY=08090A0B0D0E0F10121314151718191A1C1D1E1F21222324
+PT=B561F2CA2D6E65A4A98341F3ED9FF533
+CT=D5AF94DE93487D1F3A8C577CB84A66A4
+
+I=48
+KEY=262728292B2C2D2E30313233353637383A3B3C3D3F404142
+PT=DF769380D212792D026F049E2E3E48EF
+CT=84BDAC569CAE2828705F267CC8376E90
+
+I=49
+KEY=44454647494A4B4C4E4F50515354555658595A5B5D5E5F60
+PT=79F374BC445BDABF8FCCB8843D6054C6
+CT=F7401DDA5AD5AB712B7EB5D10C6F99B6
+
+I=50
+KEY=626364656768696A6C6D6E6F71727374767778797B7C7D7E
+PT=4E02F1242FA56B05C68DBAE8FE44C9D6
+CT=1C9D54318539EBD4C3B5B7E37BF119F0
+
+I=51
+KEY=80818283858687888A8B8C8D8F90919294959697999A9B9C
+PT=CF73C93CBFF57AC635A6F4AD2A4A1545
+CT=ACA572D65FB2764CFFD4A6ECA090EA0D
+
+I=52
+KEY=9E9FA0A1A3A4A5A6A8A9AAABADAEAFB0B2B3B4B5B7B8B9BA
+PT=9923548E2875750725B886566784C625
+CT=36D9C627B8C2A886A10CCB36EAE3DFBB
+
+I=53
+KEY=BCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCED0D1D2D3D5D6D7D8
+PT=4888336B723A022C9545320F836A4207
+CT=010EDBF5981E143A81D646E597A4A568
+
+I=54
+KEY=DADBDCDDDFE0E1E2E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6
+PT=F84D9A5561B0608B1160DEE000C41BA8
+CT=8DB44D538DC20CC2F40F3067FD298E60
+
+I=55
+KEY=F8F9FAFBFDFEFE00020304050708090A0C0D0E0F11121314
+PT=C23192A0418E30A19B45AE3E3625BF22
+CT=930EB53BC71E6AC4B82972BDCD5AAFB3
+
+I=56
+KEY=161718191B1C1D1E20212223252627282A2B2C2D2F303132
+PT=B84E0690B28B0025381AD82A15E501A7
+CT=6C42A81EDCBC9517CCD89C30C95597B4
+
+I=57
+KEY=34353637393A3B3C3E3F40414344454648494A4B4D4E4F50
+PT=ACEF5E5C108876C4F06269F865B8F0B0
+CT=DA389847AD06DF19D76EE119C71E1DD3
+
+I=58
+KEY=525354555758595A5C5D5E5F61626364666768696B6C6D6E
+PT=0F1B3603E0F5DDEA4548246153A5E064
+CT=E018FDAE13D3118F9A5D1A647A3F0462
+
+I=59
+KEY=70717273757677787A7B7C7D7F80818284858687898A8B8C
+PT=FBB63893450D42B58C6D88CD3C1809E3
+CT=2AA65DB36264239D3846180FABDFAD20
+
+I=60
+KEY=8E8F90919394959698999A9B9D9E9FA0A2A3A4A5A7A8A9AA
+PT=4BEF736DF150259DAE0C91354E8A5F92
+CT=1472163E9A4F780F1CEB44B07ECF4FDB
+
+I=61
+KEY=ACADAEAFB1B2B3B4B6B7B8B9BBBCBDBEC0C1C2C3C5C6C7C8
+PT=7D2D46242056EF13D3C3FC93C128F4C7
+CT=C8273FDC8F3A9F72E91097614B62397C
+
+I=62
+KEY=CACBCCCDCFD0D1D2D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6
+PT=E9C1BA2DF415657A256EDB33934680FD
+CT=66C8427DCD733AAF7B3470CB7D976E3F
+
+I=63
+KEY=E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FAFCFDFEFF01020304
+PT=E23EE277B0AA0A1DFB81F7527C3514F1
+CT=146131CB17F1424D4F8DA91E6F80C1D0
+
+I=64
+KEY=060708090B0C0D0E10111213151617181A1B1C1D1F202122
+PT=3E7445B0B63CAAF75E4A911E12106B4C
+CT=2610D0AD83659081AE085266A88770DC
+
+I=65
+KEY=24252627292A2B2C2E2F30313334353638393A3B3D3E3F40
+PT=767774752023222544455A5BE6E1E0E3
+CT=38A2B5A974B0575C5D733917FB0D4570
+
+I=66
+KEY=424344454748494A4C4D4E4F51525354565758595B5C5D5E
+PT=72737475717E7F7CE9E8EBEA696A6B6C
+CT=E21D401EBC60DE20D6C486E4F39A588B
+
+I=67
+KEY=60616263656667686A6B6C6D6F70717274757677797A7B7C
+PT=DFDEDDDC25262728C9C8CFCEF1EEEFEC
+CT=E51D5F88C670B079C0CA1F0C2C4405A2
+
+I=68
+KEY=7E7F80818384858688898A8B8D8E8F90929394959798999A
+PT=FFFE0100707776755F5E5D5C7675746B
+CT=246A94788A642FB3D1B823C8762380C8
+
+I=69
+KEY=9C9D9E9FA1A2A3A4A6A7A8A9ABACADAEB0B1B2B3B5B6B7B8
+PT=E0E1E2E3424140479F9E9190292E2F2C
+CT=B80C391C5C41A4C3B30C68E0E3D7550F
+
+I=70
+KEY=BABBBCBDBFC0C1C2C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6
+PT=2120272690EFEEED3B3A39384E4D4C4B
+CT=B77C4754FC64EB9A1154A9AF0BB1F21C
+
+I=71
+KEY=D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4
+PT=ECEDEEEF5350516EA1A0A7A6A3ACADAE
+CT=FB554DE520D159A06BF219FC7F34A02F
+
+I=72
+KEY=F6F7F8F9FBFCFDFE00010203050607080A0B0C0D0F101112
+PT=32333C3D25222320E9E8EBEACECDCCC3
+CT=A89FBA152D76B4927BEED160DDB76C57
+
+I=73
+KEY=14151617191A1B1C1E1F20212324252628292A2B2D2E2F30
+PT=40414243626160678A8BB4B511161714
+CT=5676EAB4A98D2E8473B3F3D46424247C
+
+I=74
+KEY=323334353738393A3C3D3E3F41424344464748494B4C4D4E
+PT=94959293F5FAFBF81F1E1D1C7C7F7E79
+CT=4E8F068BD7EDE52A639036EC86C33568
+
+I=75
+KEY=50515253555657585A5B5C5D5F60616264656667696A6B6C
+PT=BEBFBCBD191A1B14CFCEC9C8546B6A69
+CT=F0193C4D7AFF1791EE4C07EB4A1824FC
+
+I=76
+KEY=6E6F70717374757678797A7B7D7E7F80828384858788898A
+PT=2C2D3233898E8F8CBBBAB9B8333031CE
+CT=AC8686EECA9BA761AFE82D67B928C33F
+
+I=77
+KEY=8C8D8E8F91929394969798999B9C9D9EA0A1A2A3A5A6A7A8
+PT=84858687BFBCBDBA37363938FDFAFBF8
+CT=5FAF8573E33B145B6A369CD3606AB2C9
+
+I=78
+KEY=AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6
+PT=828384857669686B909192930B08090E
+CT=31587E9944AB1C16B844ECAD0DF2E7DA
+
+I=79
+KEY=C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4
+PT=BEBFBCBD9695948B707176779E919093
+CT=D017FECD91148ABA37F6F3068AA67D8A
+
+I=80
+KEY=E6E7E8E9EBECEDEEF0F1F2F3F5F6F7F8FAFBFCFDFE010002
+PT=8B8A85846067666521202322D0D3D2DD
+CT=788EF2F021A73CBA2794B616078A8500
+
+I=81
+KEY=04050607090A0B0C0E0F10111314151618191A1B1D1E1F20
+PT=76777475F1F2F3F4F8F9E6E777707172
+CT=5D1EF20DCED6BCBC12131AC7C54788AA
+
+I=82
+KEY=222324252728292A2C2D2E2F31323334363738393B3C3D3E
+PT=A4A5A2A34F404142B4B5B6B727242522
+CT=B3C8CF961FAF9EA05FDDE6D1E4D8F663
+
+I=83
+KEY=40414243454647484A4B4C4D4F50515254555657595A5B5C
+PT=94959697E1E2E3EC16171011839C9D9E
+CT=143075C70605861C7FAC6526199E459F
+
+I=84
+KEY=5E5F60616364656668696A6B6D6E6F70727374757778797A
+PT=03023D3C06010003DEDFDCDDFFFCFDE2
+CT=A5AE12EADE9A87268D898BFC8FC0252A
+
+I=85
+KEY=7C7D7E7F81828384868788898B8C8D8E9091929395969798
+PT=10111213F1F2F3F4CECFC0C1DBDCDDDE
+CT=0924F7CF2E877A4819F5244A360DCEA9
+
+I=86
+KEY=9A9B9C9D9FA0A1A2A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6
+PT=67666160724D4C4F1D1C1F1E73707176
+CT=3D9E9635AFCC3E291CC7AB3F27D1C99A
+
+I=87
+KEY=B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4
+PT=E6E7E4E5A8ABAAD584858283909F9E9D
+CT=9D80FEEBF87510E2B8FB98BB54FD788C
+
+I=88
+KEY=D6D7D8D9DBDCDDDEE0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2
+PT=71707F7E565150537D7C7F7E6162636C
+CT=5F9D1A082A1A37985F174002ECA01309
+
+I=89
+KEY=F4F5F6F7F9FAFBFCFEFE01010304050608090A0B0D0E0F10
+PT=64656667212223245555AAAA03040506
+CT=A390EBB1D1403930184A44B4876646E4
+
+I=90
+KEY=121314151718191A1C1D1E1F21222324262728292B2C2D2E
+PT=9E9F9899ABA4A5A6CFCECDCC2B28292E
+CT=700FE918981C3195BB6C4BCB46B74E29
+
+I=91
+KEY=30313233353637383A3B3C3D3F40414244454647494A4B4C
+PT=C7C6C5C4D1D2D3DC626364653A454447
+CT=907984406F7BF2D17FB1EB15B673D747
+
+I=92
+KEY=4E4F50515354555658595A5B5D5E5F60626364656768696A
+PT=F6F7E8E9E0E7E6E51D1C1F1E5B585966
+CT=C32A956DCFC875C2AC7C7CC8B8CC26E1
+
+I=93
+KEY=6C6D6E6F71727374767778797B7C7D7E8081828385868788
+PT=BCBDBEBF5D5E5F5868696667F4F3F2F1
+CT=02646E2EBFA9B820CF8424E9B9B6EB51
+
+I=94
+KEY=8A8B8C8D8F90919294959697999A9B9C9E9FA0A1A3A4A5A6
+PT=40414647B0AFAEAD9B9A99989B98999E
+CT=621FDA3A5BBD54C6D3C685816BD4EAD8
+
+I=95
+KEY=A8A9AAABADAEAFB0B2B3B4B5B7B8B9BABCBDBEBFC1C2C3C4
+PT=69686B6A0201001F0F0E0908B4BBBAB9
+CT=D4E216040426DFAF18B152469BC5AC2F
+
+I=96
+KEY=C6C7C8C9CBCCCDCED0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2
+PT=C7C6C9C8D8DFDEDD5A5B5859BEBDBCB3
+CT=9D0635B9D33B6CDBD71F5D246EA17CC8
+
+I=97
+KEY=E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6F8F9FAFBFDFEFE00
+PT=DEDFDCDD787B7A7DFFFEE1E0B2B5B4B7
+CT=10ABAD1BD9BAE5448808765583A2CC1A
+
+I=98
+KEY=020304050708090A0C0D0E0F11121314161718191B1C1D1E
+PT=4D4C4B4A606F6E6DD0D1D2D3FBF8F9FE
+CT=6891889E16544E355FF65A793C39C9A8
+
+I=99
+KEY=20212223252627282A2B2C2D2F30313234353637393A3B3C
+PT=B7B6B5B4D7D4D5DAE5E4E3E2E1FEFFFC
+CT=CC735582E68072C163CD9DDF46B91279
+
+I=100
+KEY=3E3F40414344454648494A4B4D4E4F50525354555758595A
+PT=CECFB0B1F7F0F1F2AEAFACAD3E3D3C23
+CT=C5C68B9AEEB7F878DF578EFA562F9574
+
+I=101
+KEY=5C5D5E5F61626364666768696B6C6D6E7071727375767778
+PT=CACBC8C9CDCECFC812131C1D494E4F4C
+CT=5F4764395A667A47D73452955D0D2CE8
+
+I=102
+KEY=7A7B7C7D7F80818284858687898A8B8C8E8F909193949596
+PT=9D9C9B9AD22D2C2FB1B0B3B20C0F0E09
+CT=701448331F66106CEFDDF1EB8267C357
+
+I=103
+KEY=98999A9B9D9E9FA0A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4
+PT=7A7B787964676659959493924F404142
+CT=CB3EE56D2E14B4E1941666F13379D657
+
+I=104
+KEY=B6B7B8B9BBBCBDBEC0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2
+PT=AAABA4A5CEC9C8CB1F1E1D1CABA8A9A6
+CT=9FE16EFD18AB6E1981191851FEDB0764
+
+I=105
+KEY=D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6E8E9EAEBEDEEEFF0
+PT=93929190282B2A2DC4C5FAFB92959497
+CT=3DC9BA24E1B223589B147ADCEB4C8E48
+
+I=106
+KEY=F2F3F4F5F7F8F9FAFCFDFEFF01020304060708090B0C0D0E
+PT=EFEEE9E8DED1D0D339383B3A888B8A8D
+CT=1C333032682E7D4DE5E5AFC05C3E483C
+
+I=107
+KEY=10111213151617181A1B1C1D1F20212224252627292A2B2C
+PT=7F7E7D7CA2A1A0AF78797E7F112E2F2C
+CT=D593CC99A95AFEF7E92038E05A59D00A
+
+I=108
+KEY=2E2F30313334353638393A3B3D3E3F40424344454748494A
+PT=84859A9B2B2C2D2E868784852625245B
+CT=51E7F96F53B4353923452C222134E1EC
+
+I=109
+KEY=4C4D4E4F51525354565758595B5C5D5E6061626365666768
+PT=B0B1B2B3070405026869666710171615
+CT=4075B357A1A2B473400C3B25F32F81A4
+
+I=110
+KEY=6A6B6C6D6F70717274757677797A7B7C7E7F808183848586
+PT=ACADAAABBDA2A3A00D0C0F0E595A5B5C
+CT=302E341A3EBCD74F0D55F61714570284
+
+I=111
+KEY=88898A8B8D8E8F90929394959798999A9C9D9E9FA1A2A3A4
+PT=121310115655544B5253545569666764
+CT=57ABDD8231280DA01C5042B78CF76522
+
+I=112
+KEY=A6A7A8A9ABACADAEB0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2
+PT=DEDFD0D166616063EAEBE8E94142434C
+CT=17F9EA7EEA17AC1ADF0E190FEF799E92
+
+I=113
+KEY=C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6D8D9DADBDDDEDFE0
+PT=DBDAD9D81417161166677879E0E7E6E5
+CT=2E1BDD563DD87EE5C338DD6D098D0A7A
+
+I=114
+KEY=E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE
+PT=6A6B6C6DE0EFEEED2B2A2928C0C3C2C5
+CT=EB869996E6F8BFB2BFDD9E0C4504DBB2
+
+I=115
+KEY=00010203050607080A0B0C0D0F10111214151617191A1B1C
+PT=B1B0B3B21714151A1A1B1C1D5649484B
+CT=C2E01549E9DECF317468B3E018C61BA8
+
+I=116
+KEY=1E1F20212324252628292A2B2D2E2F30323334353738393A
+PT=39380706A3A4A5A6C4C5C6C77271706F
+CT=8DA875D033C01DD463B244A1770F4A22
+
+I=117
+KEY=3C3D3E3F41424344464748494B4C4D4E5051525355565758
+PT=5C5D5E5F1013121539383736E2E5E4E7
+CT=8BA0DCF3A186844F026D022F8839D696
+
+I=118
+KEY=5A5B5C5D5F60616264656667696A6B6C6E6F707173747576
+PT=43424544EAD5D4D72E2F2C2D64676661
+CT=E9691FF9A6CC6970E51670A0FD5B88C1
+
+I=119
+KEY=78797A7B7D7E7F80828384858788898A8C8D8E8F91929394
+PT=55545756989B9A65F8F9FEFF18171615
+CT=F2BAEC06FAEED30F88EE63BA081A6E5B
+
+I=120
+KEY=969798999B9C9D9EA0A1A2A3A5A6A7A8AAABACADAFB0B1B2
+PT=05040B0A525554573C3D3E3F4A494847
+CT=9C39D4C459AE5753394D6094ADC21E78
+
+I=121
+KEY=B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6C8C9CACBCDCECFD0
+PT=14151617595A5B5C8584FBFA8E89888B
+CT=6345B532A11904502EA43BA99C6BD2B2
+
+I=122
+KEY=D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE
+PT=7C7D7A7BFDF2F3F029282B2A51525354
+CT=5FFAE3061A95172E4070CEDCE1E428C8
+
+I=123
+KEY=F0F1F2F3F5F6F7F8FAFBFCFDFE01000204050607090A0B0C
+PT=38393A3B1E1D1C1341404746C23D3C3E
+CT=0A4566BE4CDF9ADCE5DEC865B5AB34CD
+
+I=124
+KEY=0E0F10111314151618191A1B1D1E1F20222324252728292A
+PT=8D8C939240474645818083827C7F7E41
+CT=CA17FCCE79B7404F2559B22928F126FB
+
+I=125
+KEY=2C2D2E2F31323334363738393B3C3D3E4041424345464748
+PT=3B3A39381A19181F32333C3D45424340
+CT=97CA39B849ED73A6470A97C821D82F58
+
+I=126
+KEY=4A4B4C4D4F50515254555657595A5B5C5E5F606163646566
+PT=F0F1F6F738272625828380817F7C7D7A
+CT=8198CB06BC684C6D3E9B7989428DCF7A
+
+I=127
+KEY=68696A6B6D6E6F70727374757778797A7C7D7E7F81828384
+PT=89888B8A0407061966676061141B1A19
+CT=F53C464C705EE0F28D9A4C59374928BD
+
+I=128
+KEY=868788898B8C8D8E90919293959697989A9B9C9D9FA0A1A2
+PT=D3D2DDDCAAADACAF9C9D9E9FE8EBEAE5
+CT=9ADB3D4CCA559BB98C3E2ED73DBF1154
+
+==========
+
+KEYSIZE=256
+
+
+I=1
+KEY=00010203050607080A0B0C0D0F10111214151617191A1B1C1E1F202123242526
+PT=834EADFCCAC7E1B30664B1ABA44815AB
+CT=1946DABF6A03A2A2C3D0B05080AED6FC
+
+I=2
+KEY=28292A2B2D2E2F30323334353738393A3C3D3E3F41424344464748494B4C4D4E
+PT=D9DC4DBA3021B05D67C0518F72B62BF1
+CT=5ED301D747D3CC715445EBDEC62F2FB4
+
+I=3
+KEY=50515253555657585A5B5C5D5F60616264656667696A6B6C6E6F707173747576
+PT=A291D86301A4A739F7392173AA3C604C
+CT=6585C8F43D13A6BEAB6419FC5935B9D0
+
+I=4
+KEY=78797A7B7D7E7F80828384858788898A8C8D8E8F91929394969798999B9C9D9E
+PT=4264B2696498DE4DF79788A9F83E9390
+CT=2A5B56A596680FCC0E05F5E0F151ECAE
+
+I=5
+KEY=A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6
+PT=EE9932B3721804D5A83EF5949245B6F6
+CT=F5D6FF414FD2C6181494D20C37F2B8C4
+
+I=6
+KEY=C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE
+PT=E6248F55C5FDCBCA9CBBB01C88A2EA77
+CT=85399C01F59FFFB5204F19F8482F00B8
+
+I=7
+KEY=F0F1F2F3F5F6F7F8FAFBFCFDFE01000204050607090A0B0C0E0F101113141516
+PT=B8358E41B9DFF65FD461D55A99266247
+CT=92097B4C88A041DDF98144BC8D22E8E7
+
+I=8
+KEY=18191A1B1D1E1F20222324252728292A2C2D2E2F31323334363738393B3C3D3E
+PT=F0E2D72260AF58E21E015AB3A4C0D906
+CT=89BD5B73B356AB412AEF9F76CEA2D65C
+
+I=9
+KEY=40414243454647484A4B4C4D4F50515254555657595A5B5C5E5F606163646566
+PT=475B8B823CE8893DB3C44A9F2A379FF7
+CT=2536969093C55FF9454692F2FAC2F530
+
+I=10
+KEY=68696A6B6D6E6F70727374757778797A7C7D7E7F81828384868788898B8C8D8E
+PT=688F5281945812862F5F3076CF80412F
+CT=07FC76A872843F3F6E0081EE9396D637
+
+I=11
+KEY=90919293959697989A9B9C9D9FA0A1A2A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6
+PT=08D1D2BC750AF553365D35E75AFACEAA
+CT=E38BA8EC2AA741358DCC93E8F141C491
+
+I=12
+KEY=B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE
+PT=8707121F47CC3EFCECA5F9A8474950A1
+CT=D028EE23E4A89075D0B03E868D7D3A42
+
+I=13
+KEY=E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFCFEFE010103040506
+PT=E51AA0B135DBA566939C3B6359A980C5
+CT=8CD9423DFC459E547155C5D1D522E540
+
+I=14
+KEY=08090A0B0D0E0F10121314151718191A1C1D1E1F21222324262728292B2C2D2E
+PT=069A007FC76A459F98BAF917FEDF9521
+CT=080E9517EB1677719ACF728086040AE3
+
+I=15
+KEY=30313233353637383A3B3C3D3F40414244454647494A4B4C4E4F505153545556
+PT=726165C1723FBCF6C026D7D00B091027
+CT=7C1700211A3991FC0ECDED0AB3E576B0
+
+I=16
+KEY=58595A5B5D5E5F60626364656768696A6C6D6E6F71727374767778797B7C7D7E
+PT=D7C544DE91D55CFCDE1F84CA382200CE
+CT=DABCBCC855839251DB51E224FBE87435
+
+I=17
+KEY=80818283858687888A8B8C8D8F90919294959697999A9B9C9E9FA0A1A3A4A5A6
+PT=FED3C9A161B9B5B2BD611B41DC9DA357
+CT=68D56FAD0406947A4DD27A7448C10F1D
+
+I=18
+KEY=A8A9AAABADAEAFB0B2B3B4B5B7B8B9BABCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE
+PT=4F634CDC6551043409F30B635832CF82
+CT=DA9A11479844D1FFEE24BBF3719A9925
+
+I=19
+KEY=D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6
+PT=109CE98DB0DFB36734D9F3394711B4E6
+CT=5E4BA572F8D23E738DA9B05BA24B8D81
+
+I=20
+KEY=70717273757677787A7B7C7D7F80818284858687898A8B8C8E8F909193949596
+PT=4EA6DFABA2D8A02FFDFFA89835987242
+CT=A115A2065D667E3F0B883837A6E903F8
+
+I=21
+KEY=98999A9B9D9E9FA0A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE
+PT=5AE094F54AF58E6E3CDBF976DAC6D9EF
+CT=3E9E90DC33EAC2437D86AD30B137E66E
+
+I=22
+KEY=C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6
+PT=764D8E8E0F29926DBE5122E66354FDBE
+CT=01CE82D8FBCDAE824CB3C48E495C3692
+
+I=23
+KEY=E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FAFCFDFEFF01020304060708090B0C0D0E
+PT=3F0418F888CDF29A982BF6B75410D6A9
+CT=0C9CFF163CE936FAAF083CFD3DEA3117
+
+I=24
+KEY=10111213151617181A1B1C1D1F20212224252627292A2B2C2E2F303133343536
+PT=E4A3E7CB12CDD56AA4A75197A9530220
+CT=5131BA9BD48F2BBA85560680DF504B52
+
+I=25
+KEY=38393A3B3D3E3F40424344454748494A4C4D4E4F51525354565758595B5C5D5E
+PT=211677684AAC1EC1A160F44C4EBF3F26
+CT=9DC503BBF09823AEC8A977A5AD26CCB2
+
+I=26
+KEY=60616263656667686A6B6C6D6F70717274757677797A7B7C7E7F808183848586
+PT=D21E439FF749AC8F18D6D4B105E03895
+CT=9A6DB0C0862E506A9E397225884041D7
+
+I=27
+KEY=88898A8B8D8E8F90929394959798999A9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE
+PT=D9F6FF44646C4725BD4C0103FF5552A7
+CT=430BF9570804185E1AB6365FC6A6860C
+
+I=28
+KEY=B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6
+PT=0B1256C2A00B976250CFC5B0C37ED382
+CT=3525EBC02F4886E6A5A3762813E8CE8A
+
+I=29
+KEY=D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE
+PT=B056447FFC6DC4523A36CC2E972A3A79
+CT=07FA265C763779CCE224C7BAD671027B
+
+I=30
+KEY=00010203050607080A0B0C0D0F10111214151617191A1B1C1E1F202123242526
+PT=5E25CA78F0DE55802524D38DA3FE4456
+CT=E8B72B4E8BE243438C9FFF1F0E205872
+
+I=31
+KEY=28292A2B2D2E2F30323334353738393A3C3D3E3F41424344464748494B4C4D4E
+PT=A5BCF4728FA5EAAD8567C0DC24675F83
+CT=109D4F999A0E11ACE1F05E6B22CBCB50
+
+I=32
+KEY=50515253555657585A5B5C5D5F60616264656667696A6B6C6E6F707173747576
+PT=814E59F97ED84646B78B2CA022E9CA43
+CT=45A5E8D4C3ED58403FF08D68A0CC4029
+
+I=33
+KEY=78797A7B7D7E7F80828384858788898A8C8D8E8F91929394969798999B9C9D9E
+PT=15478BEEC58F4775C7A7F5D4395514D7
+CT=196865964DB3D417B6BD4D586BCB7634
+
+I=34
+KEY=A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6
+PT=253548FFCA461C67C8CBC78CD59F4756
+CT=60436AD45AC7D30D99195F815D98D2AE
+
+I=35
+KEY=C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE
+PT=FD7AD8D73B9B0F8CC41600640F503D65
+CT=BB07A23F0B61014B197620C185E2CD75
+
+I=36
+KEY=F0F1F2F3F5F6F7F8FAFBFCFDFE01000204050607090A0B0C0E0F101113141516
+PT=06199DE52C6CBF8AF954CD65830BCD56
+CT=5BC0B2850129C854423AFF0751FE343B
+
+I=37
+KEY=18191A1B1D1E1F20222324252728292A2C2D2E2F31323334363738393B3C3D3E
+PT=F17C4FFE48E44C61BD891E257E725794
+CT=7541A78F96738E6417D2A24BD2BECA40
+
+I=38
+KEY=40414243454647484A4B4C4D4F50515254555657595A5B5C5E5F606163646566
+PT=9A5B4A402A3E8A59BE6BF5CD8154F029
+CT=B0A303054412882E464591F1546C5B9E
+
+I=39
+KEY=68696A6B6D6E6F70727374757778797A7C7D7E7F81828384868788898B8C8D8E
+PT=79BD40B91A7E07DC939D441782AE6B17
+CT=778C06D8A355EEEE214FCEA14B4E0EEF
+
+I=40
+KEY=90919293959697989A9B9C9D9FA0A1A2A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6
+PT=D8CEAAF8976E5FBE1012D8C84F323799
+CT=09614206D15CBACE63227D06DB6BEEBB
+
+I=41
+KEY=B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE
+PT=3316E2751E2E388B083DA23DD6AC3FBE
+CT=41B97FB20E427A9FDBBB358D9262255D
+
+I=42
+KEY=E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFCFEFE010103040506
+PT=8B7CFBE37DE7DCA793521819242C5816
+CT=C1940F703D845F957652C2D64ABD7ADF
+
+I=43
+KEY=08090A0B0D0E0F10121314151718191A1C1D1E1F21222324262728292B2C2D2E
+PT=F23F033C0EEBF8EC55752662FD58CE68
+CT=D2D44FCDAE5332343366DB297EFCF21B
+
+I=44
+KEY=30313233353637383A3B3C3D3F40414244454647494A4B4C4E4F505153545556
+PT=59EB34F6C8BDBACC5FC6AD73A59A1301
+CT=EA8196B79DBE167B6AA9896E287EED2B
+
+I=45
+KEY=58595A5B5D5E5F60626364656768696A6C6D6E6F71727374767778797B7C7D7E
+PT=DCDE8B6BD5CF7CC22D9505E3CE81261A
+CT=D6B0B0C4BA6C7DBE5ED467A1E3F06C2D
+
+I=46
+KEY=80818283858687888A8B8C8D8F90919294959697999A9B9C9E9FA0A1A3A4A5A6
+PT=E33CF7E524FED781E7042FF9F4B35DC7
+CT=EC51EB295250C22C2FB01816FB72BCAE
+
+I=47
+KEY=A8A9AAABADAEAFB0B2B3B4B5B7B8B9BABCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE
+PT=27963C8FACDF73062867D164DF6D064C
+CT=ADED6630A07CE9C7408A155D3BD0D36F
+
+I=48
+KEY=D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6
+PT=77B1CE386B551B995F2F2A1DA994EEF8
+CT=697C9245B9937F32F5D1C82319F0363A
+
+I=49
+KEY=F8F9FAFBFDFEFE00020304050708090A0C0D0E0F11121314161718191B1C1D1E
+PT=F083388B013679EFCF0BB9B15D52AE5C
+CT=AAD5AD50C6262AAEC30541A1B7B5B19C
+
+I=50
+KEY=20212223252627282A2B2C2D2F30313234353637393A3B3C3E3F404143444546
+PT=C5009E0DAB55DB0ABDB636F2600290C8
+CT=7D34B893855341EC625BD6875AC18C0D
+
+I=51
+KEY=48494A4B4D4E4F50525354555758595A5C5D5E5F61626364666768696B6C6D6E
+PT=7804881E26CD532D8514D3683F00F1B9
+CT=7EF05105440F83862F5D780E88F02B41
+
+I=52
+KEY=70717273757677787A7B7C7D7F80818284858687898A8B8C8E8F909193949596
+PT=46CDDCD73D1EB53E675CA012870A92A3
+CT=C377C06403382061AF2C9C93A8E70DF6
+
+I=53
+KEY=98999A9B9D9E9FA0A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE
+PT=A9FB44062BB07FE130A8E8299EACB1AB
+CT=1DBDB3FFDC052DACC83318853ABC6DE5
+
+I=54
+KEY=C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6
+PT=2B6FF8D7A5CC3A28A22D5A6F221AF26B
+CT=69A6EAB00432517D0BF483C91C0963C7
+
+I=55
+KEY=E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FAFCFDFEFF01020304060708090B0C0D0E
+PT=1A9527C29B8ADD4B0E3E656DBB2AF8B4
+CT=0797F41DC217C80446E1D514BD6AB197
+
+I=56
+KEY=10111213151617181A1B1C1D1F20212224252627292A2B2C2E2F303133343536
+PT=7F99CF2C75244DF015EB4B0C1050AEAE
+CT=9DFD76575902A637C01343C58E011A03
+
+I=57
+KEY=38393A3B3D3E3F40424344454748494A4C4D4E4F51525354565758595B5C5D5E
+PT=E84FF85B0D9454071909C1381646C4ED
+CT=ACF4328AE78F34B9FA9B459747CC2658
+
+I=58
+KEY=60616263656667686A6B6C6D6F70717274757677797A7B7C7E7F808183848586
+PT=89AFD40F99521280D5399B12404F6DB4
+CT=B0479AEA12BAC4FE2384CF98995150C6
+
+I=59
+KEY=88898A8B8D8E8F90929394959798999A9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE
+PT=A09EF32DBC5119A35AB7FA38656F0329
+CT=9DD52789EFE3FFB99F33B3DA5030109A
+
+I=60
+KEY=B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6
+PT=61773457F068C376C7829B93E696E716
+CT=ABBB755E4621EF8F1214C19F649FB9FD
+
+I=61
+KEY=D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE
+PT=A34F0CAE726CCE41DD498747D891B967
+CT=DA27FB8174357BCE2BED0E7354F380F9
+
+I=62
+KEY=00010203050607080A0B0C0D0F10111214151617191A1B1C1E1F202123242526
+PT=856F59496C7388EE2D2B1A27B7697847
+CT=C59A0663F0993838F6E5856593BDC5EF
+
+I=63
+KEY=28292A2B2D2E2F30323334353738393A3C3D3E3F41424344464748494B4C4D4E
+PT=CB090C593EF7720BD95908FB93B49DF4
+CT=ED60B264B5213E831607A99C0CE5E57E
+
+I=64
+KEY=50515253555657585A5B5C5D5F60616264656667696A6B6C6E6F707173747576
+PT=A0AC75CD2F1923D460FC4D457AD95BAF
+CT=E50548746846F3EB77B8C520640884ED
+
+I=65
+KEY=78797A7B7D7E7F80828384858788898A8C8D8E8F91929394969798999B9C9D9E
+PT=2A2B282974777689E8E9EEEF525D5C5F
+CT=28282CC7D21D6A2923641E52D188EF0C
+
+I=66
+KEY=A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6
+PT=909192939390919E0F0E09089788898A
+CT=0DFA5B02ABB18E5A815305216D6D4F8E
+
+I=67
+KEY=C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE
+PT=777675748D8E8F907170777649464744
+CT=7359635C0EECEFE31D673395FB46FB99
+
+I=68
+KEY=F0F1F2F3F5F6F7F8FAFBFCFDFE01000204050607090A0B0C0E0F101113141516
+PT=717073720605040B2D2C2B2A05FAFBF9
+CT=73C679F7D5AEF2745C9737BB4C47FB36
+
+I=69
+KEY=18191A1B1D1E1F20222324252728292A2C2D2E2F31323334363738393B3C3D3E
+PT=64656667FEFDFCC31B1A1D1CA5AAABA8
+CT=B192BD472A4D2EAFB786E97458967626
+
+I=70
+KEY=40414243454647484A4B4C4D4F50515254555657595A5B5C5E5F606163646566
+PT=DBDAD9D86A696867B5B4B3B2C8D7D6D5
+CT=0EC327F6C8A2B147598CA3FDE61DC6A4
+
+I=71
+KEY=68696A6B6D6E6F70727374757778797A7C7D7E7F81828384868788898B8C8D8E
+PT=5C5D5E5FE3E0E1FE31303736333C3D3E
+CT=FC418EB3C41B859B38D4B6F646629729
+
+I=72
+KEY=90919293959697989A9B9C9D9FA0A1A2A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6
+PT=545556574B48494673727574546B6A69
+CT=30249E5AC282B1C981EA64B609F3A154
+
+I=73
+KEY=B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE
+PT=ECEDEEEFC6C5C4BB56575051F5FAFBF8
+CT=5E6E08646D12150776BB43C2D78A9703
+
+I=74
+KEY=E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFCFEFE010103040506
+PT=464744452724252AC9C8CFCED2CDCCCF
+CT=FAEB3D5DE652CD3447DCEB343F30394A
+
+I=75
+KEY=08090A0B0D0E0F10121314151718191A1C1D1E1F21222324262728292B2C2D2E
+PT=E6E7E4E54142435C878681801C131211
+CT=A8E88706823F6993EF80D05C1C7B2CF0
+
+I=76
+KEY=30313233353637383A3B3C3D3F40414244454647494A4B4C4E4F505153545556
+PT=72737071CFCCCDC2F9F8FFFE710E0F0C
+CT=8CED86677E6E00A1A1B15968F2D3CCE6
+
+I=77
+KEY=58595A5B5D5E5F60626364656768696A6C6D6E6F71727374767778797B7C7D7E
+PT=505152537370714EC3C2C5C4010E0F0C
+CT=9FC7C23858BE03BDEBB84E90DB6786A9
+
+I=78
+KEY=80818283858687888A8B8C8D8F90919294959697999A9B9C9E9FA0A1A3A4A5A6
+PT=A8A9AAAB5C5F5E51AEAFA8A93D222320
+CT=B4FBD65B33F70D8CF7F1111AC4649C36
+
+I=79
+KEY=A8A9AAABADAEAFB0B2B3B4B5B7B8B9BABCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE
+PT=DEDFDCDDF6F5F4EB10111617FEF1F0F3
+CT=C5C32D5ED03C4B53CC8C1BD0EF0DBBF6
+
+I=80
+KEY=D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6
+PT=BDBCBFBE5E5D5C530B0A0D0CFAC5C4C7
+CT=D1A7F03B773E5C212464B63709C6A891
+
+I=81
+KEY=F8F9FAFBFDFEFE00020304050708090A0C0D0E0F11121314161718191B1C1D1E
+PT=8A8B8889050606F8F4F5F2F3636C6D6E
+CT=6B7161D8745947AC6950438EA138D028
+
+I=82
+KEY=20212223252627282A2B2C2D2F30313234353637393A3B3C3E3F404143444546
+PT=A6A7A4A54D4E4F40B2B3B4B539262724
+CT=FD47A9F7E366EE7A09BC508B00460661
+
+I=83
+KEY=48494A4B4D4E4F50525354555758595A5C5D5E5F61626364666768696B6C6D6E
+PT=9C9D9E9FE9EAEBF40E0F08099B949596
+CT=00D40B003DC3A0D9310B659B98C7E416
+
+I=84
+KEY=70717273757677787A7B7C7D7F80818284858687898A8B8C8E8F909193949596
+PT=2D2C2F2E1013121DCCCDCACBED121310
+CT=EEA4C79DCC8E2BDA691F20AC48BE0717
+
+I=85
+KEY=98999A9B9D9E9FA0A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE
+PT=F4F5F6F7EDEEEFD0EAEBECEDF7F8F9FA
+CT=E78F43B11C204403E5751F89D05A2509
+
+I=86
+KEY=C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6
+PT=3D3C3F3E282B2A2573727574150A0B08
+CT=D0F0E3D1F1244BB979931E38DD1786EF
+
+I=87
+KEY=E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FAFCFDFEFF01020304060708090B0C0D0E
+PT=B6B7B4B5F8FBFAE5B4B5B2B3A0AFAEAD
+CT=042E639DC4E1E4DDE7B75B749EA6F765
+
+I=88
+KEY=10111213151617181A1B1C1D1F20212224252627292A2B2C2E2F303133343536
+PT=B7B6B5B4989B9A95878681809BA4A5A6
+CT=BC032FDD0EFE29503A980A7D07AB46A8
+
+I=89
+KEY=38393A3B3D3E3F40424344454748494A4C4D4E4F51525354565758595B5C5D5E
+PT=A8A9AAABE5E6E798E9E8EFEE4748494A
+CT=0C93AC949C0DA6446EFFB86183B6C910
+
+I=90
+KEY=60616263656667686A6B6C6D6F70717274757677797A7B7C7E7F808183848586
+PT=ECEDEEEFD9DADBD4B9B8BFBE657A7B78
+CT=E0D343E14DA75C917B4A5CEC4810D7C2
+
+I=91
+KEY=88898A8B8D8E8F90929394959798999A9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE
+PT=7F7E7D7C696A6B74CACBCCCD929D9C9F
+CT=0EAFB821748408279B937B626792E619
+
+I=92
+KEY=B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6
+PT=08090A0B0605040BFFFEF9F8B9C6C7C4
+CT=FA1AC6E02D23B106A1FEF18B274A553F
+
+I=93
+KEY=D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE
+PT=08090A0BF1F2F3CCFCFDFAFB68676665
+CT=0DADFE019CD12368075507DF33C1A1E9
+
+I=94
+KEY=00010203050607080A0B0C0D0F10111214151617191A1B1C1E1F202123242526
+PT=CACBC8C93A393837050403020D121310
+CT=3A0879B414465D9FFBAF86B33A63A1B9
+
+I=95
+KEY=28292A2B2D2E2F30323334353738393A3C3D3E3F41424344464748494B4C4D4E
+PT=E9E8EBEA8281809F8F8E8988343B3A39
+CT=62199FADC76D0BE1805D3BA0B7D914BF
+
+I=96
+KEY=50515253555657585A5B5C5D5F60616264656667696A6B6C6E6F707173747576
+PT=515053524645444BD0D1D6D7340B0A09
+CT=1B06D6C5D333E742730130CF78E719B4
+
+I=97
+KEY=78797A7B7D7E7F80828384858788898A8C8D8E8F91929394969798999B9C9D9E
+PT=42434041ECEFEE1193929594C6C9C8CB
+CT=F1F848824C32E9DCDCBF21580F069329
+
+I=98
+KEY=A0A1A2A3A5A6A7A8AAABACADAFB0B1B2B4B5B6B7B9BABBBCBEBFC0C1C3C4C5C6
+PT=EFEEEDECC2C1C0CF76777071455A5B58
+CT=1A09050CBD684F784D8E965E0782F28A
+
+I=99
+KEY=C8C9CACBCDCECFD0D2D3D4D5D7D8D9DADCDDDEDFE1E2E3E4E6E7E8E9EBECEDEE
+PT=5F5E5D5C3F3C3D221D1C1B1A19161714
+CT=79C2969E7DED2BA7D088F3F320692360
+
+I=100
+KEY=F0F1F2F3F5F6F7F8FAFBFCFDFE01000204050607090A0B0C0E0F101113141516
+PT=000102034142434C1C1D1A1B8D727371
+CT=091A658A2F7444C16ACCB669450C7B63
+
+I=101
+KEY=18191A1B1D1E1F20222324252728292A2C2D2E2F31323334363738393B3C3D3E
+PT=8E8F8C8DB1B2B38C56575051050A0B08
+CT=97C1E3A72CCA65FA977D5ED0E8A7BBFC
+
+I=102
+KEY=40414243454647484A4B4C4D4F50515254555657595A5B5C5E5F606163646566
+PT=A7A6A5A4E8EBEAE57F7E7978CAD5D4D7
+CT=70C430C6DB9A17828937305A2DF91A2A
+
+I=103
+KEY=68696A6B6D6E6F70727374757778797A7C7D7E7F81828384868788898B8C8D8E
+PT=8A8B888994979689454443429F909192
+CT=629553457FBE2479098571C7C903FDE8
+
+I=104
+KEY=90919293959697989A9B9C9D9FA0A1A2A4A5A6A7A9AAABACAEAFB0B1B3B4B5B6
+PT=8C8D8E8FE0E3E2ED45444342F1CECFCC
+CT=A25B25A61F612669E7D91265C7D476BA
+
+I=105
+KEY=B8B9BABBBDBEBFC0C2C3C4C5C7C8C9CACCCDCECFD1D2D3D4D6D7D8D9DBDCDDDE
+PT=FFFEFDFC4C4F4E31D8D9DEDFB6B9B8BB
+CT=EB7E4E49B8AE0F024570DDA293254FED
+
+I=106
+KEY=E0E1E2E3E5E6E7E8EAEBECEDEFF0F1F2F4F5F6F7F9FAFBFCFEFE010103040506
+PT=FDFCFFFECCCFCEC12F2E29286679787B
+CT=38FE15D61CCA84516E924ADCE5014F67
+
+I=107
+KEY=08090A0B0D0E0F10121314151718191A1C1D1E1F21222324262728292B2C2D2E
+PT=67666564BAB9B8A77071767719161714
+CT=3AD208492249108C9F3EBEB167AD0583
+
+I=108
+KEY=30313233353637383A3B3C3D3F40414244454647494A4B4C4E4F505153545556
+PT=9A9B98992D2E2F2084858283245B5A59
+CT=299BA9F9BF5AB05C3580FC26EDD1ED12
+
+I=109
+KEY=58595A5B5D5E5F60626364656768696A6C6D6E6F71727374767778797B7C7D7E
+PT=A4A5A6A70B0809365C5D5A5B2C232221
+CT=19DC705B857A60FB07717B2EA5717781
+
+I=110
+KEY=80818283858687888A8B8C8D8F90919294959697999A9B9C9E9FA0A1A3A4A5A6
+PT=464744455754555AF3F2F5F4AFB0B1B2
+CT=FFC8AEB885B5EFCAD06B6DBEBF92E76B
+
+I=111
+KEY=A8A9AAABADAEAFB0B2B3B4B5B7B8B9BABCBDBEBFC1C2C3C4C6C7C8C9CBCCCDCE
+PT=323330317675746B7273747549464744
+CT=F58900C5E0B385253FF2546250A0142B
+
+I=112
+KEY=D0D1D2D3D5D6D7D8DADBDCDDDFE0E1E2E4E5E6E7E9EAEBECEEEFF0F1F3F4F5F6
+PT=A8A9AAAB181B1A15808186872B141516
+CT=2EE67B56280BC462429CEE6E3370CBC1
+
+I=113
+KEY=F8F9FAFBFDFEFE00020304050708090A0C0D0E0F11121314161718191B1C1D1E
+PT=E7E6E5E4202323DDAAABACAD343B3A39
+CT=20DB650A9C8E9A84AB4D25F7EDC8F03F
+
+I=114
+KEY=20212223252627282A2B2C2D2F30313234353637393A3B3C3E3F404143444546
+PT=A8A9AAAB2221202FEDECEBEA1E010003
+CT=3C36DA169525CF818843805F25B78AE5
+
+I=115
+KEY=48494A4B4D4E4F50525354555758595A5C5D5E5F61626364666768696B6C6D6E
+PT=F9F8FBFA5F5C5D42424344450E010003
+CT=9A781D960DB9E45E37779042FEA51922
+
+I=116
+KEY=70717273757677787A7B7C7D7F80818284858687898A8B8C8E8F909193949596
+PT=57565554F5F6F7F89697909120DFDEDD
+CT=6560395EC269C672A3C288226EFDBA77
+
+I=117
+KEY=98999A9B9D9E9FA0A2A3A4A5A7A8A9AAACADAEAFB1B2B3B4B6B7B8B9BBBCBDBE
+PT=F8F9FAFBCCCFCEF1DDDCDBDA0E010003
+CT=8C772B7A189AC544453D5916EBB27B9A
+
+I=118
+KEY=C0C1C2C3C5C6C7C8CACBCCCDCFD0D1D2D4D5D6D7D9DADBDCDEDFE0E1E3E4E5E6
+PT=D9D8DBDA7073727D80818687C2DDDCDF
+CT=77CA5468CC48E843D05F78EED9D6578F
+
+I=119
+KEY=E8E9EAEBEDEEEFF0F2F3F4F5F7F8F9FAFCFDFEFF01020304060708090B0C0D0E
+PT=C5C4C7C6080B0A1588898E8F68676665
+CT=72CDCC71DC82C60D4429C9E2D8195BAA
+
+I=120
+KEY=10111213151617181A1B1C1D1F20212224252627292A2B2C2E2F303133343536
+PT=83828180DCDFDED186878081F0CFCECD
+CT=8080D68CE60E94B40B5B8B69EEB35AFA
+
+I=121
+KEY=38393A3B3D3E3F40424344454748494A4C4D4E4F51525354565758595B5C5D5E
+PT=98999A9BDDDEDFA079787F7E0A050407
+CT=44222D3CDE299C04369D58AC0EBA1E8E
+
+I=122
+KEY=60616263656667686A6B6C6D6F70717274757677797A7B7C7E7F808183848586
+PT=CECFCCCD4F4C4D429F9E9998DFC0C1C2
+CT=9B8721B0A8DFC691C5BC5885DBFCB27A
+
+I=123
+KEY=88898A8B8D8E8F90929394959798999A9C9D9E9FA1A2A3A4A6A7A8A9ABACADAE
+PT=404142436665647B29282F2EABA4A5A6
+CT=0DC015CE9A3A3414B5E62EC643384183
+
+I=124
+KEY=B0B1B2B3B5B6B7B8BABBBCBDBFC0C1C2C4C5C6C7C9CACBCCCECFD0D1D3D4D5D6
+PT=33323130E6E5E4EB23222524DEA1A0A3
+CT=705715448A8DA412025CE38345C2A148
+
+I=125
+KEY=D8D9DADBDDDEDFE0E2E3E4E5E7E8E9EAECEDEEEFF1F2F3F4F6F7F8F9FBFCFDFE
+PT=CFCECDCCF6F5F4CBE6E7E0E199969794
+CT=C32B5B0B6FBAE165266C569F4B6ECF0B
+
+I=126
+KEY=00010203050607080A0B0C0D0F10111214151617191A1B1C1E1F202123242526
+PT=BABBB8B97271707FDCDDDADB29363734
+CT=4DCA6C75192A01DDCA9476AF2A521E87
+
+I=127
+KEY=28292A2B2D2E2F30323334353738393A3C3D3E3F41424344464748494B4C4D4E
+PT=C9C8CBCA4447465926272021545B5A59
+CT=058691E627ECBC36AC07B6DB423BD698
+
+I=128
+KEY=50515253555657585A5B5C5D5F60616264656667696A6B6C6E6F707173747576
+PT=050407067477767956575051221D1C1F
+CT=7444527095838FE080FC2BCDD30847EB
+
+==========
\ No newline at end of file
diff --git a/tests/seal b/tests/seal
new file mode 100644 (file)
index 0000000..7c48095
--- /dev/null
@@ -0,0 +1,8 @@
+# Test vectors for SEAL
+#
+# $Id: seal,v 1.1 2000/06/17 12:11:49 mdw Exp $
+
+seal {
+  67452301efcdab8998badcfe10325476c3d2e1f0 0x013577af
+  9505a0379cc4849b051ebea40f537306fd97b05fbd3fa1f6cdde2c6c7ceefd81e7c3bd2aff9a20648322a100855067ef534b63c1e6599028d95eaba7eb010c48;
+}
diff --git a/tests/serpent.aes b/tests/serpent.aes
new file mode 100644 (file)
index 0000000..0419e3b
--- /dev/null
@@ -0,0 +1,3900 @@
+=========================
+
+FILENAME:  "ecb_vk.txt"
+
+Electronic Codebook (ECB) Mode
+Variable Key Known Answer Tests
+
+Algorithm Name: Serpent
+Principal Submitter: Ross Anderson, Eli Biham, Lars Knudsen
+
+==========
+
+KEYSIZE=128
+
+PT=00000000000000000000000000000000
+
+I=1
+KEY=80000000000000000000000000000000
+CT=49afbfad9d5a34052cd8ffa5986bd2dd
+
+I=2
+KEY=40000000000000000000000000000000
+CT=0c1e2e4e79bd02c2501096e79b5e73fa
+
+I=3
+KEY=20000000000000000000000000000000
+CT=d769e71b31f4ae12e14cdc48238d2d7b
+
+I=4
+KEY=10000000000000000000000000000000
+CT=bd0276d6be072cc00b3d426130bf355f
+
+I=5
+KEY=08000000000000000000000000000000
+CT=c191e2121daea18ec30957bbce199a8c
+
+I=6
+KEY=04000000000000000000000000000000
+CT=afdffc707b4c6890fa9eec5dcf8c9cd6
+
+I=7
+KEY=02000000000000000000000000000000
+CT=7ed064ab9270ede51862d2a4775eb639
+
+I=8
+KEY=01000000000000000000000000000000
+CT=e108b719d47da77d82b2811f09c768f6
+
+I=9
+KEY=00800000000000000000000000000000
+CT=46d78ac926c7fd72aeb6e662d6be0671
+
+I=10
+KEY=00400000000000000000000000000000
+CT=b86ddb30f8bacec337679bb112a33a04
+
+I=11
+KEY=00200000000000000000000000000000
+CT=d55f0d5779c68cb6db174f85006f5ef9
+
+I=12
+KEY=00100000000000000000000000000000
+CT=9cce4fe5fc2c3f58007049ff81ae3fd2
+
+I=13
+KEY=00080000000000000000000000000000
+CT=e8db9396961180f9515acedbc47d5cef
+
+I=14
+KEY=00040000000000000000000000000000
+CT=abcc122ccc4b2b00a40e266c54f0d234
+
+I=15
+KEY=00020000000000000000000000000000
+CT=137ef0814dc6171858a93557e97b78b3
+
+I=16
+KEY=00010000000000000000000000000000
+CT=1aeddc72581c90d87f6f01e431dc31eb
+
+I=17
+KEY=00008000000000000000000000000000
+CT=9543bc267111fbdb019c00d0d907d643
+
+I=18
+KEY=00004000000000000000000000000000
+CT=2269c1f5dbeb2ced1932a60dcf273b46
+
+I=19
+KEY=00002000000000000000000000000000
+CT=bb49509c9b79d012cb04ab565534df90
+
+I=20
+KEY=00001000000000000000000000000000
+CT=4d0f02eb268acfaec89115f7f761c805
+
+I=21
+KEY=00000800000000000000000000000000
+CT=9288439abb3beb346b7fafadb897dd11
+
+I=22
+KEY=00000400000000000000000000000000
+CT=dc348afd3ee54b134f8f9f5045e87171
+
+I=23
+KEY=00000200000000000000000000000000
+CT=52d8aa93f95a76980a42960a407b4e86
+
+I=24
+KEY=00000100000000000000000000000000
+CT=ea977f02d0f2b330dc33aa53055af7b8
+
+I=25
+KEY=00000080000000000000000000000000
+CT=8dd4bdf3874ed531036747e0b1b93f57
+
+I=26
+KEY=00000040000000000000000000000000
+CT=b8dba7c86499bff611935cede230cf03
+
+I=27
+KEY=00000020000000000000000000000000
+CT=32cce0726492e1afbc3a001f655c73ed
+
+I=28
+KEY=00000010000000000000000000000000
+CT=807570b6677b0fbdf7e7cabcd5dd0c97
+
+I=29
+KEY=00000008000000000000000000000000
+CT=26381f839c8d92efe1c29df688571c6d
+
+I=30
+KEY=00000004000000000000000000000000
+CT=da6e8ca3ec924a0a6c7b704b56c46783
+
+I=31
+KEY=00000002000000000000000000000000
+CT=cc6e7070e5ac70cd9664fda7bb505df2
+
+I=32
+KEY=00000001000000000000000000000000
+CT=8c41cd11c3dc2333dc96ddf74d85430c
+
+I=33
+KEY=00000000800000000000000000000000
+CT=a006685e857f4c2a70fcea63ed27888f
+
+I=34
+KEY=00000000400000000000000000000000
+CT=f6e94cd2ef8eb4886893458d49f84fdd
+
+I=35
+KEY=00000000200000000000000000000000
+CT=1f654042740ca63ad906c1b7bcf18bde
+
+I=36
+KEY=00000000100000000000000000000000
+CT=340fbc9913fc30b3a867921b6acb45fc
+
+I=37
+KEY=00000000080000000000000000000000
+CT=b2b0488b1c9dfa4d66fcaeeb4c29ec9e
+
+I=38
+KEY=00000000040000000000000000000000
+CT=a35d40c8cfe4b26d0047e1661d5bfbca
+
+I=39
+KEY=00000000020000000000000000000000
+CT=97f91ad53e32fd33198ccb9c553cf4b9
+
+I=40
+KEY=00000000010000000000000000000000
+CT=7adeec246ef1a8b16caa7aeb85441dd1
+
+I=41
+KEY=00000000008000000000000000000000
+CT=12e12c07623a87b76100474804b4f7a4
+
+I=42
+KEY=00000000004000000000000000000000
+CT=d24a5c39b10157c7f957f51bd35adf80
+
+I=43
+KEY=00000000002000000000000000000000
+CT=54593378469cea645783a4ab0847ce46
+
+I=44
+KEY=00000000001000000000000000000000
+CT=3ac3fce2fbdd176ff7f659ee19bcba72
+
+I=45
+KEY=00000000000800000000000000000000
+CT=82c4c432a703271e6f4bda3f174063e7
+
+I=46
+KEY=00000000000400000000000000000000
+CT=58d9b1ac0a6dad03ede51d30ac77c579
+
+I=47
+KEY=00000000000200000000000000000000
+CT=8a8f0c4f316232a05eb611358fd7a8a2
+
+I=48
+KEY=00000000000100000000000000000000
+CT=afae1db5edb3f7203577b37ce8e4876c
+
+I=49
+KEY=00000000000080000000000000000000
+CT=07112de84d0759a816f620dc786e648d
+
+I=50
+KEY=00000000000040000000000000000000
+CT=c3f4922db4541025e4c162acaae48de9
+
+I=51
+KEY=00000000000020000000000000000000
+CT=47836c92ed4fa66f1c6459478f45fcb0
+
+I=52
+KEY=00000000000010000000000000000000
+CT=d25965deadcbeb3c9b8ee599fa81f361
+
+I=53
+KEY=00000000000008000000000000000000
+CT=7d86a4cd06353c4a73022b2e75af7e2c
+
+I=54
+KEY=00000000000004000000000000000000
+CT=bf1bdfdb65e06f4d19c8b11a4e280f60
+
+I=55
+KEY=00000000000002000000000000000000
+CT=6845080536e71bd50c9db865bac484db
+
+I=56
+KEY=00000000000001000000000000000000
+CT=37004f392802c0ade017bc4a1ac4754c
+
+I=57
+KEY=00000000000000800000000000000000
+CT=501f9de66d9b8048c9a2657bee750323
+
+I=58
+KEY=00000000000000400000000000000000
+CT=edffad56dbd99444dbf01f5d347fef94
+
+I=59
+KEY=00000000000000200000000000000000
+CT=afe80d1a72308a41a10bc463507a27ce
+
+I=60
+KEY=00000000000000100000000000000000
+CT=c848af4b9d8eef03e085ea6331e14fbf
+
+I=61
+KEY=00000000000000080000000000000000
+CT=5c0547e4ca27c23506eb54dbf1f9f9c8
+
+I=62
+KEY=00000000000000040000000000000000
+CT=9eea58726c084358c80beace0ba9316f
+
+I=63
+KEY=00000000000000020000000000000000
+CT=c3f8221b5e849c830bbc30697cfc4e33
+
+I=64
+KEY=00000000000000010000000000000000
+CT=7d10842f40364fa264c876e5f2f9921e
+
+I=65
+KEY=00000000000000008000000000000000
+CT=e25769f083838d9ba05dbabd0adfb8a5
+
+I=66
+KEY=00000000000000004000000000000000
+CT=08cb3d4622c7974eff08da8a346f4b34
+
+I=67
+KEY=00000000000000002000000000000000
+CT=3ff6bcf81372f04eb8a1e082042ab5aa
+
+I=68
+KEY=00000000000000001000000000000000
+CT=0198c38d19e4579133178aa8e4dd77e4
+
+I=69
+KEY=00000000000000000800000000000000
+CT=dffdd86a4c6b22b399f4ccbedf1c4033
+
+I=70
+KEY=00000000000000000400000000000000
+CT=b10b0e2bde47b1129c75b5838627062c
+
+I=71
+KEY=00000000000000000200000000000000
+CT=ec608bdd3f215e9f73b57183dc7cb6b2
+
+I=72
+KEY=00000000000000000100000000000000
+CT=ee7b79d43681851ba43510b25fedac83
+
+I=73
+KEY=00000000000000000080000000000000
+CT=1906141e04ad2a584cef3a93dc13621f
+
+I=74
+KEY=00000000000000000040000000000000
+CT=7590c1bb23c24da9cd0f10040ee1b732
+
+I=75
+KEY=00000000000000000020000000000000
+CT=c581396fbdfecf75f55ce431879cfa72
+
+I=76
+KEY=00000000000000000010000000000000
+CT=93e88288dc748f6fa096bd2f5b35e9ae
+
+I=77
+KEY=00000000000000000008000000000000
+CT=b1f29150a0c4c5fdb8d20d2dc52661b5
+
+I=78
+KEY=00000000000000000004000000000000
+CT=e5ee3a9b5f38d0dd5db7be33f1b6f56f
+
+I=79
+KEY=00000000000000000002000000000000
+CT=db980feddfe7c14e3ff9b3e4bcc54165
+
+I=80
+KEY=00000000000000000001000000000000
+CT=1d085c7a534503011e3f248a0dd69ebf
+
+I=81
+KEY=00000000000000000000800000000000
+CT=578aa13f4284049cf77ddb639e9d6777
+
+I=82
+KEY=00000000000000000000400000000000
+CT=7f725360786ca59b82bf2673b0918054
+
+I=83
+KEY=00000000000000000000200000000000
+CT=fb21f98e591af7f7d6ee6ee04e70faa8
+
+I=84
+KEY=00000000000000000000100000000000
+CT=dc73336c2d3056fb56c11a09ca147f62
+
+I=85
+KEY=00000000000000000000080000000000
+CT=f51c58c6fe6a0ebc9c9109eb97ab2cbc
+
+I=86
+KEY=00000000000000000000040000000000
+CT=081d42e412311642222b52cff05d7fcc
+
+I=87
+KEY=00000000000000000000020000000000
+CT=e50c69c214a093004fe6f107bfc34a08
+
+I=88
+KEY=00000000000000000000010000000000
+CT=c5b57a240a095310ba40b7747459c6d3
+
+I=89
+KEY=00000000000000000000008000000000
+CT=b1110d1bc986bfa5acdbf1231b913574
+
+I=90
+KEY=00000000000000000000004000000000
+CT=23f5505f1badb259826d8ab7e59ce579
+
+I=91
+KEY=00000000000000000000002000000000
+CT=e5ddaabeaf6cae289174d9839165f372
+
+I=92
+KEY=00000000000000000000001000000000
+CT=c44e60a86495404c6ea369d6a26edd77
+
+I=93
+KEY=00000000000000000000000800000000
+CT=273d4e769fceb754be0ce32a7eecd427
+
+I=94
+KEY=00000000000000000000000400000000
+CT=239d65850b45fafe8bd0982492c4680d
+
+I=95
+KEY=00000000000000000000000200000000
+CT=5db91003c20f59ea498576f2efce4f6c
+
+I=96
+KEY=00000000000000000000000100000000
+CT=3bc4e9986a9576474f947ee49b9046fc
+
+I=97
+KEY=00000000000000000000000080000000
+CT=2aa67c0d7f134c3ee48b5a945a94aa50
+
+I=98
+KEY=00000000000000000000000040000000
+CT=f6f6f7dd1920f20aeb08844c8c811175
+
+I=99
+KEY=00000000000000000000000020000000
+CT=0d3313cbc0c84fc2747900009ba06bd4
+
+I=100
+KEY=00000000000000000000000010000000
+CT=7385cbac63b11c5adaf763c9c652e317
+
+I=101
+KEY=00000000000000000000000008000000
+CT=80a74048515d7162287b0f4d991ced6c
+
+I=102
+KEY=00000000000000000000000004000000
+CT=7d3abfdd15cfd8c0a989fc7a151e35ad
+
+I=103
+KEY=00000000000000000000000002000000
+CT=0336740082e8c5a85d32dcba80b0af79
+
+I=104
+KEY=00000000000000000000000001000000
+CT=fdaa7495db62ec0c22cae25fa2fe26d3
+
+I=105
+KEY=00000000000000000000000000800000
+CT=da10538ff08a81323b8e0bdab580c9a3
+
+I=106
+KEY=00000000000000000000000000400000
+CT=3aa421d16db303cd32c58261d71f6512
+
+I=107
+KEY=00000000000000000000000000200000
+CT=90f78d5b05e1ca8e0b34220760a4916d
+
+I=108
+KEY=00000000000000000000000000100000
+CT=03a35d1b2758a91907430778c9491f2b
+
+I=109
+KEY=00000000000000000000000000080000
+CT=b729c8708dc7cd28d21eaa12dcda299e
+
+I=110
+KEY=00000000000000000000000000040000
+CT=4b30d94af1cb3be76fb98ef878f68f5b
+
+I=111
+KEY=00000000000000000000000000020000
+CT=5b3eef9c55455e7347e533bb6c5f8b15
+
+I=112
+KEY=00000000000000000000000000010000
+CT=8e01b7823aacf4f23552ac40c03afa8e
+
+I=113
+KEY=00000000000000000000000000008000
+CT=f9d23961d0661eebde0f824e47ceba97
+
+I=114
+KEY=00000000000000000000000000004000
+CT=385ac4a1512edbecae3527ec49b84c11
+
+I=115
+KEY=00000000000000000000000000002000
+CT=4561dab55aa5b7625a6961fed1ab2614
+
+I=116
+KEY=00000000000000000000000000001000
+CT=40778dfdd63cbe86812440519715c680
+
+I=117
+KEY=00000000000000000000000000000800
+CT=93c6789d563e3df7d74ea3523333bdcf
+
+I=118
+KEY=00000000000000000000000000000400
+CT=7f47b8dbe11e385f07b6efb20a35045f
+
+I=119
+KEY=00000000000000000000000000000200
+CT=66ea39db24ed91686ead33208de35ccf
+
+I=120
+KEY=00000000000000000000000000000100
+CT=4c42473dcc65b14088257f8744af633e
+
+I=121
+KEY=00000000000000000000000000000080
+CT=3ddabfc006daab06462af4ef81544e26
+
+I=122
+KEY=00000000000000000000000000000040
+CT=24850e35c86eac07349927c73b1b234a
+
+I=123
+KEY=00000000000000000000000000000020
+CT=568db914df56817d3c85fde9f96932e0
+
+I=124
+KEY=00000000000000000000000000000010
+CT=8fc4ac4d7589bad559ac81301c1898a7
+
+I=125
+KEY=00000000000000000000000000000008
+CT=15dafb79236ac6f5f361f80d5255b334
+
+I=126
+KEY=00000000000000000000000000000004
+CT=4ab0a08142246b0c5175116b8fbb865e
+
+I=127
+KEY=00000000000000000000000000000002
+CT=a143e86d9bd26437f1c5a9c7903121b9
+
+I=128
+KEY=00000000000000000000000000000001
+CT=c8466045b204026fffd194320355ca4e
+
+==========
+
+KEYSIZE=192
+
+PT=00000000000000000000000000000000
+
+I=1
+KEY=800000000000000000000000000000000000000000000000
+CT=e78e5402c7195568ac3678f7a3f60c66
+
+I=2
+KEY=400000000000000000000000000000000000000000000000
+CT=23645a0ddd4b0f8b73b6215ea938a59e
+
+I=3
+KEY=200000000000000000000000000000000000000000000000
+CT=95d262643c94cab3e5830fc90a3ad119
+
+I=4
+KEY=100000000000000000000000000000000000000000000000
+CT=2a66ae878814c427cd1be1b929d69d1b
+
+I=5
+KEY=080000000000000000000000000000000000000000000000
+CT=c1f74b3c5df4b485118b6901a22bef14
+
+I=6
+KEY=040000000000000000000000000000000000000000000000
+CT=abe310b271d2f83f15ddd70139a8f18a
+
+I=7
+KEY=020000000000000000000000000000000000000000000000
+CT=8072229836095e09a76de47ff4b90942
+
+I=8
+KEY=010000000000000000000000000000000000000000000000
+CT=463b70d45332c3d5afc57cac1785055d
+
+I=9
+KEY=008000000000000000000000000000000000000000000000
+CT=5587b5bcb9ee5a28ba2bacc418005240
+
+I=10
+KEY=004000000000000000000000000000000000000000000000
+CT=735ab1e66239c7882ab3b52623e812fb
+
+I=11
+KEY=002000000000000000000000000000000000000000000000
+CT=2c899a7e69368ddfd435b90fb54a5110
+
+I=12
+KEY=001000000000000000000000000000000000000000000000
+CT=058a2258fec39fd98caee246e83fba23
+
+I=13
+KEY=000800000000000000000000000000000000000000000000
+CT=29de401b293b69509f1f26172b99e768
+
+I=14
+KEY=000400000000000000000000000000000000000000000000
+CT=33fda1c0a7f752f26f7eef1de21af616
+
+I=15
+KEY=000200000000000000000000000000000000000000000000
+CT=90144147c0838e88c081c08c806d3879
+
+I=16
+KEY=000100000000000000000000000000000000000000000000
+CT=598957d7605d027c870c3968de1c4281
+
+I=17
+KEY=000080000000000000000000000000000000000000000000
+CT=252e46bf0615ac356a4350f223d1e48b
+
+I=18
+KEY=000040000000000000000000000000000000000000000000
+CT=cc2447d57f2a53f825c167bffc7e00fd
+
+I=19
+KEY=000020000000000000000000000000000000000000000000
+CT=7100c3404f1394015041d22fe81d66d6
+
+I=20
+KEY=000010000000000000000000000000000000000000000000
+CT=9df94fccb015d30e3b86aeca1c393ab0
+
+I=21
+KEY=000008000000000000000000000000000000000000000000
+CT=4844e0e701a2a85dbac818f1ab2c14b5
+
+I=22
+KEY=000004000000000000000000000000000000000000000000
+CT=4ce4e7e3104510c0ec02486e618b072b
+
+I=23
+KEY=000002000000000000000000000000000000000000000000
+CT=88f251a4fd7939dab8e3547140958ace
+
+I=24
+KEY=000001000000000000000000000000000000000000000000
+CT=d752effc32d3d7ba1217a3a6759d5def
+
+I=25
+KEY=000000800000000000000000000000000000000000000000
+CT=6c03785cc372b967a9ae4e7e153064ce
+
+I=26
+KEY=000000400000000000000000000000000000000000000000
+CT=f356816a32dabc65bf3361957e131771
+
+I=27
+KEY=000000200000000000000000000000000000000000000000
+CT=b1700202c5b1c1fa94d756db5b160d7d
+
+I=28
+KEY=000000100000000000000000000000000000000000000000
+CT=d2dd321ee0d420bde198cda1c84de12a
+
+I=29
+KEY=000000080000000000000000000000000000000000000000
+CT=0e53163d96ceaec6073786bfe36b26ae
+
+I=30
+KEY=000000040000000000000000000000000000000000000000
+CT=607e94a93e5ed0e8d4657697af12263a
+
+I=31
+KEY=000000020000000000000000000000000000000000000000
+CT=4fe24da11e3b2e528689b4d72a1f4995
+
+I=32
+KEY=000000010000000000000000000000000000000000000000
+CT=c89dc4741fba46d09f0c909e415d1e8a
+
+I=33
+KEY=000000008000000000000000000000000000000000000000
+CT=927998642db52db45aa726f55a9807e4
+
+I=34
+KEY=000000004000000000000000000000000000000000000000
+CT=8a9da14de34dfcd06af101411ead6e6c
+
+I=35
+KEY=000000002000000000000000000000000000000000000000
+CT=58d05e0e1c2217640ba965d33642e784
+
+I=36
+KEY=000000001000000000000000000000000000000000000000
+CT=6b329fe46eb5523e2360a28956d4c07d
+
+I=37
+KEY=000000000800000000000000000000000000000000000000
+CT=80765c8e114a3f19ac86e68ac5e69ee6
+
+I=38
+KEY=000000000400000000000000000000000000000000000000
+CT=9e111a3bc422a8d3c8372a7b214dcf7f
+
+I=39
+KEY=000000000200000000000000000000000000000000000000
+CT=43a392e7c0a7441e5fd4b8f53b04376d
+
+I=40
+KEY=000000000100000000000000000000000000000000000000
+CT=321c8906902c819fee83ac1ca3de46ed
+
+I=41
+KEY=000000000080000000000000000000000000000000000000
+CT=961146f0e1d1618b4aa3dddfc407bcda
+
+I=42
+KEY=000000000040000000000000000000000000000000000000
+CT=35ff30c0f11225b0fbdeee829e1033e7
+
+I=43
+KEY=000000000020000000000000000000000000000000000000
+CT=c14f87b211633d3f3b7b297fe1f53b9f
+
+I=44
+KEY=000000000010000000000000000000000000000000000000
+CT=75e05358f1d0798f359c29a6ed9327cf
+
+I=45
+KEY=000000000008000000000000000000000000000000000000
+CT=ce93218acbc0c73f0b2be8082ed9fc4c
+
+I=46
+KEY=000000000004000000000000000000000000000000000000
+CT=54a73a50cda285a429016cc5086d9f40
+
+I=47
+KEY=000000000002000000000000000000000000000000000000
+CT=73de0beacbf4cd85e4e067226e94804d
+
+I=48
+KEY=000000000001000000000000000000000000000000000000
+CT=8851067bedfa997f5feb63a07676e0ea
+
+I=49
+KEY=000000000000800000000000000000000000000000000000
+CT=3438f325f239c49b2a21b5140aeb83a7
+
+I=50
+KEY=000000000000400000000000000000000000000000000000
+CT=e93a4212daaaaa91d2628bbffa824252
+
+I=51
+KEY=000000000000200000000000000000000000000000000000
+CT=660bef72e98bc11e63944336550e6d30
+
+I=52
+KEY=000000000000100000000000000000000000000000000000
+CT=39ebf5fc10b7bb85fe45473508bad887
+
+I=53
+KEY=000000000000080000000000000000000000000000000000
+CT=c97a923736e49d536ba33bf4502f4d89
+
+I=54
+KEY=000000000000040000000000000000000000000000000000
+CT=352acb145387dfa72b05b0dd79199c47
+
+I=55
+KEY=000000000000020000000000000000000000000000000000
+CT=73682433c31b7492335615ef9f39e5e0
+
+I=56
+KEY=000000000000010000000000000000000000000000000000
+CT=2f3166a3e2ea671397d852958b3cf986
+
+I=57
+KEY=000000000000008000000000000000000000000000000000
+CT=84f405f8270c1c58c0fe19a564df189f
+
+I=58
+KEY=000000000000004000000000000000000000000000000000
+CT=8e768cbf45b91029f767db75843ebd53
+
+I=59
+KEY=000000000000002000000000000000000000000000000000
+CT=b1927686ab4297fb6aa8eface91b6c45
+
+I=60
+KEY=000000000000001000000000000000000000000000000000
+CT=2192b94b157c15177f4bb4dcbd6eee89
+
+I=61
+KEY=000000000000000800000000000000000000000000000000
+CT=2b596f7f119a2f59179f522c7ea1ec51
+
+I=62
+KEY=000000000000000400000000000000000000000000000000
+CT=56c5e66ea1d98ea8dd9906d9d73610a5
+
+I=63
+KEY=000000000000000200000000000000000000000000000000
+CT=6ad3b33d2ede5b781d136fcea356c807
+
+I=64
+KEY=000000000000000100000000000000000000000000000000
+CT=5585ab166028e001379c6d2cbd3169a0
+
+I=65
+KEY=000000000000000080000000000000000000000000000000
+CT=167da93e33b3c95fe3f7a8526668073a
+
+I=66
+KEY=000000000000000040000000000000000000000000000000
+CT=dfb3528fca5f163952a30b34108300fd
+
+I=67
+KEY=000000000000000020000000000000000000000000000000
+CT=1503116c28b3b82ff9f0db169d857efc
+
+I=68
+KEY=000000000000000010000000000000000000000000000000
+CT=7b4dac54ba36d4ab88ef3356ebcbc086
+
+I=69
+KEY=000000000000000008000000000000000000000000000000
+CT=dcea72fe37b7eee1837be0eaa4ce66ca
+
+I=70
+KEY=000000000000000004000000000000000000000000000000
+CT=c9da8b98ef3157d221c06d6b95549701
+
+I=71
+KEY=000000000000000002000000000000000000000000000000
+CT=e83cabd11d2f8271a117c7c65cc66e78
+
+I=72
+KEY=000000000000000001000000000000000000000000000000
+CT=c462f0880d5ae2411dc6f1a68873abde
+
+I=73
+KEY=000000000000000000800000000000000000000000000000
+CT=fe0089c7e6c657d1b71cf467d4f58df0
+
+I=74
+KEY=000000000000000000400000000000000000000000000000
+CT=49932b6abd5601fda5c8403e9cb92502
+
+I=75
+KEY=000000000000000000200000000000000000000000000000
+CT=ec725bcf1a0133a45aeb7a5a72898d6b
+
+I=76
+KEY=000000000000000000100000000000000000000000000000
+CT=6ece8cb7f45ba9d63e152399f6558b6a
+
+I=77
+KEY=000000000000000000080000000000000000000000000000
+CT=9aa8f493830fd6ede37e7803f9869b19
+
+I=78
+KEY=000000000000000000040000000000000000000000000000
+CT=70856a78e1bb29b9d00108361683e0bf
+
+I=79
+KEY=000000000000000000020000000000000000000000000000
+CT=3bec70b8070fc514b3de12bfcd6e7b88
+
+I=80
+KEY=000000000000000000010000000000000000000000000000
+CT=4896551f1308c48fbdd89b8313de2fc8
+
+I=81
+KEY=000000000000000000008000000000000000000000000000
+CT=21270b0aa9831c887320210856618204
+
+I=82
+KEY=000000000000000000004000000000000000000000000000
+CT=9d94843edde4c6a89bea613af35afdcd
+
+I=83
+KEY=000000000000000000002000000000000000000000000000
+CT=a44742fb1f8c552797b0fe90a7f0efa9
+
+I=84
+KEY=000000000000000000001000000000000000000000000000
+CT=731be62d606ecf6ee9a0f0c96a26f6ea
+
+I=85
+KEY=000000000000000000000800000000000000000000000000
+CT=f1471235da8b77caf22aa978414bf459
+
+I=86
+KEY=000000000000000000000400000000000000000000000000
+CT=f67b2cdbbb11ee10d180c2070e73c387
+
+I=87
+KEY=000000000000000000000200000000000000000000000000
+CT=36f6bafee414e8f22f815cc204f46b5f
+
+I=88
+KEY=000000000000000000000100000000000000000000000000
+CT=e0d276ef75ac7dc2b15bee758cc7b892
+
+I=89
+KEY=000000000000000000000080000000000000000000000000
+CT=7d541fc08e0ff9b773cc84c974749f1e
+
+I=90
+KEY=000000000000000000000040000000000000000000000000
+CT=7998830324cf92a793e295412bd3aa9c
+
+I=91
+KEY=000000000000000000000020000000000000000000000000
+CT=d3a3a62bc99f201eded9ea8c1ebe84b3
+
+I=92
+KEY=000000000000000000000010000000000000000000000000
+CT=fc131ea2cfd76056fe0cb6f6322e514e
+
+I=93
+KEY=000000000000000000000008000000000000000000000000
+CT=92aec5acdbc80e93bb494565d6152683
+
+I=94
+KEY=000000000000000000000004000000000000000000000000
+CT=2897ad37ac521cfbafee2d3cc49d5427
+
+I=95
+KEY=000000000000000000000002000000000000000000000000
+CT=0a02072414040730d415d26f4c4f4e80
+
+I=96
+KEY=000000000000000000000001000000000000000000000000
+CT=6f7fb8316285e5f39b2ddaedb8ec2fc5
+
+I=97
+KEY=000000000000000000000000800000000000000000000000
+CT=77dbaaf18692980aa85d126a9b4a4726
+
+I=98
+KEY=000000000000000000000000400000000000000000000000
+CT=5d0ae9ba98b4eab278222e08da5c9515
+
+I=99
+KEY=000000000000000000000000200000000000000000000000
+CT=df65cdef8e09029d1eba45894d1e1904
+
+I=100
+KEY=000000000000000000000000100000000000000000000000
+CT=9911f98f1f260c8f60e4e0c1801b84c1
+
+I=101
+KEY=000000000000000000000000080000000000000000000000
+CT=974fb48c48cd2c4a3b19bb191ce3f37f
+
+I=102
+KEY=000000000000000000000000040000000000000000000000
+CT=43a52a7da3ebc9554fccacaabf02b42f
+
+I=103
+KEY=000000000000000000000000020000000000000000000000
+CT=0389dc8774b21120ece15cc270912897
+
+I=104
+KEY=000000000000000000000000010000000000000000000000
+CT=4dd7be782da1dbd775ba298bc90dc63b
+
+I=105
+KEY=000000000000000000000000008000000000000000000000
+CT=6ea07ca0ddfcac58cfa211b4bde9c321
+
+I=106
+KEY=000000000000000000000000004000000000000000000000
+CT=ba8829b1de058c4b48615d851fc74f17
+
+I=107
+KEY=000000000000000000000000002000000000000000000000
+CT=22a6e18a3555867731c492d0c8717633
+
+I=108
+KEY=000000000000000000000000001000000000000000000000
+CT=b68e5336ce0a364dbcbf4cae81e371d6
+
+I=109
+KEY=000000000000000000000000000800000000000000000000
+CT=384427b8f008e2b31a904c532beb1599
+
+I=110
+KEY=000000000000000000000000000400000000000000000000
+CT=84709b1ffbaba5397a9f133a0767b8cb
+
+I=111
+KEY=000000000000000000000000000200000000000000000000
+CT=7723e3a896d01b6b1f5340df029f7b48
+
+I=112
+KEY=000000000000000000000000000100000000000000000000
+CT=68e0fe27173a8a85f7445414574d1d87
+
+I=113
+KEY=000000000000000000000000000080000000000000000000
+CT=9b4788cbf0b56848101b3deb7a3a4656
+
+I=114
+KEY=000000000000000000000000000040000000000000000000
+CT=852593f9947f166bf58eae7c9a00001a
+
+I=115
+KEY=000000000000000000000000000020000000000000000000
+CT=29be7cc59519fe143ef6319682de0bba
+
+I=116
+KEY=000000000000000000000000000010000000000000000000
+CT=3949b20d461f75274e87df21de5d62a0
+
+I=117
+KEY=000000000000000000000000000008000000000000000000
+CT=db487555a81a86c1b726b917390b853a
+
+I=118
+KEY=000000000000000000000000000004000000000000000000
+CT=06b7908886620d9c9a0f3aedf235fb33
+
+I=119
+KEY=000000000000000000000000000002000000000000000000
+CT=aa300793219c42fc41987f9bbf19b58e
+
+I=120
+KEY=000000000000000000000000000001000000000000000000
+CT=a49d34f3c92c7cdb71a48d17a4723697
+
+I=121
+KEY=000000000000000000000000000000800000000000000000
+CT=093c1029c5eb09844c39dcb42a6ac5eb
+
+I=122
+KEY=000000000000000000000000000000400000000000000000
+CT=6a41993b586a37321a851455d80a3000
+
+I=123
+KEY=000000000000000000000000000000200000000000000000
+CT=13574f75f33be868fa293a751411cb47
+
+I=124
+KEY=000000000000000000000000000000100000000000000000
+CT=2b97b42b03879363bfa1587040246455
+
+I=125
+KEY=000000000000000000000000000000080000000000000000
+CT=77b91d8da3f6eaa1713b543994c673c5
+
+I=126
+KEY=000000000000000000000000000000040000000000000000
+CT=db664148b36b317331adc103bc680d57
+
+I=127
+KEY=000000000000000000000000000000020000000000000000
+CT=375a6f5c49202d3a59bf429a9a77be2a
+
+I=128
+KEY=000000000000000000000000000000010000000000000000
+CT=dc7a7fb1247b60aead86ce0d898b647d
+
+I=129
+KEY=000000000000000000000000000000008000000000000000
+CT=345eb88a1d9bd2c5ddee04ac3923f08a
+
+I=130
+KEY=000000000000000000000000000000004000000000000000
+CT=2dba9b16738d1adc7d859b0ecd7d1cd1
+
+I=131
+KEY=000000000000000000000000000000002000000000000000
+CT=4f48ebfcb17522ed2239191e520a967a
+
+I=132
+KEY=000000000000000000000000000000001000000000000000
+CT=b8c410bd14ad99cefd7428a3bc6f7e35
+
+I=133
+KEY=000000000000000000000000000000000800000000000000
+CT=07f3715387341ce7b8325e824842c01a
+
+I=134
+KEY=000000000000000000000000000000000400000000000000
+CT=6812212678dc0a46f0b86b24b15b8a03
+
+I=135
+KEY=000000000000000000000000000000000200000000000000
+CT=2e767244fc74c817f0789bb8943292ef
+
+I=136
+KEY=000000000000000000000000000000000100000000000000
+CT=01a32dd3f99dff43e110db0f2b88a819
+
+I=137
+KEY=000000000000000000000000000000000080000000000000
+CT=5e81d0e1effcd9961bcd343696009839
+
+I=138
+KEY=000000000000000000000000000000000040000000000000
+CT=129025e1728372901320b2fcff6d5b9b
+
+I=139
+KEY=000000000000000000000000000000000020000000000000
+CT=b3b3f7264dab71c2ca0febe44431b30d
+
+I=140
+KEY=000000000000000000000000000000000010000000000000
+CT=b9953f99bac2841911ab1c9caa7c98d7
+
+I=141
+KEY=000000000000000000000000000000000008000000000000
+CT=dbaca3686bdfbe3d8c5e2e6b1db5577f
+
+I=142
+KEY=000000000000000000000000000000000004000000000000
+CT=1be312be1113ebac050bfcf37b0de85d
+
+I=143
+KEY=000000000000000000000000000000000002000000000000
+CT=f2a282d526d5432c476a112ef6162cbe
+
+I=144
+KEY=000000000000000000000000000000000001000000000000
+CT=d4ad15036534cfc7091be72117ed9a0d
+
+I=145
+KEY=000000000000000000000000000000000000800000000000
+CT=142ed387794e196f1b148ecba2e5062b
+
+I=146
+KEY=000000000000000000000000000000000000400000000000
+CT=761ea776ecf0bcf73d52013da09328fe
+
+I=147
+KEY=000000000000000000000000000000000000200000000000
+CT=f3513e388fd5c6111b2c11edbe568001
+
+I=148
+KEY=000000000000000000000000000000000000100000000000
+CT=00f9e9822b79ee8c60edca082a9dd220
+
+I=149
+KEY=000000000000000000000000000000000000080000000000
+CT=e8e0bf758a9e88242b31617e828647fb
+
+I=150
+KEY=000000000000000000000000000000000000040000000000
+CT=dead0d2f9480117270c95f860c9ffc81
+
+I=151
+KEY=000000000000000000000000000000000000020000000000
+CT=56604fa1c8d7b258131f61beefa89b17
+
+I=152
+KEY=000000000000000000000000000000000000010000000000
+CT=0fc45f51d2c185e667da0517f2a60955
+
+I=153
+KEY=000000000000000000000000000000000000008000000000
+CT=192751977bff5834d51a9e81f448f19e
+
+I=154
+KEY=000000000000000000000000000000000000004000000000
+CT=26dd12ba453b5d54146c02d91f2e998b
+
+I=155
+KEY=000000000000000000000000000000000000002000000000
+CT=9b5c07141c98e441003fecf9c9311a2a
+
+I=156
+KEY=000000000000000000000000000000000000001000000000
+CT=e9494c80b90f1753a3689ab4ea258d66
+
+I=157
+KEY=000000000000000000000000000000000000000800000000
+CT=8fb4ca5e0a62e4b5adeb7be7731085b0
+
+I=158
+KEY=000000000000000000000000000000000000000400000000
+CT=5e29ae31cbbdc216e6d4adf274d47d0d
+
+I=159
+KEY=000000000000000000000000000000000000000200000000
+CT=cb173fb1cec206bef29a15b8ac72e919
+
+I=160
+KEY=000000000000000000000000000000000000000100000000
+CT=9f35799a7d5dab723493eb92af1c18d3
+
+I=161
+KEY=000000000000000000000000000000000000000080000000
+CT=f495f5658d888139913df0d3cf048baa
+
+I=162
+KEY=000000000000000000000000000000000000000040000000
+CT=e92daa5d108115d6f242f544e6ea72c9
+
+I=163
+KEY=000000000000000000000000000000000000000020000000
+CT=c0ea8a7652bfc6cf81a5c46da38d2840
+
+I=164
+KEY=000000000000000000000000000000000000000010000000
+CT=a221dece41a3a28cfc9d58e74cbd6014
+
+I=165
+KEY=000000000000000000000000000000000000000008000000
+CT=369dec7982b167b3f0f98a5e393d5e41
+
+I=166
+KEY=000000000000000000000000000000000000000004000000
+CT=b14d25d008a846a0768e394b751b8452
+
+I=167
+KEY=000000000000000000000000000000000000000002000000
+CT=ac516cd4467bda2ad6da18bf202e8ce2
+
+I=168
+KEY=000000000000000000000000000000000000000001000000
+CT=a82c0be53acb86f86692c1ead49acfea
+
+I=169
+KEY=000000000000000000000000000000000000000000800000
+CT=05548475ba322605dfc3ad55707a0539
+
+I=170
+KEY=000000000000000000000000000000000000000000400000
+CT=173639d0c531a19ec3cb8f4891b23706
+
+I=171
+KEY=000000000000000000000000000000000000000000200000
+CT=79febf394be1b8afb954c791a5eaa653
+
+I=172
+KEY=000000000000000000000000000000000000000000100000
+CT=8e009de1f46674d9bac9d36f4fd29daf
+
+I=173
+KEY=000000000000000000000000000000000000000000080000
+CT=9212a730377098bdb34645b8db9f6c6f
+
+I=174
+KEY=000000000000000000000000000000000000000000040000
+CT=c586abec28a5e252ed99934117d9dc00
+
+I=175
+KEY=000000000000000000000000000000000000000000020000
+CT=416c7812ce8049a70965f9cba27d07dc
+
+I=176
+KEY=000000000000000000000000000000000000000000010000
+CT=7819c9eff656380d997f50779f75ddaa
+
+I=177
+KEY=000000000000000000000000000000000000000000008000
+CT=f9a6b55b40c1c6f9ce21e07cefd14839
+
+I=178
+KEY=000000000000000000000000000000000000000000004000
+CT=3c70be049ad5f70660cdfd4738c88a5b
+
+I=179
+KEY=000000000000000000000000000000000000000000002000
+CT=774ebef1e5916cd2bcfd70a3b647637f
+
+I=180
+KEY=000000000000000000000000000000000000000000001000
+CT=4087268a3bea1b020f4f0ff6cec88d3d
+
+I=181
+KEY=000000000000000000000000000000000000000000000800
+CT=005b7c9abf6dd5cbd3fad77bc09fbac9
+
+I=182
+KEY=000000000000000000000000000000000000000000000400
+CT=0d45f3c58653e1c4f0328e8b760d668b
+
+I=183
+KEY=000000000000000000000000000000000000000000000200
+CT=9eb8ce9db6a787f32abd31365f67159a
+
+I=184
+KEY=000000000000000000000000000000000000000000000100
+CT=9ac89d752faa132d66d5fe92e4783989
+
+I=185
+KEY=000000000000000000000000000000000000000000000080
+CT=89266048a5fcfc1eb27b739bad4e279e
+
+I=186
+KEY=000000000000000000000000000000000000000000000040
+CT=82aeb3e765f31b046ae49903518efc92
+
+I=187
+KEY=000000000000000000000000000000000000000000000020
+CT=707df5c6fd03a2de93d46ac486a30d5e
+
+I=188
+KEY=000000000000000000000000000000000000000000000010
+CT=beb9bf4ecbf6875d1e72cf2478e3c1be
+
+I=189
+KEY=000000000000000000000000000000000000000000000008
+CT=144226cc1aeffe130c8dbb91f8797a25
+
+I=190
+KEY=000000000000000000000000000000000000000000000004
+CT=b7b8c1114487a380ffb64ca05bdd3e8b
+
+I=191
+KEY=000000000000000000000000000000000000000000000002
+CT=2c5eb11071ee2d0b2351e16aa93ec873
+
+I=192
+KEY=000000000000000000000000000000000000000000000001
+CT=0f61ac094954e286bcc90288fc62bd0a
+
+==========
+
+KEYSIZE=256
+
+PT=00000000000000000000000000000000
+
+I=1
+KEY=8000000000000000000000000000000000000000000000000000000000000000
+CT=abed96e766bf28cbc0ebd21a82ef0819
+
+I=2
+KEY=4000000000000000000000000000000000000000000000000000000000000000
+CT=959658cdfcd80356dde045bbe7b1888d
+
+I=3
+KEY=2000000000000000000000000000000000000000000000000000000000000000
+CT=04d49cc0fae714b46b5b177664df4c28
+
+I=4
+KEY=1000000000000000000000000000000000000000000000000000000000000000
+CT=39f1b1a339ded740d80b663a057d4866
+
+I=5
+KEY=0800000000000000000000000000000000000000000000000000000000000000
+CT=df15b01e30cf9c81688f989809579a86
+
+I=6
+KEY=0400000000000000000000000000000000000000000000000000000000000000
+CT=9db98fdedb783247d6af34f7579d89f6
+
+I=7
+KEY=0200000000000000000000000000000000000000000000000000000000000000
+CT=fc41583a46c0f673c82bd63be56c72a6
+
+I=8
+KEY=0100000000000000000000000000000000000000000000000000000000000000
+CT=34ed2423c59cc9c04ab5c6c931fd5898
+
+I=9
+KEY=0080000000000000000000000000000000000000000000000000000000000000
+CT=8432a8062a2aaef13171209ec5dded82
+
+I=10
+KEY=0040000000000000000000000000000000000000000000000000000000000000
+CT=c632e81cbb67020f6cfb9062f7a9171c
+
+I=11
+KEY=0020000000000000000000000000000000000000000000000000000000000000
+CT=c706ee8ed28ea73f32b2efc95c41d66d
+
+I=12
+KEY=0010000000000000000000000000000000000000000000000000000000000000
+CT=4b1a9b43530384e0b095e924a401fd48
+
+I=13
+KEY=0008000000000000000000000000000000000000000000000000000000000000
+CT=89404af86981af4ddaa800424c9c132b
+
+I=14
+KEY=0004000000000000000000000000000000000000000000000000000000000000
+CT=170594ac5052d7c192f581e1000a7e0d
+
+I=15
+KEY=0002000000000000000000000000000000000000000000000000000000000000
+CT=1e3970ea40cb25bcede878f627d35092
+
+I=16
+KEY=0001000000000000000000000000000000000000000000000000000000000000
+CT=10c2b5f2de944c7b1cb5fc21945d714d
+
+I=17
+KEY=0000800000000000000000000000000000000000000000000000000000000000
+CT=2f3e64eaf25b990300e0ce75ec5ddd19
+
+I=18
+KEY=0000400000000000000000000000000000000000000000000000000000000000
+CT=4f6c152d9df44abce9b18a765a0175bb
+
+I=19
+KEY=0000200000000000000000000000000000000000000000000000000000000000
+CT=2e861155411717b16c60fb9eb0e1ef46
+
+I=20
+KEY=0000100000000000000000000000000000000000000000000000000000000000
+CT=ce0449630e05e22eaeec4499f4020d36
+
+I=21
+KEY=0000080000000000000000000000000000000000000000000000000000000000
+CT=862de372c7497defe2b639359707e293
+
+I=22
+KEY=0000040000000000000000000000000000000000000000000000000000000000
+CT=6119f054d0f45711d06bed281d48712e
+
+I=23
+KEY=0000020000000000000000000000000000000000000000000000000000000000
+CT=74978fc86fb0e92c2601a58681eb06ac
+
+I=24
+KEY=0000010000000000000000000000000000000000000000000000000000000000
+CT=35031cbf461d8df3b4c946c9dcc54ca9
+
+I=25
+KEY=0000008000000000000000000000000000000000000000000000000000000000
+CT=dd2fb08b5b4bbcd07bd70453da57a417
+
+I=26
+KEY=0000004000000000000000000000000000000000000000000000000000000000
+CT=7e841efe450c947ece8ea3456c6bdfb6
+
+I=27
+KEY=0000002000000000000000000000000000000000000000000000000000000000
+CT=bf2e9008e158a8ed760a304d465edb83
+
+I=28
+KEY=0000001000000000000000000000000000000000000000000000000000000000
+CT=78d223b7577b97c57d41f7a9aa67fbc7
+
+I=29
+KEY=0000000800000000000000000000000000000000000000000000000000000000
+CT=982171d6e83e59b519741c29d21fd21d
+
+I=30
+KEY=0000000400000000000000000000000000000000000000000000000000000000
+CT=e8f80fe26ab8942b8c884bdfef37e3a2
+
+I=31
+KEY=0000000200000000000000000000000000000000000000000000000000000000
+CT=9daabac1e9699a951db64db0ea0ff761
+
+I=32
+KEY=0000000100000000000000000000000000000000000000000000000000000000
+CT=eae7ed73f898a19411b8d08f71c5c66f
+
+I=33
+KEY=0000000080000000000000000000000000000000000000000000000000000000
+CT=7e20e6a88a263f8adad3a8813524dbdf
+
+I=34
+KEY=0000000040000000000000000000000000000000000000000000000000000000
+CT=6cd1bfcb283a3531c830082153865a96
+
+I=35
+KEY=0000000020000000000000000000000000000000000000000000000000000000
+CT=182b87a0094e36ab50cc26c12f2d44e3
+
+I=36
+KEY=0000000010000000000000000000000000000000000000000000000000000000
+CT=af7c418e585d5ffc2966ae7f4ebc61b2
+
+I=37
+KEY=0000000008000000000000000000000000000000000000000000000000000000
+CT=dd136237150e9bd819d19f84ac180294
+
+I=38
+KEY=0000000004000000000000000000000000000000000000000000000000000000
+CT=5bd17b54d6878b398d8cedb08ce67dc0
+
+I=39
+KEY=0000000002000000000000000000000000000000000000000000000000000000
+CT=fef8c88ea06c5a0aa3efb1dce54541f1
+
+I=40
+KEY=0000000001000000000000000000000000000000000000000000000000000000
+CT=a8c35caf2d91a05408b171b960cd084d
+
+I=41
+KEY=0000000000800000000000000000000000000000000000000000000000000000
+CT=4bdf0294712fcd25975fbc084f6cc973
+
+I=42
+KEY=0000000000400000000000000000000000000000000000000000000000000000
+CT=e5f0bb96b46ac2c2413022e9d7f38a48
+
+I=43
+KEY=0000000000200000000000000000000000000000000000000000000000000000
+CT=dd6732cd14961e4e42c3ce0ea83850cd
+
+I=44
+KEY=0000000000100000000000000000000000000000000000000000000000000000
+CT=590e7b58c1963e45c5bb60a576378dc3
+
+I=45
+KEY=0000000000080000000000000000000000000000000000000000000000000000
+CT=69f5d841ad99f218fcb89521d1165484
+
+I=46
+KEY=0000000000040000000000000000000000000000000000000000000000000000
+CT=c236007a7a244d2364075279bbd3b307
+
+I=47
+KEY=0000000000020000000000000000000000000000000000000000000000000000
+CT=7ce8d07c90029b2253133a4b941668bd
+
+I=48
+KEY=0000000000010000000000000000000000000000000000000000000000000000
+CT=af3ebebfb4e37c7d22226101d27c54cc
+
+I=49
+KEY=0000000000008000000000000000000000000000000000000000000000000000
+CT=532e1616fa8ee2853aed696920e1f23c
+
+I=50
+KEY=0000000000004000000000000000000000000000000000000000000000000000
+CT=e332c5955575f799b05b02976fb41d80
+
+I=51
+KEY=0000000000002000000000000000000000000000000000000000000000000000
+CT=791da10535733bf5d4b9706d5af92243
+
+I=52
+KEY=0000000000001000000000000000000000000000000000000000000000000000
+CT=cd5eb5936eb10eb78432478eed00a2d1
+
+I=53
+KEY=0000000000000800000000000000000000000000000000000000000000000000
+CT=074280068f0cf9b8632959989d87b1aa
+
+I=54
+KEY=0000000000000400000000000000000000000000000000000000000000000000
+CT=a37c95a3c73592d03de7b645536221e2
+
+I=55
+KEY=0000000000000200000000000000000000000000000000000000000000000000
+CT=b969cca153bb861999da020e3255b002
+
+I=56
+KEY=0000000000000100000000000000000000000000000000000000000000000000
+CT=c9b0ce3c773d5e16062c7b0017b1a1fc
+
+I=57
+KEY=0000000000000080000000000000000000000000000000000000000000000000
+CT=fd38f1a2db8d38559c7ccad15d0e3e85
+
+I=58
+KEY=0000000000000040000000000000000000000000000000000000000000000000
+CT=fb6c3f215a5c11976576bde1d5c59169
+
+I=59
+KEY=0000000000000020000000000000000000000000000000000000000000000000
+CT=92350faab64bba4a84cc16683c7a0d4e
+
+I=60
+KEY=0000000000000010000000000000000000000000000000000000000000000000
+CT=ecec6570c11fcacec3af112e2ff2931a
+
+I=61
+KEY=0000000000000008000000000000000000000000000000000000000000000000
+CT=e7cb6e1dfe6da642b9e5856e98f91915
+
+I=62
+KEY=0000000000000004000000000000000000000000000000000000000000000000
+CT=3a5f963f0c2dbd81d9c1f663233f582b
+
+I=63
+KEY=0000000000000002000000000000000000000000000000000000000000000000
+CT=3b560746eb55e71ce00b9544faeb2fe9
+
+I=64
+KEY=0000000000000001000000000000000000000000000000000000000000000000
+CT=42046b25c85dbd6b402b296a97ef83a5
+
+I=65
+KEY=0000000000000000800000000000000000000000000000000000000000000000
+CT=9c7d38da9dccad1bc3c16bca0ba4d808
+
+I=66
+KEY=0000000000000000400000000000000000000000000000000000000000000000
+CT=5c3fa08c807c5210e0faeb4b67c902f5
+
+I=67
+KEY=0000000000000000200000000000000000000000000000000000000000000000
+CT=388834b1138b8cc182b9a24d18575de8
+
+I=68
+KEY=0000000000000000100000000000000000000000000000000000000000000000
+CT=cee14aa1bd42dca608bfed10acff716e
+
+I=69
+KEY=0000000000000000080000000000000000000000000000000000000000000000
+CT=6a03f9523ff9ec178a5d8448ee7b2d0f
+
+I=70
+KEY=0000000000000000040000000000000000000000000000000000000000000000
+CT=669f77ed3196867e9faf60565711c8cb
+
+I=71
+KEY=0000000000000000020000000000000000000000000000000000000000000000
+CT=178ed0cacf39d5eb031afb65b005e4f7
+
+I=72
+KEY=0000000000000000010000000000000000000000000000000000000000000000
+CT=4a7fc4ff3fec7dce25472c2e8b457208
+
+I=73
+KEY=0000000000000000008000000000000000000000000000000000000000000000
+CT=87fd250d814d84ecb6a065a8250fdf18
+
+I=74
+KEY=0000000000000000004000000000000000000000000000000000000000000000
+CT=637c3e8200e21b8c7e5e119659dbd635
+
+I=75
+KEY=0000000000000000002000000000000000000000000000000000000000000000
+CT=47ad826682ec4b03924d22de4918eacd
+
+I=76
+KEY=0000000000000000001000000000000000000000000000000000000000000000
+CT=a3ab5728256056198cc2b73d92b14373
+
+I=77
+KEY=0000000000000000000800000000000000000000000000000000000000000000
+CT=1629dc7684f194c15f5e855243a72ff0
+
+I=78
+KEY=0000000000000000000400000000000000000000000000000000000000000000
+CT=fe2f18ce7947084f7840d30d49fbcaad
+
+I=79
+KEY=0000000000000000000200000000000000000000000000000000000000000000
+CT=9009b9a658ec414872af1bb0347ee30c
+
+I=80
+KEY=0000000000000000000100000000000000000000000000000000000000000000
+CT=b09928f5fb282a0b99de6eba2d7877a5
+
+I=81
+KEY=0000000000000000000080000000000000000000000000000000000000000000
+CT=4e619867dbbcaea296e10fa8555ebde5
+
+I=82
+KEY=0000000000000000000040000000000000000000000000000000000000000000
+CT=1d4ceafa69284d2d1cf56eb9d3f4d3da
+
+I=83
+KEY=0000000000000000000020000000000000000000000000000000000000000000
+CT=7ab218e774099540500548c17d4be628
+
+I=84
+KEY=0000000000000000000010000000000000000000000000000000000000000000
+CT=54b7afb791f374fefd54897be6b5c908
+
+I=85
+KEY=0000000000000000000008000000000000000000000000000000000000000000
+CT=9099027805d50c43a70374102895a79c
+
+I=86
+KEY=0000000000000000000004000000000000000000000000000000000000000000
+CT=7c651cfc911bf96e0b606ee3ca04a145
+
+I=87
+KEY=0000000000000000000002000000000000000000000000000000000000000000
+CT=be1fa13657e2ef57cc7a5e265794cfd9
+
+I=88
+KEY=0000000000000000000001000000000000000000000000000000000000000000
+CT=f8ec20959d0efaa529d1384de88addd1
+
+I=89
+KEY=0000000000000000000000800000000000000000000000000000000000000000
+CT=be1f71467e549cdc3d24d6722673fb43
+
+I=90
+KEY=0000000000000000000000400000000000000000000000000000000000000000
+CT=c34f0989edeb49c9125c8185d72e62a2
+
+I=91
+KEY=0000000000000000000000200000000000000000000000000000000000000000
+CT=d8124193ed6e4e2b69945dca643bb9fb
+
+I=92
+KEY=0000000000000000000000100000000000000000000000000000000000000000
+CT=97ef94fa4c866d88c44b3d58ff8136cd
+
+I=93
+KEY=0000000000000000000000080000000000000000000000000000000000000000
+CT=0eb5f6ff1d75645292aea192e03ced37
+
+I=94
+KEY=0000000000000000000000040000000000000000000000000000000000000000
+CT=1a55bea7371ea49069ac73348305a33c
+
+I=95
+KEY=0000000000000000000000020000000000000000000000000000000000000000
+CT=bfda5f26889f30b13d4ba05303ecf8ce
+
+I=96
+KEY=0000000000000000000000010000000000000000000000000000000000000000
+CT=c5718a9b347ed13a969bbb93423ac251
+
+I=97
+KEY=0000000000000000000000008000000000000000000000000000000000000000
+CT=3543719280f21dcc88b31d906dd924b3
+
+I=98
+KEY=0000000000000000000000004000000000000000000000000000000000000000
+CT=8daaabd85ebf091e8aa2052313f872e5
+
+I=99
+KEY=0000000000000000000000002000000000000000000000000000000000000000
+CT=eee34ebf694065e99721990939b6cbe4
+
+I=100
+KEY=0000000000000000000000001000000000000000000000000000000000000000
+CT=24b6b069385cf3dfea203a5b95dfb114
+
+I=101
+KEY=0000000000000000000000000800000000000000000000000000000000000000
+CT=fc594972c7955c07e2393f22a619904d
+
+I=102
+KEY=0000000000000000000000000400000000000000000000000000000000000000
+CT=473d28bca0b356021fc516f3e6a55253
+
+I=103
+KEY=0000000000000000000000000200000000000000000000000000000000000000
+CT=fd2cba4c24c0d02535198851d50d579f
+
+I=104
+KEY=0000000000000000000000000100000000000000000000000000000000000000
+CT=32515fac86315a2586d76a62ea6f201b
+
+I=105
+KEY=0000000000000000000000000080000000000000000000000000000000000000
+CT=644eff865f7c1f854261b11c2a8e07d7
+
+I=106
+KEY=0000000000000000000000000040000000000000000000000000000000000000
+CT=9cd938a4d83df05dad1d70c6ea74d1fe
+
+I=107
+KEY=0000000000000000000000000020000000000000000000000000000000000000
+CT=f69af279f30363c234310eb4fea51291
+
+I=108
+KEY=0000000000000000000000000010000000000000000000000000000000000000
+CT=db9b673ca99514f7953f18acc5c390b1
+
+I=109
+KEY=0000000000000000000000000008000000000000000000000000000000000000
+CT=a872107c5116e36a75b7dbee56c47757
+
+I=110
+KEY=0000000000000000000000000004000000000000000000000000000000000000
+CT=dbae7a1d2fcfc6ddd2f911af0f905055
+
+I=111
+KEY=0000000000000000000000000002000000000000000000000000000000000000
+CT=5257eed79149f2a064dfaf163e01e3bd
+
+I=112
+KEY=0000000000000000000000000001000000000000000000000000000000000000
+CT=242fc696e8271727615914b4210f5071
+
+I=113
+KEY=0000000000000000000000000000800000000000000000000000000000000000
+CT=8d9ff3a56ab97fdfb5bab64fe4a81c80
+
+I=114
+KEY=0000000000000000000000000000400000000000000000000000000000000000
+CT=bf2254e8f9abd0013367728f9e16b59e
+
+I=115
+KEY=0000000000000000000000000000200000000000000000000000000000000000
+CT=8b91a39c085f3505949e4f14747e37cb
+
+I=116
+KEY=0000000000000000000000000000100000000000000000000000000000000000
+CT=09abf7df68f01db2ae5d526e9e2ee81e
+
+I=117
+KEY=0000000000000000000000000000080000000000000000000000000000000000
+CT=eb2502774a32f36cc1594617dddd1663
+
+I=118
+KEY=0000000000000000000000000000040000000000000000000000000000000000
+CT=ad263ae59f0d719234cfa1c77e717ce1
+
+I=119
+KEY=0000000000000000000000000000020000000000000000000000000000000000
+CT=c9d2d1eed4f8e1b4d05d897c9f1e5f67
+
+I=120
+KEY=0000000000000000000000000000010000000000000000000000000000000000
+CT=16ff204fb3031451731de91fde5a6b44
+
+I=121
+KEY=0000000000000000000000000000008000000000000000000000000000000000
+CT=eb5d9352b3615c55e895550b497191c1
+
+I=122
+KEY=0000000000000000000000000000004000000000000000000000000000000000
+CT=a88f3176c389ae8f406364e67b9e1557
+
+I=123
+KEY=0000000000000000000000000000002000000000000000000000000000000000
+CT=09bed1aed5eee6b077797b6cb31b44c2
+
+I=124
+KEY=0000000000000000000000000000001000000000000000000000000000000000
+CT=0be7804beb8204cea6f59fe55132a363
+
+I=125
+KEY=0000000000000000000000000000000800000000000000000000000000000000
+CT=54b00567b36ea41d04e8e877ead25944
+
+I=126
+KEY=0000000000000000000000000000000400000000000000000000000000000000
+CT=293cb655ee6ac5a4c1c2cc31f5696ae7
+
+I=127
+KEY=0000000000000000000000000000000200000000000000000000000000000000
+CT=22380e8215ec5f116f04311c267ce997
+
+I=128
+KEY=0000000000000000000000000000000100000000000000000000000000000000
+CT=e9ba668276b81896d093a9e67ab12036
+
+I=129
+KEY=0000000000000000000000000000000080000000000000000000000000000000
+CT=34c79f703a62b02e6790efbbbeb07241
+
+I=130
+KEY=0000000000000000000000000000000040000000000000000000000000000000
+CT=bfc96d59ae31369b0618fd78fc295826
+
+I=131
+KEY=0000000000000000000000000000000020000000000000000000000000000000
+CT=f811a6558ce7a67bd3280ee4e3259be8
+
+I=132
+KEY=0000000000000000000000000000000010000000000000000000000000000000
+CT=8c8205692ab866bcf965dd61d595bf8e
+
+I=133
+KEY=0000000000000000000000000000000008000000000000000000000000000000
+CT=098a85e6ca58293bd2298c07f86a8f8c
+
+I=134
+KEY=0000000000000000000000000000000004000000000000000000000000000000
+CT=2801da2be78057706abafaab8226fa39
+
+I=135
+KEY=0000000000000000000000000000000002000000000000000000000000000000
+CT=500796a8bccee9141ab21282d6c912a8
+
+I=136
+KEY=0000000000000000000000000000000001000000000000000000000000000000
+CT=80cbe789099bdf0140da3ac157d7bf47
+
+I=137
+KEY=0000000000000000000000000000000000800000000000000000000000000000
+CT=8ce81e5dea464efaf01b3da5a6da5aa9
+
+I=138
+KEY=0000000000000000000000000000000000400000000000000000000000000000
+CT=4aec37a4ef16b38bcdba0b01051803d1
+
+I=139
+KEY=0000000000000000000000000000000000200000000000000000000000000000
+CT=e6a2f6431269aa02c93793af80436a7b
+
+I=140
+KEY=0000000000000000000000000000000000100000000000000000000000000000
+CT=4aa9046b1fb69a6abcb8f3351d75efbd
+
+I=141
+KEY=0000000000000000000000000000000000080000000000000000000000000000
+CT=66b8c45fe8c254088d62d307edb9cf51
+
+I=142
+KEY=0000000000000000000000000000000000040000000000000000000000000000
+CT=fddcfb5c4da597b9d887e03b8337da0c
+
+I=143
+KEY=0000000000000000000000000000000000020000000000000000000000000000
+CT=69042f478d87f8b6e0d149216f2e8d93
+
+I=144
+KEY=0000000000000000000000000000000000010000000000000000000000000000
+CT=ad8f00cdace047f3225a235fc2b05738
+
+I=145
+KEY=0000000000000000000000000000000000008000000000000000000000000000
+CT=6a624c0f16aaa6cd4995e01988deaa3b
+
+I=146
+KEY=0000000000000000000000000000000000004000000000000000000000000000
+CT=7d8f824eaa7dd1657a0f59a2f27b5e0f
+
+I=147
+KEY=0000000000000000000000000000000000002000000000000000000000000000
+CT=7015d246b39a995c11b409485e100b51
+
+I=148
+KEY=0000000000000000000000000000000000001000000000000000000000000000
+CT=cad1a2944343525c2b9da630937cf40f
+
+I=149
+KEY=0000000000000000000000000000000000000800000000000000000000000000
+CT=c7f24334553fe63c4ab2f3ffbf0183ab
+
+I=150
+KEY=0000000000000000000000000000000000000400000000000000000000000000
+CT=bf2da14eea8055f51636984e51f4a349
+
+I=151
+KEY=0000000000000000000000000000000000000200000000000000000000000000
+CT=c424de5973035fad65d99e27a2ae07c0
+
+I=152
+KEY=0000000000000000000000000000000000000100000000000000000000000000
+CT=3ed7b674bcedb60523386119e2cb5fbe
+
+I=153
+KEY=0000000000000000000000000000000000000080000000000000000000000000
+CT=f0bed60941174023ae4d07e7deb23d5f
+
+I=154
+KEY=0000000000000000000000000000000000000040000000000000000000000000
+CT=159a9d7e5a210dad034ea2e50cbc30e5
+
+I=155
+KEY=0000000000000000000000000000000000000020000000000000000000000000
+CT=695724e11b4cea84603f935571a1f5ff
+
+I=156
+KEY=0000000000000000000000000000000000000010000000000000000000000000
+CT=788ac03153fad14a7a3f8322543dca64
+
+I=157
+KEY=0000000000000000000000000000000000000008000000000000000000000000
+CT=1964e04df808496e530e6ab5f2182ce4
+
+I=158
+KEY=0000000000000000000000000000000000000004000000000000000000000000
+CT=18a056a20724416b3ebe7f88743d8297
+
+I=159
+KEY=0000000000000000000000000000000000000002000000000000000000000000
+CT=dd28593d13343349ab120f2667441d8a
+
+I=160
+KEY=0000000000000000000000000000000000000001000000000000000000000000
+CT=a0bf14c7d0e3336d4cd5b2b1b47f5e73
+
+I=161
+KEY=0000000000000000000000000000000000000000800000000000000000000000
+CT=d467c69d25a1a02481a2e3508d014bad
+
+I=162
+KEY=0000000000000000000000000000000000000000400000000000000000000000
+CT=3115ecf100476954f6c185250aa099c8
+
+I=163
+KEY=0000000000000000000000000000000000000000200000000000000000000000
+CT=6d1be89c5f75270a366e6dcfcf3de5ba
+
+I=164
+KEY=0000000000000000000000000000000000000000100000000000000000000000
+CT=4d1686baa1be780736c35914731c186e
+
+I=165
+KEY=0000000000000000000000000000000000000000080000000000000000000000
+CT=3c5db56a9a87347b5a804560dd2dfd97
+
+I=166
+KEY=0000000000000000000000000000000000000000040000000000000000000000
+CT=24813b7d9043df69980def2dc0617d54
+
+I=167
+KEY=0000000000000000000000000000000000000000020000000000000000000000
+CT=5751c2eb5dd14d8823c714fc4475459e
+
+I=168
+KEY=0000000000000000000000000000000000000000010000000000000000000000
+CT=5b750ced85b4169116cf4e93c37e76e0
+
+I=169
+KEY=0000000000000000000000000000000000000000008000000000000000000000
+CT=4ebaddc62d252e4028bbddf02807b3b4
+
+I=170
+KEY=0000000000000000000000000000000000000000004000000000000000000000
+CT=216204523a32b2dcfc612be2d974b0dd
+
+I=171
+KEY=0000000000000000000000000000000000000000002000000000000000000000
+CT=fe995e0532b897921552c7cefebbab91
+
+I=172
+KEY=0000000000000000000000000000000000000000001000000000000000000000
+CT=354c096b0477ecb122c25c61f85e4125
+
+I=173
+KEY=0000000000000000000000000000000000000000000800000000000000000000
+CT=81b0c7e94e8426f4f227fa23ee5618c1
+
+I=174
+KEY=0000000000000000000000000000000000000000000400000000000000000000
+CT=85c91b3e8e1dd2dac0cd310f69286f5e
+
+I=175
+KEY=0000000000000000000000000000000000000000000200000000000000000000
+CT=db3c6cce550a8c72f67f59ab1b272d71
+
+I=176
+KEY=0000000000000000000000000000000000000000000100000000000000000000
+CT=4fae77cd8c5fbf1a7ab49785947c564a
+
+I=177
+KEY=0000000000000000000000000000000000000000000080000000000000000000
+CT=986d08049ce14579b756c250ad68d56e
+
+I=178
+KEY=0000000000000000000000000000000000000000000040000000000000000000
+CT=a9bb29db295e7364e65f687c418f39f2
+
+I=179
+KEY=0000000000000000000000000000000000000000000020000000000000000000
+CT=d425810268f0bec64400911d990bd237
+
+I=180
+KEY=0000000000000000000000000000000000000000000010000000000000000000
+CT=621910144f7cd3432b0663ed18137235
+
+I=181
+KEY=0000000000000000000000000000000000000000000008000000000000000000
+CT=a45cafd42aa19e21a7cc83d4a504a074
+
+I=182
+KEY=0000000000000000000000000000000000000000000004000000000000000000
+CT=6cb51ae713730353acd21906a8a8cebb
+
+I=183
+KEY=0000000000000000000000000000000000000000000002000000000000000000
+CT=b12b97ba267a9ccdd65cef0f4c436e64
+
+I=184
+KEY=0000000000000000000000000000000000000000000001000000000000000000
+CT=2711d87a5b1d5011e616975ef6d32a8f
+
+I=185
+KEY=0000000000000000000000000000000000000000000000800000000000000000
+CT=2911f90a41b56f53e0cafffc3923c0bc
+
+I=186
+KEY=0000000000000000000000000000000000000000000000400000000000000000
+CT=beb86799fcc846a7121209dcb2026add
+
+I=187
+KEY=0000000000000000000000000000000000000000000000200000000000000000
+CT=b9b5317d691bbef913c925e226fdb94b
+
+I=188
+KEY=0000000000000000000000000000000000000000000000100000000000000000
+CT=cc333ef43909a98cd6a0da7043ac3b2a
+
+I=189
+KEY=0000000000000000000000000000000000000000000000080000000000000000
+CT=0291cc086e364c94fdb5250e07f17685
+
+I=190
+KEY=0000000000000000000000000000000000000000000000040000000000000000
+CT=d98abd571faebeaece0d65d17ac320e6
+
+I=191
+KEY=0000000000000000000000000000000000000000000000020000000000000000
+CT=dd6bb22de6b4caea4e56cb09d2ec6177
+
+I=192
+KEY=0000000000000000000000000000000000000000000000010000000000000000
+CT=b6bb4f3f2ae83fe4a07ba5f10c3fd267
+
+I=193
+KEY=0000000000000000000000000000000000000000000000008000000000000000
+CT=8c590b173aa66854937f5e05e22c73d9
+
+I=194
+KEY=0000000000000000000000000000000000000000000000004000000000000000
+CT=bdb4f7428f37c024df2af13a6296f3e9
+
+I=195
+KEY=0000000000000000000000000000000000000000000000002000000000000000
+CT=51d5c74df6f71c146c835ae145aed598
+
+I=196
+KEY=0000000000000000000000000000000000000000000000001000000000000000
+CT=b8b86c7a65adb388d047bdd756edfbee
+
+I=197
+KEY=0000000000000000000000000000000000000000000000000800000000000000
+CT=084e0d8cfcfb7ad95019336fc94293a9
+
+I=198
+KEY=0000000000000000000000000000000000000000000000000400000000000000
+CT=516ea8aae87eee2b4f22a1c09852c325
+
+I=199
+KEY=0000000000000000000000000000000000000000000000000200000000000000
+CT=8030de81cd83227b63b2841fd72f6066
+
+I=200
+KEY=0000000000000000000000000000000000000000000000000100000000000000
+CT=c09fd5e5c061b14dfa78d90f67458ed4
+
+I=201
+KEY=0000000000000000000000000000000000000000000000000080000000000000
+CT=4cc791c47060fb666a86f60b6289e0ec
+
+I=202
+KEY=0000000000000000000000000000000000000000000000000040000000000000
+CT=fec1a2f79535ffa094ecd4720030cd36
+
+I=203
+KEY=0000000000000000000000000000000000000000000000000020000000000000
+CT=28d2784e2364f10096b516833dcb39f9
+
+I=204
+KEY=0000000000000000000000000000000000000000000000000010000000000000
+CT=04d2f725d569186682e209608e25c617
+
+I=205
+KEY=0000000000000000000000000000000000000000000000000008000000000000
+CT=087395ef3b31e6a948e5e2a35e2ca345
+
+I=206
+KEY=0000000000000000000000000000000000000000000000000004000000000000
+CT=6351fd25f8a06beceb244026c65c10c2
+
+I=207
+KEY=0000000000000000000000000000000000000000000000000002000000000000
+CT=3c61acc4a77da654cda7839816d2f385
+
+I=208
+KEY=0000000000000000000000000000000000000000000000000001000000000000
+CT=c660a12d18c94d0f5c81a22ed9c7ffb5
+
+I=209
+KEY=0000000000000000000000000000000000000000000000000000800000000000
+CT=1f01ebc6151c8f3ea70c423f4e2c64c9
+
+I=210
+KEY=0000000000000000000000000000000000000000000000000000400000000000
+CT=5e1231b72071ce574dfbbe66f5eed01b
+
+I=211
+KEY=0000000000000000000000000000000000000000000000000000200000000000
+CT=da025263d62d201cad37b53dae0507cb
+
+I=212
+KEY=0000000000000000000000000000000000000000000000000000100000000000
+CT=1600c5e3a94b0b44a8be99c5da558fd8
+
+I=213
+KEY=0000000000000000000000000000000000000000000000000000080000000000
+CT=dfef4c129ba77381194046afc87e22ff
+
+I=214
+KEY=0000000000000000000000000000000000000000000000000000040000000000
+CT=5a39e491cca9abe1f1436008f4a455cc
+
+I=215
+KEY=0000000000000000000000000000000000000000000000000000020000000000
+CT=57a5d924b055186029a2656898ad2b8d
+
+I=216
+KEY=0000000000000000000000000000000000000000000000000000010000000000
+CT=f7f0d88f13ee760300aced0f001b3e34
+
+I=217
+KEY=0000000000000000000000000000000000000000000000000000008000000000
+CT=924b4d0d4a88e669910cd9b890f25d76
+
+I=218
+KEY=0000000000000000000000000000000000000000000000000000004000000000
+CT=8168c47238ef6f1994bfcef5b9baeef9
+
+I=219
+KEY=0000000000000000000000000000000000000000000000000000002000000000
+CT=b6a59008e7267eb5f5492e2283198b31
+
+I=220
+KEY=0000000000000000000000000000000000000000000000000000001000000000
+CT=c706d911f2f7ac8372984c60980adfd8
+
+I=221
+KEY=0000000000000000000000000000000000000000000000000000000800000000
+CT=0bde9a2a1364784d2d2da743f77c6992
+
+I=222
+KEY=0000000000000000000000000000000000000000000000000000000400000000
+CT=b3bd8ce8da0d939fb59caacd8b0c452c
+
+I=223
+KEY=0000000000000000000000000000000000000000000000000000000200000000
+CT=4327b8cb4a6015ff9df50a4a5ca08442
+
+I=224
+KEY=0000000000000000000000000000000000000000000000000000000100000000
+CT=89f64377bf1e8a46c8247044e8056a98
+
+I=225
+KEY=0000000000000000000000000000000000000000000000000000000080000000
+CT=31028ff4ed7a98d2d4f72615445d7e4a
+
+I=226
+KEY=0000000000000000000000000000000000000000000000000000000040000000
+CT=f5e331d2036713649c8c15705a87d9f5
+
+I=227
+KEY=0000000000000000000000000000000000000000000000000000000020000000
+CT=d1dca9bb950823af5a4be2fbc52ec83b
+
+I=228
+KEY=0000000000000000000000000000000000000000000000000000000010000000
+CT=0951a1ddbf1f268d786c7233af62f0ef
+
+I=229
+KEY=0000000000000000000000000000000000000000000000000000000008000000
+CT=aa23686541d98309973f3d68e242a3e2
+
+I=230
+KEY=0000000000000000000000000000000000000000000000000000000004000000
+CT=ad69fca1d17ae46f423a945fa36660e1
+
+I=231
+KEY=0000000000000000000000000000000000000000000000000000000002000000
+CT=98272fdd4978e941b4f68f571b899fd8
+
+I=232
+KEY=0000000000000000000000000000000000000000000000000000000001000000
+CT=121952d98be02632491241b44304804a
+
+I=233
+KEY=0000000000000000000000000000000000000000000000000000000000800000
+CT=b16dea3eb57e5967a8b218f08842502b
+
+I=234
+KEY=0000000000000000000000000000000000000000000000000000000000400000
+CT=5d9bd9d06cdf97480ba073a57480fab3
+
+I=235
+KEY=0000000000000000000000000000000000000000000000000000000000200000
+CT=c9a296f7f58e208252dffec1d46fb538
+
+I=236
+KEY=0000000000000000000000000000000000000000000000000000000000100000
+CT=d831b2b44cd0782c94a9533c4221e4bf
+
+I=237
+KEY=0000000000000000000000000000000000000000000000000000000000080000
+CT=b93146526d778bae13e579c4962110ef
+
+I=238
+KEY=0000000000000000000000000000000000000000000000000000000000040000
+CT=2e483ad91c6aba09440d32dff6f838ac
+
+I=239
+KEY=0000000000000000000000000000000000000000000000000000000000020000
+CT=f650a662bee544675d15eeb6d16c5dfb
+
+I=240
+KEY=0000000000000000000000000000000000000000000000000000000000010000
+CT=4a0d75387c3fabe4e4b8d059e526a623
+
+I=241
+KEY=0000000000000000000000000000000000000000000000000000000000008000
+CT=eaac3bade1e4886d2376b945ae19ca2c
+
+I=242
+KEY=0000000000000000000000000000000000000000000000000000000000004000
+CT=86392882c55672c087a978a66a162d05
+
+I=243
+KEY=0000000000000000000000000000000000000000000000000000000000002000
+CT=1ba2f2b6ee41fa58119bc0c6dd7909d3
+
+I=244
+KEY=0000000000000000000000000000000000000000000000000000000000001000
+CT=68d5648946c464cbcfaf9b2abb0567c3
+
+I=245
+KEY=0000000000000000000000000000000000000000000000000000000000000800
+CT=a909bc4a2061b560596840e160549097
+
+I=246
+KEY=0000000000000000000000000000000000000000000000000000000000000400
+CT=231665465c569176adaa126a76b893b8
+
+I=247
+KEY=0000000000000000000000000000000000000000000000000000000000000200
+CT=a9814e3b420304fb5df34a79d4db7879
+
+I=248
+KEY=0000000000000000000000000000000000000000000000000000000000000100
+CT=6d9fb653caedbf0091aa5a143707994f
+
+I=249
+KEY=0000000000000000000000000000000000000000000000000000000000000080
+CT=c0165682bd8ee32b0e3c468812aa23a2
+
+I=250
+KEY=0000000000000000000000000000000000000000000000000000000000000040
+CT=5991506d96f9f27ddf74015705d4e1ea
+
+I=251
+KEY=0000000000000000000000000000000000000000000000000000000000000020
+CT=99443cb4450fa3c81d921e478476f365
+
+I=252
+KEY=0000000000000000000000000000000000000000000000000000000000000010
+CT=a9e429527f98ef1c9cb832bcd036e00e
+
+I=253
+KEY=0000000000000000000000000000000000000000000000000000000000000008
+CT=b7c9b6bd6b749af86c8ed5ee57659dec
+
+I=254
+KEY=0000000000000000000000000000000000000000000000000000000000000004
+CT=8dcb599c6eecc7e896d73c71bf1423ad
+
+I=255
+KEY=0000000000000000000000000000000000000000000000000000000000000002
+CT=f0fc3a5418ec55a5bbac2f2d4a94d833
+
+I=256
+KEY=0000000000000000000000000000000000000000000000000000000000000001
+CT=2fc5e1a6366cfad169343760445d88e0
+
+==========
+
+=========================
+
+FILENAME:  "ecb_vt.txt"
+
+Electronic Codebook (ECB) Mode
+Variable Text Known Answer Tests
+
+Algorithm Name: Serpent
+Principal Submitter: Ross Anderson, Eli Biham, Lars Knudsen
+
+==========
+
+KEYSIZE=128
+
+KEY=00000000000000000000000000000000
+
+I=1
+PT=80000000000000000000000000000000
+CT=10b5ffb720b8cb9002a1142b0ba2e94a
+
+I=2
+PT=40000000000000000000000000000000
+CT=91a7847ef1cd87551b5b4bf6f8e96e2c
+
+I=3
+PT=20000000000000000000000000000000
+CT=5d32aece8383fb2ee22cb4a6061d1429
+
+I=4
+PT=10000000000000000000000000000000
+CT=b4895cad26dfa1538e9ad80599e1e62a
+
+I=5
+PT=08000000000000000000000000000000
+CT=3b275d40f7daf4a3f59ddfab28ff8715
+
+I=6
+PT=04000000000000000000000000000000
+CT=c4831bc67e0efff9795c2fa87a2498b5
+
+I=7
+PT=02000000000000000000000000000000
+CT=0f250f3b1f294e54a3e34512b0ab5d0c
+
+I=8
+PT=01000000000000000000000000000000
+CT=bc0abf8c2037a9263586de6ba1ceed9b
+
+I=9
+PT=00800000000000000000000000000000
+CT=b2b7cbfe069faa342c3bc5476cb674a1
+
+I=10
+PT=00400000000000000000000000000000
+CT=f09813e536740a3ab9eb885f33273833
+
+I=11
+PT=00200000000000000000000000000000
+CT=d3793fb7125f8396ae504f0fd7d7a703
+
+I=12
+PT=00100000000000000000000000000000
+CT=bf6b70e9fda664962d95699702f2b9b8
+
+I=13
+PT=00080000000000000000000000000000
+CT=5464988b5914ca8803065aec48e2dca7
+
+I=14
+PT=00040000000000000000000000000000
+CT=75337da1c6b4e0569ac3c639d7ee211a
+
+I=15
+PT=00020000000000000000000000000000
+CT=f964f16dfda2840e9e0b0a76cfdb7390
+
+I=16
+PT=00010000000000000000000000000000
+CT=ce523088dc42883d13d88a56853be8ce
+
+I=17
+PT=00008000000000000000000000000000
+CT=ff9e25a0d3e29cd3fc75a115ba401915
+
+I=18
+PT=00004000000000000000000000000000
+CT=995893db8371206626e550c92a7f999f
+
+I=19
+PT=00002000000000000000000000000000
+CT=b0de770bfc90f6f87b36b9bff67d5b01
+
+I=20
+PT=00001000000000000000000000000000
+CT=9bb96bb4f47a66499f69258559367d4a
+
+I=21
+PT=00000800000000000000000000000000
+CT=2c352c4d86f01ce418fc3d60fd486230
+
+I=22
+PT=00000400000000000000000000000000
+CT=2f774b457113bdc1e901766290ec6713
+
+I=23
+PT=00000200000000000000000000000000
+CT=4f3f9119e21c7f8d1a4d44947659fe85
+
+I=24
+PT=00000100000000000000000000000000
+CT=c3f40fb50935137745a04e19e8f3ba75
+
+I=25
+PT=00000080000000000000000000000000
+CT=0dc94b1df01940c03d586cca5b32b83e
+
+I=26
+PT=00000040000000000000000000000000
+CT=3e90867ddb27912eed7e1ca5991e0a24
+
+I=27
+PT=00000020000000000000000000000000
+CT=338aef6a3fbeffdde3e240cc04afb281
+
+I=28
+PT=00000010000000000000000000000000
+CT=2b28f5882fb2765a4ea3d00978437069
+
+I=29
+PT=00000008000000000000000000000000
+CT=db1227fa1f4442f75c2953f2b3442ec1
+
+I=30
+PT=00000004000000000000000000000000
+CT=af629e3fdbf2ab0cf8e2a128f1fbe298
+
+I=31
+PT=00000002000000000000000000000000
+CT=7ae65213d3da0d0b4cd8d0b9741d2b3f
+
+I=32
+PT=00000001000000000000000000000000
+CT=fd2d297dc1ce0b0d2577d8847b901de5
+
+I=33
+PT=00000000800000000000000000000000
+CT=c48afc3a70454a8e26e529753c06e619
+
+I=34
+PT=00000000400000000000000000000000
+CT=c9da79c5d484a0aa048b09ac01bddc6d
+
+I=35
+PT=00000000200000000000000000000000
+CT=ec3d920e6aba87ea53a4d27cdb68c2af
+
+I=36
+PT=00000000100000000000000000000000
+CT=464e0f8ccc68243617ef7206e399b124
+
+I=37
+PT=00000000080000000000000000000000
+CT=ff3913dca41688c7daf01e161f570cb3
+
+I=38
+PT=00000000040000000000000000000000
+CT=87e81d705ee314cda5ed031315b94c21
+
+I=39
+PT=00000000020000000000000000000000
+CT=fa0e1474029a15eb2553c55d4291a957
+
+I=40
+PT=00000000010000000000000000000000
+CT=56a9f473ab27fed3ac6d430f63d36c85
+
+I=41
+PT=00000000008000000000000000000000
+CT=4f057a42d8d5bd9746e434680ddcd5e5
+
+I=42
+PT=00000000004000000000000000000000
+CT=c9763d65b200493f58414268f579b8ca
+
+I=43
+PT=00000000002000000000000000000000
+CT=4eb6f14893b7dad1e50c8ec0c863fe43
+
+I=44
+PT=00000000001000000000000000000000
+CT=67135ad9c42bf215248b3f2f0650781d
+
+I=45
+PT=00000000000800000000000000000000
+CT=f226474056e317aa761c55acc086d445
+
+I=46
+PT=00000000000400000000000000000000
+CT=196f606e80d9a98be468bb3de2ed0f90
+
+I=47
+PT=00000000000200000000000000000000
+CT=8be67189dd26c4a654560c0881c573f5
+
+I=48
+PT=00000000000100000000000000000000
+CT=372c5708d1c008d59dcf6e0b6c80af07
+
+I=49
+PT=00000000000080000000000000000000
+CT=a374338be436ba8146dbf1f72f67308c
+
+I=50
+PT=00000000000040000000000000000000
+CT=7e40613f5dd753f6fba6c89391fa560d
+
+I=51
+PT=00000000000020000000000000000000
+CT=1381ee5af9de1c7ec0f0b0a770c1c008
+
+I=52
+PT=00000000000010000000000000000000
+CT=16e065b53257ef73f9ec7fec947e5ff0
+
+I=53
+PT=00000000000008000000000000000000
+CT=4c336bb5c473c8410c4bd9b9977f66eb
+
+I=54
+PT=00000000000004000000000000000000
+CT=d4133fe07662e180c5de71630c5565a0
+
+I=55
+PT=00000000000002000000000000000000
+CT=57dcf6d111bc16bae83f360e0a7caccd
+
+I=56
+PT=00000000000001000000000000000000
+CT=3f5dd0577c58ea13bdca23bf722a79ff
+
+I=57
+PT=00000000000000800000000000000000
+CT=25a178f97eaabb668a5c3f1159fa6e98
+
+I=58
+PT=00000000000000400000000000000000
+CT=2cb9217031b33c7c1560ca38a215cbb8
+
+I=59
+PT=00000000000000200000000000000000
+CT=add8589c5abf2cd9a75b48c52a2162f2
+
+I=60
+PT=00000000000000100000000000000000
+CT=563e81d5609565a3735e6717d9c654df
+
+I=61
+PT=00000000000000080000000000000000
+CT=7aab1fd5b60febce36ebf19a750e5d92
+
+I=62
+PT=00000000000000040000000000000000
+CT=8c8d3cc26f5bfec469021970589ebc99
+
+I=63
+PT=00000000000000020000000000000000
+CT=5c9545fe2243eac114257260960b38c0
+
+I=64
+PT=00000000000000010000000000000000
+CT=00c4e9de9b257a232e2d3f955f1e5266
+
+I=65
+PT=00000000000000008000000000000000
+CT=516680a1011636774f610a04993eb41e
+
+I=66
+PT=00000000000000004000000000000000
+CT=8004e202dca22430a65f8a35f49514a1
+
+I=67
+PT=00000000000000002000000000000000
+CT=d9f8abf59993ea093731694ead5e4dcf
+
+I=68
+PT=00000000000000001000000000000000
+CT=aec7b64c80313afb6231e1205e3aac6c
+
+I=69
+PT=00000000000000000800000000000000
+CT=fa20fe21973588a3f5339fd43e05eebf
+
+I=70
+PT=00000000000000000400000000000000
+CT=f873e13044503509cbe0e2e555bfffb2
+
+I=71
+PT=00000000000000000200000000000000
+CT=2cd9d5ba4ce26764179a28823ee321e5
+
+I=72
+PT=00000000000000000100000000000000
+CT=3483c4eaf33b3d624a7595f801c70996
+
+I=73
+PT=00000000000000000080000000000000
+CT=b5c0a55c6629518345ac81ed351e0fc8
+
+I=74
+PT=00000000000000000040000000000000
+CT=65ab1efc487dbf7d8818bfe6771afe27
+
+I=75
+PT=00000000000000000020000000000000
+CT=852fac011e4750a120534ff3dd44248e
+
+I=76
+PT=00000000000000000010000000000000
+CT=7f95744df45ad4a1d76727a60cb0b39c
+
+I=77
+PT=00000000000000000008000000000000
+CT=bb2b16dfbd58f56422ea050ffb5272a0
+
+I=78
+PT=00000000000000000004000000000000
+CT=8128e598967018405d172207a147cd4c
+
+I=79
+PT=00000000000000000002000000000000
+CT=4ac0779bb0bd096f2e1d585604d8def9
+
+I=80
+PT=00000000000000000001000000000000
+CT=241ef440a5b7b063f6589a6845a5a8dc
+
+I=81
+PT=00000000000000000000800000000000
+CT=52331740090f95f35233affbf0ba0168
+
+I=82
+PT=00000000000000000000400000000000
+CT=99407bf8582ef12550886ef5b6f169b9
+
+I=83
+PT=00000000000000000000200000000000
+CT=b252710d7e8434acaff5d0b668159faa
+
+I=84
+PT=00000000000000000000100000000000
+CT=4b159460080683c5a048cb1fe5206ba9
+
+I=85
+PT=00000000000000000000080000000000
+CT=03d5b8aac57b684ac7b87665c589f3c9
+
+I=86
+PT=00000000000000000000040000000000
+CT=6b5c2794e5a22123907947768238b63f
+
+I=87
+PT=00000000000000000000020000000000
+CT=29c2384191dc2f4f3e0d0bef223c0c16
+
+I=88
+PT=00000000000000000000010000000000
+CT=4d3b1501af2ba27c0e75478ebec05a26
+
+I=89
+PT=00000000000000000000008000000000
+CT=123ad27ae091cd558ec7dda24c2f84c1
+
+I=90
+PT=00000000000000000000004000000000
+CT=c7719bdc9e24ea45cef48f2189587de4
+
+I=91
+PT=00000000000000000000002000000000
+CT=0a1f0f7ab0cf5494e92fb52a736675fb
+
+I=92
+PT=00000000000000000000001000000000
+CT=c1f61bab87b12440a093b2a82709bf5f
+
+I=93
+PT=00000000000000000000000800000000
+CT=21e7d8886955070ee178585114c5fbcf
+
+I=94
+PT=00000000000000000000000400000000
+CT=f3e336c258d1ab20ff792816baee3ecd
+
+I=95
+PT=00000000000000000000000200000000
+CT=b90b2f56cc32bd9e89ae1d1382106df9
+
+I=96
+PT=00000000000000000000000100000000
+CT=af4c1782161459998d1248476975b4bd
+
+I=97
+PT=00000000000000000000000080000000
+CT=5ea6c00e5b8742cdf221989be3c2e0a5
+
+I=98
+PT=00000000000000000000000040000000
+CT=33b94789b40a0ea6e9a4c2a7fd7f39a1
+
+I=99
+PT=00000000000000000000000020000000
+CT=83da4cff4fc689fb57f8a0131c000bf2
+
+I=100
+PT=00000000000000000000000010000000
+CT=2531ffa17bb629915b5ab1320ae28ef3
+
+I=101
+PT=00000000000000000000000008000000
+CT=40fe64a7ae3faf51c613e0967e36ed41
+
+I=102
+PT=00000000000000000000000004000000
+CT=9622e548cbad9d0ae5891d29bd0fc355
+
+I=103
+PT=00000000000000000000000002000000
+CT=d43597365f98cc5f39e4c004a4f1e73f
+
+I=104
+PT=00000000000000000000000001000000
+CT=09989867eb52aa560bf3a4b60215136e
+
+I=105
+PT=00000000000000000000000000800000
+CT=e5bc1ec33d62be8f56ff1d87916da33e
+
+I=106
+PT=00000000000000000000000000400000
+CT=9ec843057904a54565aba31801f16d7c
+
+I=107
+PT=00000000000000000000000000200000
+CT=85598be8348c344203069e393769ff1d
+
+I=108
+PT=00000000000000000000000000100000
+CT=079448f58270af4f7d2b4433f1e0dc87
+
+I=109
+PT=00000000000000000000000000080000
+CT=8b144a5358637642c5804ce38a86efcb
+
+I=110
+PT=00000000000000000000000000040000
+CT=6531358baf10022e507f0b0c0ebc23df
+
+I=111
+PT=00000000000000000000000000020000
+CT=72d9f80ad110ec6830e02d117a2d73e9
+
+I=112
+PT=00000000000000000000000000010000
+CT=7edec1dc5d17c597075b67e62b31171d
+
+I=113
+PT=00000000000000000000000000008000
+CT=25f263f9be5c840c099ec84973d1b00d
+
+I=114
+PT=00000000000000000000000000004000
+CT=c5515588ea7308550252efa5d18f12c7
+
+I=115
+PT=00000000000000000000000000002000
+CT=6ef9583950338814b65ac955987f1d76
+
+I=116
+PT=00000000000000000000000000001000
+CT=92d05167a4526ca60f03e1f05960401d
+
+I=117
+PT=00000000000000000000000000000800
+CT=948de151239262ec36b1f91d08cc2fde
+
+I=118
+PT=00000000000000000000000000000400
+CT=341e433e71e4b5dfdf27a511fbfb935f
+
+I=119
+PT=00000000000000000000000000000200
+CT=a1e3e540159746526bc538e7224f2c6c
+
+I=120
+PT=00000000000000000000000000000100
+CT=10b6072dc2413dbd4f22922a042ef8bf
+
+I=121
+PT=00000000000000000000000000000080
+CT=bbbcb8648c674426d8dd58c3e75db3a3
+
+I=122
+PT=00000000000000000000000000000040
+CT=d27d9d9410bba292ff27afe0e4cfab04
+
+I=123
+PT=00000000000000000000000000000020
+CT=0886d012ef370274b2f28eb79431778f
+
+I=124
+PT=00000000000000000000000000000010
+CT=9769ec70a6e41d5bd9c8d7e89ea61e8b
+
+I=125
+PT=00000000000000000000000000000008
+CT=bd2e3b263b9267170caca766cec6e3ce
+
+I=126
+PT=00000000000000000000000000000004
+CT=f3de05775f6d62877627adc3ff61de88
+
+I=127
+PT=00000000000000000000000000000002
+CT=ae358b079ed7a0065ad1dcfa7e94dd69
+
+I=128
+PT=00000000000000000000000000000001
+CT=3606b9158da0dc461156430e10faf132
+
+==========
+
+KEYSIZE=192
+
+KEY=000000000000000000000000000000000000000000000000
+
+I=1
+PT=80000000000000000000000000000000
+CT=b10b271ba25257e1294f2b51f076d0d9
+
+I=2
+PT=40000000000000000000000000000000
+CT=d522a3b8d6d89d4d2a124fdd88f36896
+
+I=3
+PT=20000000000000000000000000000000
+CT=6faefee5f5255d5465c1befa672af1d3
+
+I=4
+PT=10000000000000000000000000000000
+CT=409e1d63bc71eb0d6f7eceaa03025897
+
+I=5
+PT=08000000000000000000000000000000
+CT=8a7e9feb4300a2a265f4a14e52011be1
+
+I=6
+PT=04000000000000000000000000000000
+CT=c1b3fb68eef9e0eb6d3df001e57eac9b
+
+I=7
+PT=02000000000000000000000000000000
+CT=9dcaabb7839129739d1c6f5501624e44
+
+I=8
+PT=01000000000000000000000000000000
+CT=47402e1c09e0c315b13cab5a5aa17e49
+
+I=9
+PT=00800000000000000000000000000000
+CT=cde5ff61bb5659952a8c5cfedacf06a3
+
+I=10
+PT=00400000000000000000000000000000
+CT=b26502ac2100f53bed68f24545631548
+
+I=11
+PT=00200000000000000000000000000000
+CT=b607bf21517dbec46d95758fff5a073b
+
+I=12
+PT=00100000000000000000000000000000
+CT=d4d07ee9ba4512d2985453a0ae16aa8e
+
+I=13
+PT=00080000000000000000000000000000
+CT=139b2bf2f5f28c014a6c2f9aea71faaf
+
+I=14
+PT=00040000000000000000000000000000
+CT=4c35a2015688b03192dd599a3fddb893
+
+I=15
+PT=00020000000000000000000000000000
+CT=24def3618142e83ba5124d914edb23ee
+
+I=16
+PT=00010000000000000000000000000000
+CT=4ba48c16fa165c322614a94b0f236ee7
+
+I=17
+PT=00008000000000000000000000000000
+CT=251d642123ee51ac09e02026228c1414
+
+I=18
+PT=00004000000000000000000000000000
+CT=35604c5d7589b042c9a2e2550b439d31
+
+I=19
+PT=00002000000000000000000000000000
+CT=a921c70d25df86916bafcb0d99834d77
+
+I=20
+PT=00001000000000000000000000000000
+CT=ffc85ec27dbcedfd7f7265878967ca81
+
+I=21
+PT=00000800000000000000000000000000
+CT=2281b03c4aad92683b10418afd19fcbe
+
+I=22
+PT=00000400000000000000000000000000
+CT=5df5f94a1760883ca1e80ba88fe02dcc
+
+I=23
+PT=00000200000000000000000000000000
+CT=fb2a57edd5cf3d2d38ec0f185ae33549
+
+I=24
+PT=00000100000000000000000000000000
+CT=0fa7045d04878611ba1ee1b89ae48fd7
+
+I=25
+PT=00000080000000000000000000000000
+CT=d4bccb77a50cba2a5d3e19c39b10a95d
+
+I=26
+PT=00000040000000000000000000000000
+CT=0c673c63c42f40cc9c547e8ffec646bc
+
+I=27
+PT=00000020000000000000000000000000
+CT=914cf9c7744a56d5d5e4beabff1aa160
+
+I=28
+PT=00000010000000000000000000000000
+CT=073e2f69a01ef426c14ade8f0a30dd84
+
+I=29
+PT=00000008000000000000000000000000
+CT=5f0cf0ae5a8bc4d1fb37cf8f2f063437
+
+I=30
+PT=00000004000000000000000000000000
+CT=c3e16559538c35da71d6a9f5c79144ea
+
+I=31
+PT=00000002000000000000000000000000
+CT=3a154b0a7eab802c082a4a96cc9968d4
+
+I=32
+PT=00000001000000000000000000000000
+CT=205f88404d8c02bcc7c68a064c74a545
+
+I=33
+PT=00000000800000000000000000000000
+CT=27d5c66ef07bff1f9f2789205ef6f54f
+
+I=34
+PT=00000000400000000000000000000000
+CT=7adfdd145251206f5eef7206f718c8b0
+
+I=35
+PT=00000000200000000000000000000000
+CT=971a2283f2d786efceed19ca000f4d2a
+
+I=36
+PT=00000000100000000000000000000000
+CT=59ed88f7ee96e19469c0d5604da0e6f9
+
+I=37
+PT=00000000080000000000000000000000
+CT=d970cba6992074c2f5bea1952ee82b60
+
+I=38
+PT=00000000040000000000000000000000
+CT=6de2a3c48a416d9b679112fe54133fb5
+
+I=39
+PT=00000000020000000000000000000000
+CT=a85b4fcf07c08c7d99fab5ffc1f7680f
+
+I=40
+PT=00000000010000000000000000000000
+CT=c4d174f3a6489b334a612ddf4c01903b
+
+I=41
+PT=00000000008000000000000000000000
+CT=f428ce9715b50860eb9dac15b475803d
+
+I=42
+PT=00000000004000000000000000000000
+CT=15a4c8c2ec76338fd7f4ccbc22335a67
+
+I=43
+PT=00000000002000000000000000000000
+CT=78782ca4652234a2b363d8da766ccdb8
+
+I=44
+PT=00000000001000000000000000000000
+CT=b9ac015cc263572caee0e34683b3f6e0
+
+I=45
+PT=00000000000800000000000000000000
+CT=7990673b85f6a31660293f4b7295e296
+
+I=46
+PT=00000000000400000000000000000000
+CT=32210034b38a6810f1623bdc777a5e30
+
+I=47
+PT=00000000000200000000000000000000
+CT=189b8ec3470085b3da97e82ca8964e32
+
+I=48
+PT=00000000000100000000000000000000
+CT=1e5c3b6e60715a4ee2397d86128feb23
+
+I=49
+PT=00000000000080000000000000000000
+CT=209e0c925c6eba5ee377b3fd99dc74ec
+
+I=50
+PT=00000000000040000000000000000000
+CT=d6d11ea627c1fe32e1ff75f69f2ef912
+
+I=51
+PT=00000000000020000000000000000000
+CT=330fa8dafe4a31dd83168f9a81c6bff8
+
+I=52
+PT=00000000000010000000000000000000
+CT=733b41f6263c4669ae05eba359245528
+
+I=53
+PT=00000000000008000000000000000000
+CT=462d605055949e84e16ffcc1d8ce18e0
+
+I=54
+PT=00000000000004000000000000000000
+CT=eba12bd6b1bf6e263037e89a34b1468a
+
+I=55
+PT=00000000000002000000000000000000
+CT=cfb0119561a328e22fdaac332097a0ae
+
+I=56
+PT=00000000000001000000000000000000
+CT=65477c9404927a19a24dcb813012cd6b
+
+I=57
+PT=00000000000000800000000000000000
+CT=71c538be7c7c25ac9c9bf433c439a81c
+
+I=58
+PT=00000000000000400000000000000000
+CT=43ff9632b748a0e5bb93c80b7a72d1e6
+
+I=59
+PT=00000000000000200000000000000000
+CT=958934c3731793b6501508488515386b
+
+I=60
+PT=00000000000000100000000000000000
+CT=74e629f351506259f0e5ba5616195941
+
+I=61
+PT=00000000000000080000000000000000
+CT=c12671b5543b37ee8045e21738b48456
+
+I=62
+PT=00000000000000040000000000000000
+CT=efeb1397a75a6d11b76c5aa522c01dd3
+
+I=63
+PT=00000000000000020000000000000000
+CT=40fcf95ce176d4c0614d49836af9b7b9
+
+I=64
+PT=00000000000000010000000000000000
+CT=800532e2359c581ab7375a0023e5619f
+
+I=65
+PT=00000000000000008000000000000000
+CT=02f4ee73fff08f688c534b8db1cf192f
+
+I=66
+PT=00000000000000004000000000000000
+CT=703e4282110f7d27a6571abd98152d2b
+
+I=67
+PT=00000000000000002000000000000000
+CT=f93b8b96d84d6457c2def803789e58fb
+
+I=68
+PT=00000000000000001000000000000000
+CT=3291f29dc7a8fa6bfbab3080d46c8f4e
+
+I=69
+PT=00000000000000000800000000000000
+CT=48a880f8db4317311f7fc7c534734c59
+
+I=70
+PT=00000000000000000400000000000000
+CT=056ee1a0611b70d8b476a926a260908b
+
+I=71
+PT=00000000000000000200000000000000
+CT=0b22b4f0679776283a545ea4827f5d9d
+
+I=72
+PT=00000000000000000100000000000000
+CT=b4983ccdb7953ea334fdb51232dd607f
+
+I=73
+PT=00000000000000000080000000000000
+CT=84c360cdb59408fbff6c1d98b633a167
+
+I=74
+PT=00000000000000000040000000000000
+CT=99370507d1c662282477ee90fa4e72b9
+
+I=75
+PT=00000000000000000020000000000000
+CT=71f8ee3b5575730281c6826d80b4c46c
+
+I=76
+PT=00000000000000000010000000000000
+CT=33a80e4a9d495bfe8f76e07a1ea05ed0
+
+I=77
+PT=00000000000000000008000000000000
+CT=3db3dbf045c4023b584e8568d25952eb
+
+I=78
+PT=00000000000000000004000000000000
+CT=a7a9058c51ceb88f05e6cb97a4923727
+
+I=79
+PT=00000000000000000002000000000000
+CT=1e977f546daae78f553861f420e89e62
+
+I=80
+PT=00000000000000000001000000000000
+CT=9f47bea3e662ca502341f727ecf64ff0
+
+I=81
+PT=00000000000000000000800000000000
+CT=723c52ca0635fc08c4818a8d386bf2ca
+
+I=82
+PT=00000000000000000000400000000000
+CT=562ad986fc63064fed5b8e77a575a079
+
+I=83
+PT=00000000000000000000200000000000
+CT=3209896941454c0d59e17df9e99ee590
+
+I=84
+PT=00000000000000000000100000000000
+CT=afa1d3a3a7c49544ecd0f005fe4adf30
+
+I=85
+PT=00000000000000000000080000000000
+CT=d0c15dbaa5f877a191e7ed56d1546dbf
+
+I=86
+PT=00000000000000000000040000000000
+CT=467e0e629df57e2af5fd7a53b286222c
+
+I=87
+PT=00000000000000000000020000000000
+CT=8097e51df87b86a1756436f5ec835f54
+
+I=88
+PT=00000000000000000000010000000000
+CT=bc06ed199ac6a8be027a5b57e348765e
+
+I=89
+PT=00000000000000000000008000000000
+CT=f77d868cf760b9143a89809510ccb099
+
+I=90
+PT=00000000000000000000004000000000
+CT=6ac27194ccb8b8c5a9ef91c460babc4f
+
+I=91
+PT=00000000000000000000002000000000
+CT=90ecb7adf91e1664d96ddfa84f3e3b7a
+
+I=92
+PT=00000000000000000000001000000000
+CT=c9344eaead5b2d403df0b0e23edda5db
+
+I=93
+PT=00000000000000000000000800000000
+CT=7b1e6b2e84a5fa629825f60885f73423
+
+I=94
+PT=00000000000000000000000400000000
+CT=730f3bab94156e5835bd741bb8d85ef1
+
+I=95
+PT=00000000000000000000000200000000
+CT=6685abc072c2dc93354a623446ee54a6
+
+I=96
+PT=00000000000000000000000100000000
+CT=c350186035a00e5802ceda6ae90615e7
+
+I=97
+PT=00000000000000000000000080000000
+CT=38f0bee5d234428ab287939be63bd400
+
+I=98
+PT=00000000000000000000000040000000
+CT=59c13cf6b6608aa743a57e580a8d82bb
+
+I=99
+PT=00000000000000000000000020000000
+CT=60e6f6290fc3e9dc2c656bfacb387342
+
+I=100
+PT=00000000000000000000000010000000
+CT=dd49442c7ab7443bd7e41b4b848662d2
+
+I=101
+PT=00000000000000000000000008000000
+CT=3a18f3904cd710c501784b44b7bed928
+
+I=102
+PT=00000000000000000000000004000000
+CT=8afb4f1591681cfd0ff331f5e749899d
+
+I=103
+PT=00000000000000000000000002000000
+CT=24093cf425ca447b76edbfc957a529b3
+
+I=104
+PT=00000000000000000000000001000000
+CT=f5734b1089880f05e728cb07b4b50919
+
+I=105
+PT=00000000000000000000000000800000
+CT=e53a9ff4cdf0c76a9e5d3031e8b151da
+
+I=106
+PT=00000000000000000000000000400000
+CT=a59d4bfa111ac6f33624aac45518094a
+
+I=107
+PT=00000000000000000000000000200000
+CT=46949a5758b3b4184f684358915083db
+
+I=108
+PT=00000000000000000000000000100000
+CT=4b3dd9621bedd5f7f54f53606737a113
+
+I=109
+PT=00000000000000000000000000080000
+CT=958e939d24b0d7c9b1c237891d3b61c2
+
+I=110
+PT=00000000000000000000000000040000
+CT=6930b05005417f71db709b617888b43f
+
+I=111
+PT=00000000000000000000000000020000
+CT=ebc7f36e81c8abece7aacd8e5dbd8905
+
+I=112
+PT=00000000000000000000000000010000
+CT=a8cc6bba06b7aa9806819d7830c0c95a
+
+I=113
+PT=00000000000000000000000000008000
+CT=6921097106f0f151bf767e897e6bd64b
+
+I=114
+PT=00000000000000000000000000004000
+CT=bce445f2d14016520d49faa088c5724a
+
+I=115
+PT=00000000000000000000000000002000
+CT=1cebadbafac634b929a1d7c1cc5d2032
+
+I=116
+PT=00000000000000000000000000001000
+CT=58461087da47ecd75993f9f64c9af774
+
+I=117
+PT=00000000000000000000000000000800
+CT=8de6083068111cd9b07b17a58b421028
+
+I=118
+PT=00000000000000000000000000000400
+CT=8fd00a5dd8e6f93ebb73d3ae05c26338
+
+I=119
+PT=00000000000000000000000000000200
+CT=7b4dc0232880d9d7edfb4d89a07a20dd
+
+I=120
+PT=00000000000000000000000000000100
+CT=4fb7e947a58b192186cce9aaecc9eaa6
+
+I=121
+PT=00000000000000000000000000000080
+CT=bb8a615964c174450d7e68ad32f4f523
+
+I=122
+PT=00000000000000000000000000000040
+CT=e37cf906ae4c30a4a4e9f6364989cd56
+
+I=123
+PT=00000000000000000000000000000020
+CT=7b223c8e3fc51b77f4f91a464fd904b6
+
+I=124
+PT=00000000000000000000000000000010
+CT=02263d1d95636d0d63806875c42a85bb
+
+I=125
+PT=00000000000000000000000000000008
+CT=9c25b3aacdc23f99982c8dd96c209c31
+
+I=126
+PT=00000000000000000000000000000004
+CT=f7e9ad85347a957d3b1e4556595971d2
+
+I=127
+PT=00000000000000000000000000000002
+CT=bad13d578b19df90632a7f7c927d25d4
+
+I=128
+PT=00000000000000000000000000000001
+CT=79cd7df51ac0dc8296f1f3e8dbf61076
+
+==========
+
+KEYSIZE=256
+
+KEY=0000000000000000000000000000000000000000000000000000000000000000
+
+I=1
+PT=80000000000000000000000000000000
+CT=da5a7992b1b4ae6f8c004bc8a7de5520
+
+I=2
+PT=40000000000000000000000000000000
+CT=f351351b823e3d7a4f3bf390c4f198cb
+
+I=3
+PT=20000000000000000000000000000000
+CT=a477a65d9db75c8ed7218c52b64c65bb
+
+I=4
+PT=10000000000000000000000000000000
+CT=f8019452cba4fe618d80a6756183b2e0
+
+I=5
+PT=08000000000000000000000000000000
+CT=d43b7b981b829342fce0e3ec6f5f4c82
+
+I=6
+PT=04000000000000000000000000000000
+CT=39b3342cb13ce047eccd7ce9d586929d
+
+I=7
+PT=02000000000000000000000000000000
+CT=0a3e7e267fbef117ce63fcb3f0092cbc
+
+I=8
+PT=01000000000000000000000000000000
+CT=9faa1e723be36aa803321c2383de86ad
+
+I=9
+PT=00800000000000000000000000000000
+CT=371b4bb870cc4bdc24d579c8692a04ae
+
+I=10
+PT=00400000000000000000000000000000
+CT=5ade07be303d5100c8ed911938e3036d
+
+I=11
+PT=00200000000000000000000000000000
+CT=8e81be84aadb0439d7a8f1b0dc076857
+
+I=12
+PT=00100000000000000000000000000000
+CT=330317259c635ce4b7327815888add96
+
+I=13
+PT=00080000000000000000000000000000
+CT=397a4e6ce74377398f88290b587b1a9c
+
+I=14
+PT=00040000000000000000000000000000
+CT=956e7e1cc42dbfe13175da3603e17fb7
+
+I=15
+PT=00020000000000000000000000000000
+CT=9c2e171b8845e0a6eb89acdba6e35886
+
+I=16
+PT=00010000000000000000000000000000
+CT=0cab96ff0d7b82c6c340aa85fc26fed2
+
+I=17
+PT=00008000000000000000000000000000
+CT=fd2191fae67478be4439a4970d53c256
+
+I=18
+PT=00004000000000000000000000000000
+CT=541e4d4d249fcc51d859f34e39a9ecaa
+
+I=19
+PT=00002000000000000000000000000000
+CT=57e9c829d86daac43bfe15ea1d0dbc71
+
+I=20
+PT=00001000000000000000000000000000
+CT=91ce19b8fb8ac19ecb70a695a2cb7f26
+
+I=21
+PT=00000800000000000000000000000000
+CT=27875893acf49a8cff09e24822c98cd1
+
+I=22
+PT=00000400000000000000000000000000
+CT=296b158a415e2804725b956c464be963
+
+I=23
+PT=00000200000000000000000000000000
+CT=5f45ad8d0224b977a473a710268d8a36
+
+I=24
+PT=00000100000000000000000000000000
+CT=63cc2d891b1d4ada0542152c1fe510b2
+
+I=25
+PT=00000080000000000000000000000000
+CT=caeed51e22052785525fdcd743b8e1ff
+
+I=26
+PT=00000040000000000000000000000000
+CT=c48b18f20e09d858b290aa62ce9a8b0e
+
+I=27
+PT=00000020000000000000000000000000
+CT=191f62de542e9700ae76c4c1be1d9696
+
+I=28
+PT=00000010000000000000000000000000
+CT=6905dff0d55c2102aebd162556561aa3
+
+I=29
+PT=00000008000000000000000000000000
+CT=b9ae1edb4ba213705dd56a9e6b6b31a2
+
+I=30
+PT=00000004000000000000000000000000
+CT=af94edd9a5e3ca3efb7ee11353719f70
+
+I=31
+PT=00000002000000000000000000000000
+CT=029589f596760b95e68e88ab7c4ca0bc
+
+I=32
+PT=00000001000000000000000000000000
+CT=55e5a03c73b2e94d6657e02b54b05566
+
+I=33
+PT=00000000800000000000000000000000
+CT=44f2d86d30848bb4138de3543c620774
+
+I=34
+PT=00000000400000000000000000000000
+CT=e3e7edae5eb0acf9512961cf13dcd6b3
+
+I=35
+PT=00000000200000000000000000000000
+CT=1f8213f17c9e3a61e60ad3d3f0781330
+
+I=36
+PT=00000000100000000000000000000000
+CT=7143c3bc8bf0e1a7317dabfd3576229f
+
+I=37
+PT=00000000080000000000000000000000
+CT=82c106c8ebcb6dfd66c30160d42086f0
+
+I=38
+PT=00000000040000000000000000000000
+CT=a5334d1b8b108d78debf9c5fa4a251cf
+
+I=39
+PT=00000000020000000000000000000000
+CT=5976340411009f1d84c677fb46f9703e
+
+I=40
+PT=00000000010000000000000000000000
+CT=7cff775b3dc48e3bae0f36beb398eba3
+
+I=41
+PT=00000000008000000000000000000000
+CT=f9d4bc9804070eb5477543a2d8016e4f
+
+I=42
+PT=00000000004000000000000000000000
+CT=ead7b36b6aa3a60a15e1848004f4804f
+
+I=43
+PT=00000000002000000000000000000000
+CT=0ff332ec84a3ba27ecb1cb9c54711431
+
+I=44
+PT=00000000001000000000000000000000
+CT=efe740dd809552fcb90f5990ffa84d3c
+
+I=45
+PT=00000000000800000000000000000000
+CT=ece37dd24eff8ef3ee99a0603f8eae60
+
+I=46
+PT=00000000000400000000000000000000
+CT=ea2054379bd199574e9c25f16d4d3cb3
+
+I=47
+PT=00000000000200000000000000000000
+CT=a99297ae1d5d3e3b2a0fe3b18ea01b4d
+
+I=48
+PT=00000000000100000000000000000000
+CT=f398b0fb341f9e43d7cd93e4304df53c
+
+I=49
+PT=00000000000080000000000000000000
+CT=bd066966361e05202b77d6d6508295f8
+
+I=50
+PT=00000000000040000000000000000000
+CT=ffc413be45708d9557a3042cd785edb4
+
+I=51
+PT=00000000000020000000000000000000
+CT=f320da590b0303625360f61b83164a29
+
+I=52
+PT=00000000000010000000000000000000
+CT=e668509755f116bafeab2227a1c589d1
+
+I=53
+PT=00000000000008000000000000000000
+CT=7ca7223be7684fe67c20dffec148929a
+
+I=54
+PT=00000000000004000000000000000000
+CT=7665d7a085ff83dfd72e0df5728766cc
+
+I=55
+PT=00000000000002000000000000000000
+CT=2f3463dddb86183e5687d0485ea45c68
+
+I=56
+PT=00000000000001000000000000000000
+CT=bd1ed7c632dfc690492fb11bbabfe8fc
+
+I=57
+PT=00000000000000800000000000000000
+CT=e82b71f103ff08778e0523e562755d64
+
+I=58
+PT=00000000000000400000000000000000
+CT=98835b1fd0b3f96e80522dbc3baf9cfa
+
+I=59
+PT=00000000000000200000000000000000
+CT=d336c1454f4cd732551aae5a5038260d
+
+I=60
+PT=00000000000000100000000000000000
+CT=f82722e829dd87ef63f9b17694092197
+
+I=61
+PT=00000000000000080000000000000000
+CT=0f049dfb7a94e0da9e81d2d5cde27a23
+
+I=62
+PT=00000000000000040000000000000000
+CT=d886980ae0626848a9e857e03487a78f
+
+I=63
+PT=00000000000000020000000000000000
+CT=e57d3b0621f9e84b2661c69040653f98
+
+I=64
+PT=00000000000000010000000000000000
+CT=78309ad9a1909186a398288a930f5f64
+
+I=65
+PT=00000000000000008000000000000000
+CT=ef41bb099090ab0713596449f2a0db4d
+
+I=66
+PT=00000000000000004000000000000000
+CT=c9f8a33ea7ef4eef4c5335407533935d
+
+I=67
+PT=00000000000000002000000000000000
+CT=3c99c025b68bdad6b197d309b63412f5
+
+I=68
+PT=00000000000000001000000000000000
+CT=75b69d14bf789a98d084f1415e20f50a
+
+I=69
+PT=00000000000000000800000000000000
+CT=0d45a84c406f71fd7bf324d92639bc0e
+
+I=70
+PT=00000000000000000400000000000000
+CT=e95d91858c8fb496eb5a85c757daca53
+
+I=71
+PT=00000000000000000200000000000000
+CT=cd65cc5d31584be6131d6204762c8efd
+
+I=72
+PT=00000000000000000100000000000000
+CT=0bf30e1a0c33ccf6d5293177886912a7
+
+I=73
+PT=00000000000000000080000000000000
+CT=390b6714d761cdf423ce949f4091c772
+
+I=74
+PT=00000000000000000040000000000000
+CT=a28a634ef8546b8cf8ece231bcccd36a
+
+I=75
+PT=00000000000000000020000000000000
+CT=b35dd02e0a1eb09656e2000d2543e19f
+
+I=76
+PT=00000000000000000010000000000000
+CT=ace558d0c6a2935dd0b2c7e624f7bb3a
+
+I=77
+PT=00000000000000000008000000000000
+CT=ff5a2a042bf19f4ad8f63c32a50b3059
+
+I=78
+PT=00000000000000000004000000000000
+CT=d55b206c3a6fe40c67aa1bf63ef0e94a
+
+I=79
+PT=00000000000000000002000000000000
+CT=1e1ce1c9a1abc317b1b74ae5c46132e3
+
+I=80
+PT=00000000000000000001000000000000
+CT=104e466f5df0777af3422ac91a744eb8
+
+I=81
+PT=00000000000000000000800000000000
+CT=a531fb2f370adfba929a92cf732e6d0f
+
+I=82
+PT=00000000000000000000400000000000
+CT=7036b2a6193c3a3e225afe2c7c480220
+
+I=83
+PT=00000000000000000000200000000000
+CT=d3a9cb64c0959dfaf0c703d4142be2a9
+
+I=84
+PT=00000000000000000000100000000000
+CT=79e99042817c91a89286f662eea8d3cf
+
+I=85
+PT=00000000000000000000080000000000
+CT=cf835ec8134a59eff0b6a80c8c2ccaae
+
+I=86
+PT=00000000000000000000040000000000
+CT=f4836743d8c3780a2a541f28bb774de7
+
+I=87
+PT=00000000000000000000020000000000
+CT=55762a9a16d9f535a9608b6c985517b8
+
+I=88
+PT=00000000000000000000010000000000
+CT=95c38d14abc643ff795a4ff39f4c96de
+
+I=89
+PT=00000000000000000000008000000000
+CT=27b1a85d72f1382c5eb08a334ae57c0f
+
+I=90
+PT=00000000000000000000004000000000
+CT=de2a81d066bb55437dd6ee268d15d8ca
+
+I=91
+PT=00000000000000000000002000000000
+CT=c9ef33af6265fdd27f657a056a613253
+
+I=92
+PT=00000000000000000000001000000000
+CT=113b948b22741125c1d751c88ed48c30
+
+I=93
+PT=00000000000000000000000800000000
+CT=548eb65b756b1367b01d887c97d9a529
+
+I=94
+PT=00000000000000000000000400000000
+CT=0fc7320adb91cf075576761788b4f6c0
+
+I=95
+PT=00000000000000000000000200000000
+CT=1b39074f2ce07e9a3f53b59c2018e547
+
+I=96
+PT=00000000000000000000000100000000
+CT=b007732dfa0d7fa9eb5e310ed6e0d758
+
+I=97
+PT=00000000000000000000000080000000
+CT=ca895ebb630af36c8caf319349d62ec0
+
+I=98
+PT=00000000000000000000000040000000
+CT=c53fbb7f75242e66171ac34eb966f1b5
+
+I=99
+PT=00000000000000000000000020000000
+CT=7b315fde64ae9dd9d04a6da9bd0fd217
+
+I=100
+PT=00000000000000000000000010000000
+CT=4a6a1e22ff4c9e6af601b9bb60a00f32
+
+I=101
+PT=00000000000000000000000008000000
+CT=19fb40ef327adfc4c05531ee7a9b253a
+
+I=102
+PT=00000000000000000000000004000000
+CT=ad134b411f1502b4876c686e3bfd8e02
+
+I=103
+PT=00000000000000000000000002000000
+CT=8972e71a54488c8bd6dba11fc61cf6d4
+
+I=104
+PT=00000000000000000000000001000000
+CT=74636c3098f0bca38645248c6ce9ccdf
+
+I=105
+PT=00000000000000000000000000800000
+CT=9b2dfd727cabeb35c79fccd3ff2654bd
+
+I=106
+PT=00000000000000000000000000400000
+CT=4014558c1c55beb49772ae029b7c3cea
+
+I=107
+PT=00000000000000000000000000200000
+CT=b75b9703f69eab25261f43f80c66bb11
+
+I=108
+PT=00000000000000000000000000100000
+CT=d36460b67ee0edbc9c20a55b7caa66b6
+
+I=109
+PT=00000000000000000000000000080000
+CT=f9874e1b3cb3bb2df9e8dd27e943d8ca
+
+I=110
+PT=00000000000000000000000000040000
+CT=670ac2362e4b665fe9e2045880f729ed
+
+I=111
+PT=00000000000000000000000000020000
+CT=d6b8ff1fd5a10706a3e1bd6ebf610f98
+
+I=112
+PT=00000000000000000000000000010000
+CT=7326371926c64ac4b5079857e8197ae4
+
+I=113
+PT=00000000000000000000000000008000
+CT=9f14df1d5519767a1cabeba3221b452b
+
+I=114
+PT=00000000000000000000000000004000
+CT=2cbb4ce03b80693258e554daae3cbe3a
+
+I=115
+PT=00000000000000000000000000002000
+CT=95e80f51bcd35ab3acefbddf051458df
+
+I=116
+PT=00000000000000000000000000001000
+CT=9c32de82b267754484f839c4dac3b345
+
+I=117
+PT=00000000000000000000000000000800
+CT=c3500273ea5843ec43dd2c562bde9241
+
+I=118
+PT=00000000000000000000000000000400
+CT=2e7d7e515c630f97cf162e03d810e327
+
+I=119
+PT=00000000000000000000000000000200
+CT=a4ef9f4fc23600d4e18d96232aae3c57
+
+I=120
+PT=00000000000000000000000000000100
+CT=fd738baeb7c2771f8fde315eb506adb4
+
+I=121
+PT=00000000000000000000000000000080
+CT=6e567fcf2b853dd8ecc3d58a5e671483
+
+I=122
+PT=00000000000000000000000000000040
+CT=9408dcbf05dcfac87955841a7bf63b89
+
+I=123
+PT=00000000000000000000000000000020
+CT=c40d8a3673625d95a0e1b1de25832f30
+
+I=124
+PT=00000000000000000000000000000010
+CT=c96c4a191ea0fe53ebdcdd116a2f7b91
+
+I=125
+PT=00000000000000000000000000000008
+CT=4f0c1103298e21f339bb689253e62982
+
+I=126
+PT=00000000000000000000000000000004
+CT=1f28ee6256e80cf2f7f9fae235785a93
+
+I=127
+PT=00000000000000000000000000000002
+CT=da877932c672f48a5ec36203be385edf
+
+I=128
+PT=00000000000000000000000000000001
+CT=6a7f3b805d2ddcba49b89770ade5e507
+
+==========
+
diff --git a/tests/twofish.aes b/tests/twofish.aes
new file mode 100644 (file)
index 0000000..6cbc3e6
--- /dev/null
@@ -0,0 +1,761 @@
+
+=========================
+
+FILENAME:  "ecb_tbl.txt"
+
+Electronic Codebook (ECB) Mode
+Tables Known Answer Test
+Tests permutation tables and MDS matrix multiply tables.
+
+Algorithm Name:       TWOFISH
+Principal Submitter:  Bruce Schneier, Counterpane Systems
+
+==========
+
+KEYSIZE=128
+
+I=1
+KEY=00000000000000000000000000000000
+PT=00000000000000000000000000000000
+CT=9F589F5CF6122C32B6BFEC2F2AE8C35A
+
+I=2
+KEY=00000000000000000000000000000000
+PT=9F589F5CF6122C32B6BFEC2F2AE8C35A
+CT=D491DB16E7B1C39E86CB086B789F5419
+
+I=3
+KEY=9F589F5CF6122C32B6BFEC2F2AE8C35A
+PT=D491DB16E7B1C39E86CB086B789F5419
+CT=019F9809DE1711858FAAC3A3BA20FBC3
+
+I=4
+KEY=D491DB16E7B1C39E86CB086B789F5419
+PT=019F9809DE1711858FAAC3A3BA20FBC3
+CT=6363977DE839486297E661C6C9D668EB
+
+I=5
+KEY=019F9809DE1711858FAAC3A3BA20FBC3
+PT=6363977DE839486297E661C6C9D668EB
+CT=816D5BD0FAE35342BF2A7412C246F752
+
+I=6
+KEY=6363977DE839486297E661C6C9D668EB
+PT=816D5BD0FAE35342BF2A7412C246F752
+CT=5449ECA008FF5921155F598AF4CED4D0
+
+I=7
+KEY=816D5BD0FAE35342BF2A7412C246F752
+PT=5449ECA008FF5921155F598AF4CED4D0
+CT=6600522E97AEB3094ED5F92AFCBCDD10
+
+I=8
+KEY=5449ECA008FF5921155F598AF4CED4D0
+PT=6600522E97AEB3094ED5F92AFCBCDD10
+CT=34C8A5FB2D3D08A170D120AC6D26DBFA
+
+I=9
+KEY=6600522E97AEB3094ED5F92AFCBCDD10
+PT=34C8A5FB2D3D08A170D120AC6D26DBFA
+CT=28530B358C1B42EF277DE6D4407FC591
+
+I=10
+KEY=34C8A5FB2D3D08A170D120AC6D26DBFA
+PT=28530B358C1B42EF277DE6D4407FC591
+CT=8A8AB983310ED78C8C0ECDE030B8DCA4
+
+I=11
+KEY=28530B358C1B42EF277DE6D4407FC591
+PT=8A8AB983310ED78C8C0ECDE030B8DCA4
+CT=48C758A6DFC1DD8B259FA165E1CE2B3C
+
+I=12
+KEY=8A8AB983310ED78C8C0ECDE030B8DCA4
+PT=48C758A6DFC1DD8B259FA165E1CE2B3C
+CT=CE73C65C101680BBC251C5C16ABCF214
+
+I=13
+KEY=48C758A6DFC1DD8B259FA165E1CE2B3C
+PT=CE73C65C101680BBC251C5C16ABCF214
+CT=C7ABD74AA060F78B244E24C71342BA89
+
+I=14
+KEY=CE73C65C101680BBC251C5C16ABCF214
+PT=C7ABD74AA060F78B244E24C71342BA89
+CT=D0F8B3B6409EBCB666D29C916565ABFC
+
+I=15
+KEY=C7ABD74AA060F78B244E24C71342BA89
+PT=D0F8B3B6409EBCB666D29C916565ABFC
+CT=DD42662908070054544FE09DA4263130
+
+I=16
+KEY=D0F8B3B6409EBCB666D29C916565ABFC
+PT=DD42662908070054544FE09DA4263130
+CT=7007BACB42F7BF989CF30F78BC50EDCA
+
+I=17
+KEY=DD42662908070054544FE09DA4263130
+PT=7007BACB42F7BF989CF30F78BC50EDCA
+CT=57B9A18EE97D90F435A16F69F0AC6F16
+
+I=18
+KEY=7007BACB42F7BF989CF30F78BC50EDCA
+PT=57B9A18EE97D90F435A16F69F0AC6F16
+CT=06181F0D53267ABD8F3BB28455B198AD
+
+I=19
+KEY=57B9A18EE97D90F435A16F69F0AC6F16
+PT=06181F0D53267ABD8F3BB28455B198AD
+CT=81A12D8449E9040BAAE7196338D8C8F2
+
+I=20
+KEY=06181F0D53267ABD8F3BB28455B198AD
+PT=81A12D8449E9040BAAE7196338D8C8F2
+CT=BE422651C56F2622DA0201815A95A820
+
+I=21
+KEY=81A12D8449E9040BAAE7196338D8C8F2
+PT=BE422651C56F2622DA0201815A95A820
+CT=113B19F2D778473990480CEE4DA238D1
+
+I=22
+KEY=BE422651C56F2622DA0201815A95A820
+PT=113B19F2D778473990480CEE4DA238D1
+CT=E6942E9A86E544CF3E3364F20BE011DF
+
+I=23
+KEY=113B19F2D778473990480CEE4DA238D1
+PT=E6942E9A86E544CF3E3364F20BE011DF
+CT=87CDC6AA487BFD0EA70188257D9B3859
+
+I=24
+KEY=E6942E9A86E544CF3E3364F20BE011DF
+PT=87CDC6AA487BFD0EA70188257D9B3859
+CT=D5E2701253DD75A11A4CFB243714BD14
+
+I=25
+KEY=87CDC6AA487BFD0EA70188257D9B3859
+PT=D5E2701253DD75A11A4CFB243714BD14
+CT=FD24812EEA107A9E6FAB8EABE0F0F48C
+
+I=26
+KEY=D5E2701253DD75A11A4CFB243714BD14
+PT=FD24812EEA107A9E6FAB8EABE0F0F48C
+CT=DAFA84E31A297F372C3A807100CD783D
+
+I=27
+KEY=FD24812EEA107A9E6FAB8EABE0F0F48C
+PT=DAFA84E31A297F372C3A807100CD783D
+CT=A55ED2D955EC8950FC0CC93B76ACBF91
+
+I=28
+KEY=DAFA84E31A297F372C3A807100CD783D
+PT=A55ED2D955EC8950FC0CC93B76ACBF91
+CT=2ABEA2A4BF27ABDC6B6F278993264744
+
+I=29
+KEY=A55ED2D955EC8950FC0CC93B76ACBF91
+PT=2ABEA2A4BF27ABDC6B6F278993264744
+CT=045383E219321D5A4435C0E491E7DE10
+
+I=30
+KEY=2ABEA2A4BF27ABDC6B6F278993264744
+PT=045383E219321D5A4435C0E491E7DE10
+CT=7460A4CD4F312F32B1C7A94FA004E934
+
+I=31
+KEY=045383E219321D5A4435C0E491E7DE10
+PT=7460A4CD4F312F32B1C7A94FA004E934
+CT=6BBF9186D32C2C5895649D746566050A
+
+I=32
+KEY=7460A4CD4F312F32B1C7A94FA004E934
+PT=6BBF9186D32C2C5895649D746566050A
+CT=CDBDD19ACF40B8AC0328C80054266068
+
+I=33
+KEY=6BBF9186D32C2C5895649D746566050A
+PT=CDBDD19ACF40B8AC0328C80054266068
+CT=1D2836CAE4223EAB5066867A71B1A1C3
+
+I=34
+KEY=CDBDD19ACF40B8AC0328C80054266068
+PT=1D2836CAE4223EAB5066867A71B1A1C3
+CT=2D7F37121D0D2416D5E2767FF202061B
+
+I=35
+KEY=1D2836CAE4223EAB5066867A71B1A1C3
+PT=2D7F37121D0D2416D5E2767FF202061B
+CT=D70736D1ABC7427A121CC816CD66D7FF
+
+I=36
+KEY=2D7F37121D0D2416D5E2767FF202061B
+PT=D70736D1ABC7427A121CC816CD66D7FF
+CT=AC6CA71CBCBEDCC0EA849FB2E9377865
+
+I=37
+KEY=D70736D1ABC7427A121CC816CD66D7FF
+PT=AC6CA71CBCBEDCC0EA849FB2E9377865
+CT=307265FF145CBBC7104B3E51C6C1D6B4
+
+I=38
+KEY=AC6CA71CBCBEDCC0EA849FB2E9377865
+PT=307265FF145CBBC7104B3E51C6C1D6B4
+CT=934B7DB4B3544854DBCA81C4C5DE4EB1
+
+I=39
+KEY=307265FF145CBBC7104B3E51C6C1D6B4
+PT=934B7DB4B3544854DBCA81C4C5DE4EB1
+CT=18759824AD9823D5961F84377D7EAEBF
+
+I=40
+KEY=934B7DB4B3544854DBCA81C4C5DE4EB1
+PT=18759824AD9823D5961F84377D7EAEBF
+CT=DEDDAC6029B01574D9BABB099DC6CA6C
+
+I=41
+KEY=18759824AD9823D5961F84377D7EAEBF
+PT=DEDDAC6029B01574D9BABB099DC6CA6C
+CT=5EA82EEA2244DED42CCA2F835D5615DF
+
+I=42
+KEY=DEDDAC6029B01574D9BABB099DC6CA6C
+PT=5EA82EEA2244DED42CCA2F835D5615DF
+CT=1E3853F7FFA57091771DD8CDEE9414DE
+
+I=43
+KEY=5EA82EEA2244DED42CCA2F835D5615DF
+PT=1E3853F7FFA57091771DD8CDEE9414DE
+CT=5C2EBBF75D31F30B5EA26EAC8782D8D1
+
+I=44
+KEY=1E3853F7FFA57091771DD8CDEE9414DE
+PT=5C2EBBF75D31F30B5EA26EAC8782D8D1
+CT=3A3CFA1F13A136C94D76E5FA4A1109FF
+
+I=45
+KEY=5C2EBBF75D31F30B5EA26EAC8782D8D1
+PT=3A3CFA1F13A136C94D76E5FA4A1109FF
+CT=91630CF96003B8032E695797E313A553
+
+I=46
+KEY=3A3CFA1F13A136C94D76E5FA4A1109FF
+PT=91630CF96003B8032E695797E313A553
+CT=137A24CA47CD12BE818DF4D2F4355960
+
+I=47
+KEY=91630CF96003B8032E695797E313A553
+PT=137A24CA47CD12BE818DF4D2F4355960
+CT=BCA724A54533C6987E14AA827952F921
+
+I=48
+KEY=137A24CA47CD12BE818DF4D2F4355960
+PT=BCA724A54533C6987E14AA827952F921
+CT=6B459286F3FFD28D49F15B1581B08E42
+
+I=49
+KEY=BCA724A54533C6987E14AA827952F921
+PT=6B459286F3FFD28D49F15B1581B08E42
+CT=5D9D4EEFFA9151575524F115815A12E0
+
+==========
+
+KEYSIZE=192
+
+I=1
+KEY=000000000000000000000000000000000000000000000000
+PT=00000000000000000000000000000000
+CT=EFA71F788965BD4453F860178FC19101
+
+I=2
+KEY=000000000000000000000000000000000000000000000000
+PT=EFA71F788965BD4453F860178FC19101
+CT=88B2B2706B105E36B446BB6D731A1E88
+
+I=3
+KEY=EFA71F788965BD4453F860178FC191010000000000000000
+PT=88B2B2706B105E36B446BB6D731A1E88
+CT=39DA69D6BA4997D585B6DC073CA341B2
+
+I=4
+KEY=88B2B2706B105E36B446BB6D731A1E88EFA71F788965BD44
+PT=39DA69D6BA4997D585B6DC073CA341B2
+CT=182B02D81497EA45F9DAACDC29193A65
+
+I=5
+KEY=39DA69D6BA4997D585B6DC073CA341B288B2B2706B105E36
+PT=182B02D81497EA45F9DAACDC29193A65
+CT=7AFF7A70CA2FF28AC31DD8AE5DAAAB63
+
+I=6
+KEY=182B02D81497EA45F9DAACDC29193A6539DA69D6BA4997D5
+PT=7AFF7A70CA2FF28AC31DD8AE5DAAAB63
+CT=D1079B789F666649B6BD7D1629F1F77E
+
+I=7
+KEY=7AFF7A70CA2FF28AC31DD8AE5DAAAB63182B02D81497EA45
+PT=D1079B789F666649B6BD7D1629F1F77E
+CT=3AF6F7CE5BD35EF18BEC6FA787AB506B
+
+I=8
+KEY=D1079B789F666649B6BD7D1629F1F77E7AFF7A70CA2FF28A
+PT=3AF6F7CE5BD35EF18BEC6FA787AB506B
+CT=AE8109BFDA85C1F2C5038B34ED691BFF
+
+I=9
+KEY=3AF6F7CE5BD35EF18BEC6FA787AB506BD1079B789F666649
+PT=AE8109BFDA85C1F2C5038B34ED691BFF
+CT=893FD67B98C550073571BD631263FC78
+
+I=10
+KEY=AE8109BFDA85C1F2C5038B34ED691BFF3AF6F7CE5BD35EF1
+PT=893FD67B98C550073571BD631263FC78
+CT=16434FC9C8841A63D58700B5578E8F67
+
+I=11
+KEY=893FD67B98C550073571BD631263FC78AE8109BFDA85C1F2
+PT=16434FC9C8841A63D58700B5578E8F67
+CT=9594CF62D48ACD347A68A3161F0F3EE7
+
+I=12
+KEY=16434FC9C8841A63D58700B5578E8F67893FD67B98C55007
+PT=9594CF62D48ACD347A68A3161F0F3EE7
+CT=B23E8C2C731C514017D1F2B88D77D208
+
+I=13
+KEY=9594CF62D48ACD347A68A3161F0F3EE716434FC9C8841A63
+PT=B23E8C2C731C514017D1F2B88D77D208
+CT=93CC592BC96D95FA8AC32DA894F6AB89
+
+I=14
+KEY=B23E8C2C731C514017D1F2B88D77D2089594CF62D48ACD34
+PT=93CC592BC96D95FA8AC32DA894F6AB89
+CT=26516E6BD4AEF86AF4F4AD58FA41A14C
+
+I=15
+KEY=93CC592BC96D95FA8AC32DA894F6AB89B23E8C2C731C5140
+PT=26516E6BD4AEF86AF4F4AD58FA41A14C
+CT=00A8FFFAB8616BE710A6592438FC40BE
+
+I=16
+KEY=26516E6BD4AEF86AF4F4AD58FA41A14C93CC592BC96D95FA
+PT=00A8FFFAB8616BE710A6592438FC40BE
+CT=A19B811C77482D97C842EC62DB2EDCCE
+
+I=17
+KEY=00A8FFFAB8616BE710A6592438FC40BE26516E6BD4AEF86A
+PT=A19B811C77482D97C842EC62DB2EDCCE
+CT=D7FF438678D818CAA26A676342F98E8B
+
+I=18
+KEY=A19B811C77482D97C842EC62DB2EDCCE00A8FFFAB8616BE7
+PT=D7FF438678D818CAA26A676342F98E8B
+CT=84EAFFC0C091582ABB717086E0807A5F
+
+I=19
+KEY=D7FF438678D818CAA26A676342F98E8BA19B811C77482D97
+PT=84EAFFC0C091582ABB717086E0807A5F
+CT=5500AF1C79503FEF1BACF35A81DC2865
+
+I=20
+KEY=84EAFFC0C091582ABB717086E0807A5FD7FF438678D818CA
+PT=5500AF1C79503FEF1BACF35A81DC2865
+CT=7282B2F3E766C83664930A19D201D7E7
+
+I=21
+KEY=5500AF1C79503FEF1BACF35A81DC286584EAFFC0C091582A
+PT=7282B2F3E766C83664930A19D201D7E7
+CT=6796085C32FBDD2AB43E81EAC1262743
+
+I=22
+KEY=7282B2F3E766C83664930A19D201D7E75500AF1C79503FEF
+PT=6796085C32FBDD2AB43E81EAC1262743
+CT=5839F9E148B9FD2B5A52751D4F178FDC
+
+I=23
+KEY=6796085C32FBDD2AB43E81EAC12627437282B2F3E766C836
+PT=5839F9E148B9FD2B5A52751D4F178FDC
+CT=A88F34056742E55408A7A9E7B6D4C8C0
+
+I=24
+KEY=5839F9E148B9FD2B5A52751D4F178FDC6796085C32FBDD2A
+PT=A88F34056742E55408A7A9E7B6D4C8C0
+CT=9C8C304CB1F937C6E42528459FA8872F
+
+I=25
+KEY=A88F34056742E55408A7A9E7B6D4C8C05839F9E148B9FD2B
+PT=9C8C304CB1F937C6E42528459FA8872F
+CT=EA3668C0D96529A7F3BF0F7C2B5C5BE2
+
+I=26
+KEY=9C8C304CB1F937C6E42528459FA8872FA88F34056742E554
+PT=EA3668C0D96529A7F3BF0F7C2B5C5BE2
+CT=A8FB6EEFCAAF9C4041072D570984CED2
+
+I=27
+KEY=EA3668C0D96529A7F3BF0F7C2B5C5BE29C8C304CB1F937C6
+PT=A8FB6EEFCAAF9C4041072D570984CED2
+CT=ABF4662E5D50F71B15FE3B428AFE3500
+
+I=28
+KEY=A8FB6EEFCAAF9C4041072D570984CED2EA3668C0D96529A7
+PT=ABF4662E5D50F71B15FE3B428AFE3500
+CT=3B3AED23958DA6E2FA4493BCBE59A806
+
+I=29
+KEY=ABF4662E5D50F71B15FE3B428AFE3500A8FB6EEFCAAF9C40
+PT=3B3AED23958DA6E2FA4493BCBE59A806
+CT=CFBF446E33C3DCD4DD5161CA00D4BA8F
+
+I=30
+KEY=3B3AED23958DA6E2FA4493BCBE59A806ABF4662E5D50F71B
+PT=CFBF446E33C3DCD4DD5161CA00D4BA8F
+CT=072ADBFA7EB962BA199AFC720339FF29
+
+I=31
+KEY=CFBF446E33C3DCD4DD5161CA00D4BA8F3B3AED23958DA6E2
+PT=072ADBFA7EB962BA199AFC720339FF29
+CT=AAB346D9123A8140AC563EF17E7054C8
+
+I=32
+KEY=072ADBFA7EB962BA199AFC720339FF29CFBF446E33C3DCD4
+PT=AAB346D9123A8140AC563EF17E7054C8
+CT=3C7DDC5FE6E5888FE61DEDA0C69CD320
+
+I=33
+KEY=AAB346D9123A8140AC563EF17E7054C8072ADBFA7EB962BA
+PT=3C7DDC5FE6E5888FE61DEDA0C69CD320
+CT=34AA645C7E3532098ADA91BB128ED821
+
+I=34
+KEY=3C7DDC5FE6E5888FE61DEDA0C69CD320AAB346D9123A8140
+PT=34AA645C7E3532098ADA91BB128ED821
+CT=7A5D12E315038522DA01EC0834B1322C
+
+I=35
+KEY=34AA645C7E3532098ADA91BB128ED8213C7DDC5FE6E5888F
+PT=7A5D12E315038522DA01EC0834B1322C
+CT=86E235A1CB091FF7FE6FBBCA0D73BE58
+
+I=36
+KEY=7A5D12E315038522DA01EC0834B1322C34AA645C7E353209
+PT=86E235A1CB091FF7FE6FBBCA0D73BE58
+CT=F3CE81CACE5D6BA9C558111DCDB22F5D
+
+I=37
+KEY=86E235A1CB091FF7FE6FBBCA0D73BE587A5D12E315038522
+PT=F3CE81CACE5D6BA9C558111DCDB22F5D
+CT=FB30A5D67D5F5BE4048C77E2AD3BC9D1
+
+I=38
+KEY=F3CE81CACE5D6BA9C558111DCDB22F5D86E235A1CB091FF7
+PT=FB30A5D67D5F5BE4048C77E2AD3BC9D1
+CT=31E69DD3D2D90E81C9EBFAC257E9823D
+
+I=39
+KEY=FB30A5D67D5F5BE4048C77E2AD3BC9D1F3CE81CACE5D6BA9
+PT=31E69DD3D2D90E81C9EBFAC257E9823D
+CT=87579B3F19A9CDE12BB882FFEAF665AE
+
+I=40
+KEY=31E69DD3D2D90E81C9EBFAC257E9823DFB30A5D67D5F5BE4
+PT=87579B3F19A9CDE12BB882FFEAF665AE
+CT=24A8572AA844FEF25F7670FAE30F1CD2
+
+I=41
+KEY=87579B3F19A9CDE12BB882FFEAF665AE31E69DD3D2D90E81
+PT=24A8572AA844FEF25F7670FAE30F1CD2
+CT=0CFA32E5E33F3B2DAC9F34D25979319A
+
+I=42
+KEY=24A8572AA844FEF25F7670FAE30F1CD287579B3F19A9CDE1
+PT=0CFA32E5E33F3B2DAC9F34D25979319A
+CT=3C64D7FC881B9B82ABA21FF122B98F54
+
+I=43
+KEY=0CFA32E5E33F3B2DAC9F34D25979319A24A8572AA844FEF2
+PT=3C64D7FC881B9B82ABA21FF122B98F54
+CT=A794CAEE6756281B7A64894E4E4F70A8
+
+I=44
+KEY=3C64D7FC881B9B82ABA21FF122B98F540CFA32E5E33F3B2D
+PT=A794CAEE6756281B7A64894E4E4F70A8
+CT=89A9BF6B893BC5E6FEF4C77F3D0F29A6
+
+I=45
+KEY=A794CAEE6756281B7A64894E4E4F70A83C64D7FC881B9B82
+PT=89A9BF6B893BC5E6FEF4C77F3D0F29A6
+CT=5DBE44032769DF543EAD7AD13A5F3310
+
+I=46
+KEY=89A9BF6B893BC5E6FEF4C77F3D0F29A6A794CAEE6756281B
+PT=5DBE44032769DF543EAD7AD13A5F3310
+CT=DEA4F3DA75EC7A8EAC3861A9912402CD
+
+I=47
+KEY=5DBE44032769DF543EAD7AD13A5F331089A9BF6B893BC5E6
+PT=DEA4F3DA75EC7A8EAC3861A9912402CD
+CT=FB66522C332FCC4C042ABE32FA9E902F
+
+I=48
+KEY=DEA4F3DA75EC7A8EAC3861A9912402CD5DBE44032769DF54
+PT=FB66522C332FCC4C042ABE32FA9E902F
+CT=F0AB73301125FA21EF70BE5385FB76B6
+
+I=49
+KEY=FB66522C332FCC4C042ABE32FA9E902FDEA4F3DA75EC7A8E
+PT=F0AB73301125FA21EF70BE5385FB76B6
+CT=E75449212BEEF9F4A390BD860A640941
+
+==========
+
+KEYSIZE=256
+
+I=1
+KEY=0000000000000000000000000000000000000000000000000000000000000000
+PT=00000000000000000000000000000000
+CT=57FF739D4DC92C1BD7FC01700CC8216F
+
+I=2
+KEY=0000000000000000000000000000000000000000000000000000000000000000
+PT=57FF739D4DC92C1BD7FC01700CC8216F
+CT=D43BB7556EA32E46F2A282B7D45B4E0D
+
+I=3
+KEY=57FF739D4DC92C1BD7FC01700CC8216F00000000000000000000000000000000
+PT=D43BB7556EA32E46F2A282B7D45B4E0D
+CT=90AFE91BB288544F2C32DC239B2635E6
+
+I=4
+KEY=D43BB7556EA32E46F2A282B7D45B4E0D57FF739D4DC92C1BD7FC01700CC8216F
+PT=90AFE91BB288544F2C32DC239B2635E6
+CT=6CB4561C40BF0A9705931CB6D408E7FA
+
+I=5
+KEY=90AFE91BB288544F2C32DC239B2635E6D43BB7556EA32E46F2A282B7D45B4E0D
+PT=6CB4561C40BF0A9705931CB6D408E7FA
+CT=3059D6D61753B958D92F4781C8640E58
+
+I=6
+KEY=6CB4561C40BF0A9705931CB6D408E7FA90AFE91BB288544F2C32DC239B2635E6
+PT=3059D6D61753B958D92F4781C8640E58
+CT=E69465770505D7F80EF68CA38AB3A3D6
+
+I=7
+KEY=3059D6D61753B958D92F4781C8640E586CB4561C40BF0A9705931CB6D408E7FA
+PT=E69465770505D7F80EF68CA38AB3A3D6
+CT=5AB67A5F8539A4A5FD9F0373BA463466
+
+I=8
+KEY=E69465770505D7F80EF68CA38AB3A3D63059D6D61753B958D92F4781C8640E58
+PT=5AB67A5F8539A4A5FD9F0373BA463466
+CT=DC096BCD99FC72F79936D4C748E75AF7
+
+I=9
+KEY=5AB67A5F8539A4A5FD9F0373BA463466E69465770505D7F80EF68CA38AB3A3D6
+PT=DC096BCD99FC72F79936D4C748E75AF7
+CT=C5A3E7CEE0F1B7260528A68FB4EA05F2
+
+I=10
+KEY=DC096BCD99FC72F79936D4C748E75AF75AB67A5F8539A4A5FD9F0373BA463466
+PT=C5A3E7CEE0F1B7260528A68FB4EA05F2
+CT=43D5CEC327B24AB90AD34A79D0469151
+
+I=11
+KEY=C5A3E7CEE0F1B7260528A68FB4EA05F2DC096BCD99FC72F79936D4C748E75AF7
+PT=43D5CEC327B24AB90AD34A79D0469151
+CT=05BA7BE9BE5274FBEB4AC5FD5FAAFA10
+
+I=12
+KEY=43D5CEC327B24AB90AD34A79D0469151C5A3E7CEE0F1B7260528A68FB4EA05F2
+PT=05BA7BE9BE5274FBEB4AC5FD5FAAFA10
+CT=89D513B989E3CECE4D2E3E4C15D4E01C
+
+I=13
+KEY=05BA7BE9BE5274FBEB4AC5FD5FAAFA1043D5CEC327B24AB90AD34A79D0469151
+PT=89D513B989E3CECE4D2E3E4C15D4E01C
+CT=E56E462AE2E66F800CE2224C4CAFACBE
+
+I=14
+KEY=89D513B989E3CECE4D2E3E4C15D4E01C05BA7BE9BE5274FBEB4AC5FD5FAAFA10
+PT=E56E462AE2E66F800CE2224C4CAFACBE
+CT=F5DBEE5414D79CA46BE17346FDC72BF5
+
+I=15
+KEY=E56E462AE2E66F800CE2224C4CAFACBE89D513B989E3CECE4D2E3E4C15D4E01C
+PT=F5DBEE5414D79CA46BE17346FDC72BF5
+CT=C780FC28815E667B3D224ECF1F4A7D65
+
+I=16
+KEY=F5DBEE5414D79CA46BE17346FDC72BF5E56E462AE2E66F800CE2224C4CAFACBE
+PT=C780FC28815E667B3D224ECF1F4A7D65
+CT=2EF17A0D75440ECEC9AF18D29ABA3CDA
+
+I=17
+KEY=C780FC28815E667B3D224ECF1F4A7D65F5DBEE5414D79CA46BE17346FDC72BF5
+PT=2EF17A0D75440ECEC9AF18D29ABA3CDA
+CT=D653FDFF96BCF89A929F6377AB41967A
+
+I=18
+KEY=2EF17A0D75440ECEC9AF18D29ABA3CDAC780FC28815E667B3D224ECF1F4A7D65
+PT=D653FDFF96BCF89A929F6377AB41967A
+CT=36BBAD8838380C8793A7AEA0A11D04D2
+
+I=19
+KEY=D653FDFF96BCF89A929F6377AB41967A2EF17A0D75440ECEC9AF18D29ABA3CDA
+PT=36BBAD8838380C8793A7AEA0A11D04D2
+CT=034EFECFC0EFC00D82C3345A8708AE78
+
+I=20
+KEY=36BBAD8838380C8793A7AEA0A11D04D2D653FDFF96BCF89A929F6377AB41967A
+PT=034EFECFC0EFC00D82C3345A8708AE78
+CT=EA38887307337A2934A9EB802F6CFDDD
+
+I=21
+KEY=034EFECFC0EFC00D82C3345A8708AE7836BBAD8838380C8793A7AEA0A11D04D2
+PT=EA38887307337A2934A9EB802F6CFDDD
+CT=7C279D47775AB4C26442E8A117943DD8
+
+I=22
+KEY=EA38887307337A2934A9EB802F6CFDDD034EFECFC0EFC00D82C3345A8708AE78
+PT=7C279D47775AB4C26442E8A117943DD8
+CT=E3CF581056EBC1169CF451E930308726
+
+I=23
+KEY=7C279D47775AB4C26442E8A117943DD8EA38887307337A2934A9EB802F6CFDDD
+PT=E3CF581056EBC1169CF451E930308726
+CT=65527B29D489C8CDDC62E5E7FFC4E924
+
+I=24
+KEY=E3CF581056EBC1169CF451E9303087267C279D47775AB4C26442E8A117943DD8
+PT=65527B29D489C8CDDC62E5E7FFC4E924
+CT=3B491F930230A0170819CACB48F9030C
+
+I=25
+KEY=65527B29D489C8CDDC62E5E7FFC4E924E3CF581056EBC1169CF451E930308726
+PT=3B491F930230A0170819CACB48F9030C
+CT=A7C8193F35AF63B51D7F9DEDCEC85866
+
+I=26
+KEY=3B491F930230A0170819CACB48F9030C65527B29D489C8CDDC62E5E7FFC4E924
+PT=A7C8193F35AF63B51D7F9DEDCEC85866
+CT=009A48F9A1C27F9AA5F9BD909C848B60
+
+I=27
+KEY=A7C8193F35AF63B51D7F9DEDCEC858663B491F930230A0170819CACB48F9030C
+PT=009A48F9A1C27F9AA5F9BD909C848B60
+CT=3B507E987B3F827A093B26C85CDFF6C6
+
+I=28
+KEY=009A48F9A1C27F9AA5F9BD909C848B60A7C8193F35AF63B51D7F9DEDCEC85866
+PT=3B507E987B3F827A093B26C85CDFF6C6
+CT=EAFB3BA6C78E37214FE908669BC24F6F
+
+I=29
+KEY=3B507E987B3F827A093B26C85CDFF6C6009A48F9A1C27F9AA5F9BD909C848B60
+PT=EAFB3BA6C78E37214FE908669BC24F6F
+CT=2B09F10D7F2B62A4D0DAFFB9F882B980
+
+I=30
+KEY=EAFB3BA6C78E37214FE908669BC24F6F3B507E987B3F827A093B26C85CDFF6C6
+PT=2B09F10D7F2B62A4D0DAFFB9F882B980
+CT=E6B9FE907009B2DC649412DD630AE576
+
+I=31
+KEY=2B09F10D7F2B62A4D0DAFFB9F882B980EAFB3BA6C78E37214FE908669BC24F6F
+PT=E6B9FE907009B2DC649412DD630AE576
+CT=F2E4DC89724CD58F85847BD09ED4500F
+
+I=32
+KEY=E6B9FE907009B2DC649412DD630AE5762B09F10D7F2B62A4D0DAFFB9F882B980
+PT=F2E4DC89724CD58F85847BD09ED4500F
+CT=DC650444FCEBC2BD6E450EF4605FCABE
+
+I=33
+KEY=F2E4DC89724CD58F85847BD09ED4500FE6B9FE907009B2DC649412DD630AE576
+PT=DC650444FCEBC2BD6E450EF4605FCABE
+CT=B7CFB31755FDA2AB0A67FBA09901A73E
+
+I=34
+KEY=DC650444FCEBC2BD6E450EF4605FCABEF2E4DC89724CD58F85847BD09ED4500F
+PT=B7CFB31755FDA2AB0A67FBA09901A73E
+CT=9C7E7578F3D2923DCDABFED0A5EF86EE
+
+I=35
+KEY=B7CFB31755FDA2AB0A67FBA09901A73EDC650444FCEBC2BD6E450EF4605FCABE
+PT=9C7E7578F3D2923DCDABFED0A5EF86EE
+CT=9465E9AE176483BD398C8033AA136F68
+
+I=36
+KEY=9C7E7578F3D2923DCDABFED0A5EF86EEB7CFB31755FDA2AB0A67FBA09901A73E
+PT=9465E9AE176483BD398C8033AA136F68
+CT=8551279DE9991805FCFC1937C52AE9D4
+
+I=37
+KEY=9465E9AE176483BD398C8033AA136F689C7E7578F3D2923DCDABFED0A5EF86EE
+PT=8551279DE9991805FCFC1937C52AE9D4
+CT=A830EB8DA52ECFF7F93B7627322CF9D7
+
+I=38
+KEY=8551279DE9991805FCFC1937C52AE9D49465E9AE176483BD398C8033AA136F68
+PT=A830EB8DA52ECFF7F93B7627322CF9D7
+CT=EC89F0E5155425D4B92BD4B200C1A6E0
+
+I=39
+KEY=A830EB8DA52ECFF7F93B7627322CF9D78551279DE9991805FCFC1937C52AE9D4
+PT=EC89F0E5155425D4B92BD4B200C1A6E0
+CT=8AF76A782061D38360C6C3CDDCBE1516
+
+I=40
+KEY=EC89F0E5155425D4B92BD4B200C1A6E0A830EB8DA52ECFF7F93B7627322CF9D7
+PT=8AF76A782061D38360C6C3CDDCBE1516
+CT=D4EEAA6A069659D5D88590DE75515631
+
+I=41
+KEY=8AF76A782061D38360C6C3CDDCBE1516EC89F0E5155425D4B92BD4B200C1A6E0
+PT=D4EEAA6A069659D5D88590DE75515631
+CT=259C021D37B077197B80FCDB07EA1AF2
+
+I=42
+KEY=D4EEAA6A069659D5D88590DE755156318AF76A782061D38360C6C3CDDCBE1516
+PT=259C021D37B077197B80FCDB07EA1AF2
+CT=300CC8B4171F0E9BD75710FAD033C570
+
+I=43
+KEY=259C021D37B077197B80FCDB07EA1AF2D4EEAA6A069659D5D88590DE75515631
+PT=300CC8B4171F0E9BD75710FAD033C570
+CT=5CFA5BD213A74F02E65390A4C14A1DF6
+
+I=44
+KEY=300CC8B4171F0E9BD75710FAD033C570259C021D37B077197B80FCDB07EA1AF2
+PT=5CFA5BD213A74F02E65390A4C14A1DF6
+CT=A443EA1B2C5747CE7EC5F21D4FE0C147
+
+I=45
+KEY=5CFA5BD213A74F02E65390A4C14A1DF6300CC8B4171F0E9BD75710FAD033C570
+PT=A443EA1B2C5747CE7EC5F21D4FE0C147
+CT=D2DED73E59319A8138E0331F0EA149EA
+
+I=46
+KEY=A443EA1B2C5747CE7EC5F21D4FE0C1475CFA5BD213A74F02E65390A4C14A1DF6
+PT=D2DED73E59319A8138E0331F0EA149EA
+CT=2E2158BC3E5FC714C1EEECA0EA696D48
+
+I=47
+KEY=D2DED73E59319A8138E0331F0EA149EAA443EA1B2C5747CE7EC5F21D4FE0C147
+PT=2E2158BC3E5FC714C1EEECA0EA696D48
+CT=248A7F3528B168ACFDD1386E3F51E30C
+
+I=48
+KEY=2E2158BC3E5FC714C1EEECA0EA696D48D2DED73E59319A8138E0331F0EA149EA
+PT=248A7F3528B168ACFDD1386E3F51E30C
+CT=431058F4DBC7F734DA4F02F04CC4F459
+
+I=49
+KEY=248A7F3528B168ACFDD1386E3F51E30C2E2158BC3E5FC714C1EEECA0EA696D48
+PT=431058F4DBC7F734DA4F02F04CC4F459
+CT=37FE26FF1CF66175F5DDF4C33B97A205
+
+==========
+
diff --git a/twofish-mktab.c b/twofish-mktab.c
new file mode 100644 (file)
index 0000000..5a649f3
--- /dev/null
@@ -0,0 +1,421 @@
+/* -*-c-*-
+ *
+ * $Id: twofish-mktab.c,v 1.1 2000/06/17 12:10:17 mdw Exp $
+ *
+ * Build constant tables for Twofish
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: twofish-mktab.c,v $
+ * Revision 1.1  2000/06/17 12:10:17  mdw
+ * New cipher.
+ *
+ */
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <mLib/bits.h>
+
+/*----- Data structures ---------------------------------------------------*/
+
+typedef struct { octet t[4][16]; } t_tab;
+typedef struct { octet q[256]; } q_tab;
+
+/*----- Various Twofish tables --------------------------------------------*/
+
+/* --- The t-tables --- */
+
+static const t_tab qt0 = {{
+  { 0x8, 0x1, 0x7, 0xd, 0x6, 0xf, 0x3, 0x2,
+    0x0, 0xb, 0x5, 0x9, 0xe, 0xc, 0xa, 0x4 },
+  { 0xe, 0xc, 0xb, 0x8, 0x1, 0x2, 0x3, 0x5,
+    0xf, 0x4, 0xa, 0x6, 0x7, 0x0, 0x9, 0xd },
+  { 0xb, 0xa, 0x5, 0xe, 0x6, 0xd, 0x9, 0x0,
+    0xc, 0x8, 0xf, 0x3, 0x2, 0x4, 0x7, 0x1 },
+  { 0xd, 0x7, 0xf, 0x4, 0x1, 0x2, 0x6, 0xe,
+    0x9, 0xb, 0x3, 0x0, 0x8, 0x5, 0xc, 0xa }
+}};
+
+static const t_tab qt1 = {{
+  { 0x2, 0x8, 0xb, 0xd, 0xf, 0x7, 0x6, 0xe,
+    0x3, 0x1, 0x9, 0x4, 0x0, 0xa, 0xc, 0x5 },
+  { 0x1, 0xe, 0x2, 0xb, 0x4, 0xc, 0x3, 0x7,
+    0x6, 0xd, 0xa, 0x5, 0xf, 0x9, 0x0, 0x8 },
+  { 0x4, 0xc, 0x7, 0x5, 0x1, 0x6, 0x9, 0xa,
+    0x0, 0xe, 0xd, 0x8, 0x2, 0xb, 0x3, 0xf },
+  { 0xb, 0x9, 0x5, 0x1, 0xc, 0x3, 0xd, 0xe,
+    0x6, 0x4, 0x7, 0xf, 0x2, 0x0, 0x8, 0xa }
+}};
+
+static q_tab q0, q1;
+
+/* --- The MDS and Reed-Solomon matrices --- */
+
+static const octet mds[16] = {
+  0x01, 0xef, 0x5b, 0x5b,
+  0x5b, 0xef, 0xef, 0x01,
+  0xef, 0x5b, 0x01, 0xef,
+  0xef, 0x01, 0xef, 0x5b
+};
+
+static const octet rs[32] = {
+  0x01, 0xa4, 0x55, 0x87, 0x5a, 0x58, 0xdb, 0x9e,
+  0xa4, 0x56, 0x82, 0xf3, 0x1e, 0xc6, 0x68, 0xe5,
+  0x02, 0xa1, 0xfc, 0xc1, 0x47, 0xae, 0x3d, 0x19,
+  0xa4, 0x55, 0x87, 0x5a, 0x58, 0xdb, 0x9e, 0x03
+};
+
+/*----- Magic macros ------------------------------------------------------*/
+
+#define ROR4(x) ((((x) >> 1) | ((x) << 3)) & 15)
+
+/*----- Building and printing @q@ tables ----------------------------------*/
+
+/* --- @mkq@ --- *
+ *
+ * Arguments:  @q_tab *q@ = pointer to output @q@ table
+ *             @const t_tab *t@ = pointer to input @t@ table
+ *             @const char *name@ = name of @q@ table
+ *
+ * Returns:    ---
+ *
+ * Use:                Constructs a 256-entry @q@-table.
+ */
+
+static void mkq(q_tab *q, const t_tab *t, const char *name)
+{
+  int i;
+  int ok = 1;
+
+  /* --- Ensure the t-table is well-formed --- */
+
+  for (i = 0; i < 4; i++) {
+    octet f[16] = { 0 };
+    int j;
+
+    for (j = 0; j < 16; j++) {
+      if (f[t->t[i][j]]) {
+       fprintf(stderr, "duplicate %i in %s[%i] (col %i and %i)\n",
+               t->t[i][j], name, i, j, f[t->t[i][j]]);
+       ok = 0;
+      }
+      f[t->t[i][j]] = j;
+    }
+  }
+
+  if (!ok)
+    exit(EXIT_FAILURE);
+
+  /* --- Construct the @q@ table --- */
+
+  for (i = 0; i < 256; i++) {
+    int a = i >> 4, b = i & 15;
+    int aa = t->t[0][a ^ b], bb = t->t[1][a ^ ((a << 3) & 15) ^ ROR4(b)];
+    a = t->t[2][aa ^ bb], b = t->t[3][aa ^ ((aa << 3) & 15) ^ ROR4(bb)];
+    q->q[i] = a | (b << 4);
+  }
+
+  /* Consider testing @q@ for linear and differential properties here */
+}
+
+/* --- @printq@ --- *
+ *
+ * Arguments:  @const q_tab *t@ = pointer to table
+ *             @const char *name@ = pointer to table name
+ *
+ * Returns:    ---
+ *
+ * Use:                Prints a q table.
+ */
+
+static void printq(const q_tab *q, const char *name)
+{
+  int i;
+  int j;
+
+  printf("\
+#define TWOFISH_%s {                                                   \\\n\
+  ", name);
+  j = 0;
+  for (i = 0; i < 256; i++) {
+    printf("0x%02x", q->q[i]);
+    j = (j + 1) & 7;
+    if (i == 255)
+      fputs("                  \\\n}\n\n", stdout);
+    else if (j == 0)
+      fputs(",                 \\\n  ", stdout);
+    else
+      fputs(", ", stdout);
+  }
+}
+
+/*----- GF(2^8) arithmetic ------------------------------------------------*/
+
+#define MDS_MOD 0x169
+#define RS_MOD 0x14d
+
+/* --- @mul@ --- *
+ *
+ * Arguments:  @unsigned x, y@ = polynomials over %$\mathrm{GF}(2^8)$%
+ *             @unsigned m@ = modulus
+ *
+ * Returns:    The product of two polynomials.
+ *
+ * Use:                Computes a product of polynomials, quite slowly.
+ */
+
+static unsigned mul(unsigned x, unsigned y, unsigned m)
+{
+  unsigned a = 0;
+  unsigned i;
+
+  for (i = 0; i < 8; i++) {
+    if (y & 1)
+      a ^= x;
+    y >>= 1;
+    x <<= 1;
+    if (x & 0x100)
+      x ^= m;
+  }
+
+  return (a);
+}
+
+/* --- @mmul@ --- *
+ *
+ * Arguments:  @octet *d@ = destination vector
+ *             @const octet *p@ = matrix of bytes
+ *             @const octet *q@ = vector from somewhere else
+ *             @size_t r@ = size of destination or number of rows in matrix
+ *             @size_t n@ = length of row and vector
+ *             @unsigned m@ = modulus polynomial
+ *
+ * Returns:    ---
+ *
+ * Use:                Computes an inner product of matrices over the finite field
+ *             %$\mathrm{GF}(2^8)[x]/m(x)$%.  This isn't particularly rapid.
+ */
+
+static void mmul(octet *d, const octet *p, const octet *q,
+                size_t r, size_t n, unsigned m)
+{
+  while (r) {
+    const octet *qq = q;
+    unsigned a = 0;
+    unsigned i;
+
+    for (i = 0; i < n; i++)
+      a ^= mul(*p++, *qq++, m);
+    *d++ = a;
+    r--;
+  }
+}
+
+/* --- @qrds@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Prints the MDS/q table.
+ */
+
+static void qmds(void)
+{
+  uint32 t[4][256];
+  int i, j;
+  static const q_tab *q[4] = { &q1, &q0, &q1, &q0 };
+
+  for (i = 0; i < 4; i++) {
+    octet in[4] = { 0, 0, 0, 0 };
+    octet out[4];
+
+    for (j = 0; j < 256; j++) {
+      in[i] = q[i]->q[j];
+      mmul(out, mds, in, 4, 4, MDS_MOD);
+      t[i][j] = LOAD32_L(out);
+    }
+  }
+
+  puts("\
+/* --- Expanded MDS tables --- *\n\
+ *\n\
+ * The table contains output vectors for computing the result of pushing\n\
+ * bytes through appropriate @q@ tables and the MDS matrix.\n\
+ */\n\
+\n\
+#define TWOFISH_QMDS {                                                 \\");
+  for (i = 0; i < 4; i++) {
+    fputs("  { ", stdout);
+    for (j = 0; j < 256; j++) {
+      printf("0x%08lx", (unsigned long)t[i][j]);
+      if (j == 255) {
+       if (i == 3)
+         puts(" }                      \\\n}");
+       else
+         puts(" },                     \\\n\
+                                                                       \\");
+      } else if (j % 4 == 3)
+       fputs(",                        \\\n    ", stdout);
+      else
+       fputs(", ", stdout);
+    }
+  }
+
+  putchar('\n');
+}
+
+/* --- @rslog@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Produces the log and antilog tables for doing the RS
+ *             arithmetic efficiently.
+ */
+
+static void rslog(void)
+{
+  octet rslog[256];
+  octet rsexp[256];
+
+  unsigned x = 1;
+  unsigned i;
+
+  rslog[0] = 0;
+  for (i = 0; i < 256; i++) {
+    rslog[x] = i;
+    rsexp[i] = x;
+    x <<= 1;
+    if (x & 0x100)
+      x ^= RS_MOD;
+  }
+
+  x = 0;
+  for (i = 0; i < 32; i++) {
+    if (rslog[rs[i]] > x)
+      x = rslog[rs[i]];
+  }
+
+  fputs("\
+/* --- Reed-Solomon log tables --- *\n\
+ *\n\
+ * The Reed-Solomon multiplies are accelerated by using log tables.\n\
+ */\n\
+\n\
+#define TWOFISH_RSLOG {                                                        \\\n\
+  ", stdout);
+
+  for (i = 0; i < 256; i++) {
+    printf("0x%02x", rslog[i]);
+    if (i == 255)
+      puts("                   \\\n}\n");
+    else if (i % 8 == 7)
+      fputs(",                 \\\n  ", stdout);
+    else
+      fputs(", ", stdout);
+  }
+
+  fputs("\
+#define TWOFISH_RSEXP {                                                        \\\n\
+  ", stdout);
+
+  for (i = 0; i < 255 + x + 1; i++) {
+    printf("0x%02x", rsexp[i % 255]);
+    if (i == 255 + x)
+      puts("                           \\\n}\n");
+    else if (i % 8 == 7)
+      fputs(",                 \\\n  ", stdout);
+    else
+      fputs(", ", stdout);
+  }
+
+  fputs("\
+/* --- Reed-Solomon matrix with log entries --- */\n\
+\n\
+#define TWOFISH_RS {                                                   \\\n\
+  ", stdout);
+
+  for (i = 0; i < 32; i++) {
+    printf("0x%02x", rslog[rs[i]]);
+    if (i == 31)
+      puts("                   \\\n}\n");
+    else if (i % 8 == 7)
+      fputs(",                 \\\n  ", stdout);
+    else
+      fputs(", ", stdout);
+  }
+}
+
+/*----- Main program ------------------------------------------------------*/
+
+/* --- @main@ --- */
+
+int main(void)
+{
+  fputs("\
+/* -*-c-*-
+ *
+ * Twofish q tables [generated]\n\
+ */
+
+#ifndef CATACOMB_TWOFISH_TAB_H
+#define CATACOMB_TWOFISH_TAB_H
+
+", stdout);
+
+  /* --- The q tables --- */
+
+  puts("\
+/* --- Precomputed @q@ tables --- */\n\
+");
+  mkq(&q0, &qt0, "qt0");
+  mkq(&q1, &qt1, "qt1");
+  printq(&q0, "Q0");
+  printq(&q1, "Q1");
+
+  /* --- The MDS/q tables --- */
+
+  qmds();
+  rslog();
+
+  /* --- Done --- */
+
+  puts("#endif");
+
+  if (fclose(stdout)) {
+    fprintf(stderr, "error writing data\n");
+    exit(EXIT_FAILURE);
+  }
+
+  return (0);
+}
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/twofish.c b/twofish.c
new file mode 100644 (file)
index 0000000..437a191
--- /dev/null
+++ b/twofish.c
@@ -0,0 +1,369 @@
+/* -*-c-*-
+ *
+ * $Id: twofish.c,v 1.1 2000/06/17 12:10:17 mdw Exp $
+ *
+ * Implementation of the Twofish cipher
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: twofish.c,v $
+ * Revision 1.1  2000/06/17 12:10:17  mdw
+ * New cipher.
+ *
+ */
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <assert.h>
+
+#include <mLib/bits.h>
+
+#include "blkc.h"
+#include "gcipher.h"
+#include "twofish.h"
+#include "twofish-tab.h"
+#include "paranoia.h"
+
+/*----- Global variables --------------------------------------------------*/
+
+const octet twofish_keysz[] = { KSZ_RANGE, TWOFISH_KEYSZ, 4, 32, 4 };
+
+/*----- Important tables --------------------------------------------------*/
+
+static const octet q0[256] = TWOFISH_Q0, q1[256] = TWOFISH_Q1;
+static const uint32 qmds[4][256] = TWOFISH_QMDS;
+static const octet rslog[] = TWOFISH_RSLOG, rsexp[] = TWOFISH_RSEXP;
+static const octet rs[32] = TWOFISH_RS;
+
+/*----- Key initialization ------------------------------------------------*/
+
+/* --- @h@ --- *
+ *
+ * Arguments:  @uint32 x@ = input to the function
+ *             @const uint32 *l@ = key values to mix in
+ *             @unsigned k@ = number of key values there are
+ *
+ * Returns:    The output of the function @h@.
+ *
+ * Use:                Implements the Twofish function @h@.
+ */
+
+static uint32 h(uint32 x, const uint32 *l, unsigned k)
+{
+  /* --- Apply a series of @q@ tables to an integer --- */
+
+# define Q(x, qa, qb, qc, qd)                                          \
+  ((qa[((x) >>  0) & 0xff] <<  0) |                                    \
+   (qb[((x) >>  8) & 0xff] <<  8) |                                    \
+   (qc[((x) >> 16) & 0xff] << 16) |                                    \
+   (qd[((x) >> 24) & 0xff] << 24))
+
+  /* --- Grind through the tables --- */
+
+  switch (k) {
+    case 4: x = Q(x, q1, q0, q0, q1) ^ l[3];
+    case 3: x = Q(x, q1, q1, q0, q0) ^ l[2];
+    case 2: x = Q(x, q0, q1, q0, q1) ^ l[1];
+           x = Q(x, q0, q0, q1, q1) ^ l[0];
+      break;
+  }
+
+#undef Q
+
+  /* --- Apply the MDS matrix --- */
+
+  return (qmds[0][U8(x >>  0)] ^ qmds[1][U8(x >>  8)] ^
+         qmds[2][U8(x >> 16)] ^ qmds[3][U8(x >> 24)]);
+}
+
+/* --- @twofish_init@ --- *
+ *
+ * Arguments:  @twofish_ctx *k@ = pointer to key block to fill in
+ *             @const void *buf@ = pointer to buffer of key material
+ *             @size_t sz@ = size of key material
+ *
+ * Returns:    ---
+ *
+ * Use:                Initializes a Twofish key buffer.  Twofish accepts key sizes
+ *             of up to 256 bits (32 bytes).
+ */
+
+void twofish_init(twofish_ctx *k, const void *buf, size_t sz)
+{
+# define KMAX 4
+
+  uint32 mo[KMAX], me[KMAX];
+  octet s[4][KMAX];
+
+  /* --- Expand the key into the three word arrays --- */
+
+  {
+    size_t ssz;
+    const octet *p, *q;
+    octet b[32];
+    int i;
+
+    /* --- Sort out the key size --- */
+
+    KSZ_ASSERT(twofish, sz);
+    if (sz <= 16)
+      ssz = 16;
+    else if (sz <= 24)
+      ssz = 24;
+    else if (sz <= 32)
+      ssz = 32;
+    else
+      assert(((void)"This can't happen (bad key size in twofish_init)", 0));
+
+    /* --- Extend the key if necessary --- */
+
+    if (sz == ssz)
+      p = buf;
+    else {
+      memcpy(b, buf, sz);
+      memset(b + sz, 0, ssz - sz);
+      p = b;
+    }
+
+    /* --- Finally get the word count --- */
+
+    sz = ssz / 8;
+
+    /* --- Extract words from the key --- *
+     *
+     * The @s@ table, constructed using the Reed-Solomon matrix, is cut into
+     * sequences of bytes, since this is actually more useful for computing
+     * the S-boxes.
+     */
+
+    q = p;
+    for (i = 0; i < sz; i++) {
+      octet ss[4];
+      const octet *r = rs;
+      int j;
+
+      /* --- Extract the easy subkeys --- */
+
+      me[i] = LOAD32_L(q);
+      mo[i] = LOAD32_L(q + 4);
+
+      /* --- Now do the Reed-Solomon thing --- */
+
+      for (j = 0; j < 4; j++) {
+       const octet *qq = q;
+       unsigned a = 0;
+       int k;
+
+       for (k = 0; k < 8; k++) {
+         if (*qq)
+           a ^= rsexp[rslog[*qq] + *r];
+         qq++;
+         r++;
+       }
+       
+       s[j][sz - 1 - i] = ss[j] = a;
+      }
+      q += 8;
+    }
+
+    /* --- Clear away the temporary buffer --- */
+
+    if (p == b)
+      BURN(b);
+  }
+
+  /* --- Construct the expanded key --- */
+
+  {
+    uint32 p = 0x01010101;
+    uint32 ip = 0;
+    int i;
+
+    for (i = 0; i < 40; i += 2) {
+      uint32 a, b;
+      a = h(ip, me, sz);
+      b = h(ip + p, mo, sz);
+      b = ROL32(b, 8);
+      a += b; b += a;
+      k->k[i] = U32(a);
+      k->k[i + 1] = ROL32(b, 9);
+      ip += 2 * p;
+    }
+  }
+
+  /* --- Construct the S-box tables --- */
+
+  {
+    unsigned i;
+    static const octet *q[4][KMAX + 1] = {
+      { q1, q0, q0, q1, q1 },
+      { q0, q0, q1, q1, q0 },
+      { q1, q1, q0, q0, q0 },
+      { q0, q1, q1, q0, q1 }
+    };
+
+    for (i = 0; i < 4; i++) {
+      unsigned j;
+      uint32 x;
+
+      for (j = 0; j < 256; j++) {
+       x = j;
+
+       /* --- Push the byte through the q tables --- */
+
+       switch (sz) {
+         case 4: x = q[i][4][x] ^ s[i][3];
+         case 3: x = q[i][3][x] ^ s[i][2];
+         case 2: x = q[i][2][x] ^ s[i][1];
+                 x = q[i][1][x] ^ s[i][0];
+           break;
+       }
+
+       /* --- Write it in the key schedule --- */
+
+       k->g[i][j] = qmds[i][x];
+      }
+    }
+  }
+
+  /* --- Clear everything away --- */
+
+  BURN(me);
+  BURN(mo);
+  BURN(s);
+}
+
+/*----- Main encryption ---------------------------------------------------*/
+
+/* --- Feistel function --- */
+
+#define GG(k, t0, t1, x, y, kk) do {                                   \
+  t0 = (k->g[0][U8(x >>  0)] ^                                         \
+       k->g[1][U8(x >>  8)] ^                                          \
+       k->g[2][U8(x >> 16)] ^                                          \
+       k->g[3][U8(x >> 24)]);                                          \
+  t1 = (k->g[1][U8(y >>  0)] ^                                         \
+       k->g[2][U8(y >>  8)] ^                                          \
+       k->g[3][U8(y >> 16)] ^                                          \
+       k->g[0][U8(y >> 24)]);                                          \
+  t0 += t1;                                                            \
+  t1 += t0;                                                            \
+  t0 += kk[0];                                                         \
+  t1 += kk[1];                                                         \
+} while (0)
+
+/* --- Round operations --- */
+
+#define EROUND(k, w, x, y, z, kk) do {                                 \
+  uint32 _t0, _t1;                                                     \
+  GG(k, _t0, _t1, w, x, kk);                                           \
+  kk += 2;                                                             \
+  y ^= _t0; y = ROR32(y, 1);                                           \
+  z = ROL32(z, 1); z ^= _t1;                                           \
+} while (0)
+
+#define DROUND(k, w, x, y, z, kk) do {                                 \
+  uint32 _t0, _t1;                                                     \
+  kk -= 2;                                                             \
+  GG(k, _t0, _t1, w, x, kk);                                           \
+  y = ROL32(y, 1); y ^= _t0;                                           \
+  z ^= _t1; z = ROR32(z, 1);                                           \
+} while (0)
+
+/* --- Complete encryption functions --- */
+
+#define EBLK(k, a, b, c, d, w, x, y, z) do {                           \
+  const uint32 *_kk = k->k + 8;                                                \
+  uint32 _a = a, _b = b, _c = c, _d = d;                               \
+  _a ^= k->k[0]; _b ^= k->k[1]; _c ^= k->k[2]; _d ^= k->k[3];          \
+  EROUND(k, _a, _b, _c, _d, _kk);                                      \
+  EROUND(k, _c, _d, _a, _b, _kk);                                      \
+  EROUND(k, _a, _b, _c, _d, _kk);                                      \
+  EROUND(k, _c, _d, _a, _b, _kk);                                      \
+  EROUND(k, _a, _b, _c, _d, _kk);                                      \
+  EROUND(k, _c, _d, _a, _b, _kk);                                      \
+  EROUND(k, _a, _b, _c, _d, _kk);                                      \
+  EROUND(k, _c, _d, _a, _b, _kk);                                      \
+  EROUND(k, _a, _b, _c, _d, _kk);                                      \
+  EROUND(k, _c, _d, _a, _b, _kk);                                      \
+  EROUND(k, _a, _b, _c, _d, _kk);                                      \
+  EROUND(k, _c, _d, _a, _b, _kk);                                      \
+  EROUND(k, _a, _b, _c, _d, _kk);                                      \
+  EROUND(k, _c, _d, _a, _b, _kk);                                      \
+  EROUND(k, _a, _b, _c, _d, _kk);                                      \
+  EROUND(k, _c, _d, _a, _b, _kk);                                      \
+  _c ^= k->k[4]; _d ^= k->k[5]; _a ^= k->k[6]; _b ^= k->k[7];          \
+  w = U32(_c); x = U32(_d); y = U32(_a); z = U32(_b);                  \
+} while (0)
+
+#define DBLK(k, a, b, c, d, w, x, y, z) do {                           \
+  const uint32 *_kk = k->k + 40;                                       \
+  uint32 _a = a, _b = b, _c = c, _d = d;                               \
+  _a ^= k->k[4]; _b ^= k->k[5]; _c ^= k->k[6]; _d ^= k->k[7];          \
+  DROUND(k, _a, _b, _c, _d, _kk);                                      \
+  DROUND(k, _c, _d, _a, _b, _kk);                                      \
+  DROUND(k, _a, _b, _c, _d, _kk);                                      \
+  DROUND(k, _c, _d, _a, _b, _kk);                                      \
+  DROUND(k, _a, _b, _c, _d, _kk);                                      \
+  DROUND(k, _c, _d, _a, _b, _kk);                                      \
+  DROUND(k, _a, _b, _c, _d, _kk);                                      \
+  DROUND(k, _c, _d, _a, _b, _kk);                                      \
+  DROUND(k, _a, _b, _c, _d, _kk);                                      \
+  DROUND(k, _c, _d, _a, _b, _kk);                                      \
+  DROUND(k, _a, _b, _c, _d, _kk);                                      \
+  DROUND(k, _c, _d, _a, _b, _kk);                                      \
+  DROUND(k, _a, _b, _c, _d, _kk);                                      \
+  DROUND(k, _c, _d, _a, _b, _kk);                                      \
+  DROUND(k, _a, _b, _c, _d, _kk);                                      \
+  DROUND(k, _c, _d, _a, _b, _kk);                                      \
+  _c ^= k->k[0]; _d ^= k->k[1]; _a ^= k->k[2]; _b ^= k->k[3];          \
+  w = U32(_c); x = U32(_d); y = U32(_a); z = U32(_b);                  \
+} while (0)
+
+/* --- @twofish_eblk@, @twofish_dblk@ --- *
+ *
+ * Arguments:  @const twofish_ctx *k@ = pointer to key block
+ *             @const uint32 s[4]@ = pointer to source block
+ *             @uint32 d[4]@ = pointer to destination block
+ *
+ * Returns:    ---
+ *
+ * Use:                Low-level block encryption and decryption.
+ */
+
+void twofish_eblk(const twofish_ctx *k, const uint32 *s, uint32 *d)
+{
+  EBLK(k, s[0], s[1], s[2], s[3], d[0], d[1], d[2], d[3]);
+}
+
+void twofish_dblk(const twofish_ctx *k, const uint32 *s, uint32 *d)
+{
+  DBLK(k, s[0], s[1], s[2], s[3], d[0], d[1], d[2], d[3]);
+}
+
+BLKC_TEST(TWOFISH, twofish)
+
+/*----- That's all, folks -------------------------------------------------*/
diff --git a/twofish.h b/twofish.h
new file mode 100644 (file)
index 0000000..c941bc5
--- /dev/null
+++ b/twofish.h
@@ -0,0 +1,117 @@
+/* -*-c-*-
+ *
+ * $Id: twofish.h,v 1.1 2000/06/17 12:10:17 mdw Exp $
+ *
+ * The Twofish block cipher
+ *
+ * (c) 2000 Straylight/Edgeware
+ */
+
+/*----- Licensing notice --------------------------------------------------* 
+ *
+ * This file is part of Catacomb.
+ *
+ * Catacomb is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ * 
+ * Catacomb is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Library General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Library General Public
+ * License along with Catacomb; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+/*----- Revision history --------------------------------------------------* 
+ *
+ * $Log: twofish.h,v $
+ * Revision 1.1  2000/06/17 12:10:17  mdw
+ * New cipher.
+ *
+ */
+
+/*----- Notes on the Twofish block cipher ---------------------------------*
+ *
+ * Twofish was designed by Bruce Schneier, John Kelsey, Doug Whiting, David
+ * Wagner, Chris Hall and Niels Ferguson.  The algorithm is unpatented and
+ * free for anyone to use.  It is one of the five AES finalist algorithms.
+ * At the time of writing, the AES competition is still underway.
+ *
+ * Twofish is a complex cipher offering various space and time tradeoffs.
+ * This implementation has a heavy key schedule and fast bulk encryption.
+ */
+
+#ifndef CATACOMB_TWOFISH_H
+#define CATACOMB_TWOFISH_H
+
+#ifdef __cplusplus
+  extern "C" {
+#endif
+
+/*----- Header files ------------------------------------------------------*/
+
+#include <stddef.h>
+
+#include <mLib/bits.h>
+
+/*----- Magical numbers ---------------------------------------------------*/
+
+#define TWOFISH_BLKSZ 16
+#define TWOFISH_KEYSZ 32
+#define TWOFISH_CLASS (N, L, 128)
+
+extern const octet twofish_keysz[];
+
+/*----- Data structures ---------------------------------------------------*/
+
+typedef struct twofish_ctx {
+  uint32 k[40];
+  uint32 g[4][256];
+} twofish_ctx;
+
+/*----- Functions provided ------------------------------------------------*/
+
+/* --- @twofish_init@ --- *
+ *
+ * Arguments:  @twofish_ctx *k@ = pointer to key block to fill in
+ *             @const void *buf@ = pointer to buffer of key material
+ *             @size_t sz@ = size of key material
+ *
+ * Returns:    ---
+ *
+ * Use:                Initializes a Twofish key buffer.  Twofish accepts keys of up
+ *             to 256 bits in length.
+ */
+
+extern void twofish_init(twofish_ctx */*k*/,
+                        const void */*buf*/, size_t /*sz*/);
+
+/* --- @twofish_eblk@, @twofish_dblk@ --- *
+ *
+ * Arguments:  @const twofish_ctx *k@ = pointer to key block
+ *             @const uint32 s[4]@ = pointer to source block
+ *             @uint32 d[4]@ = pointer to destination block
+ *
+ * Returns:    ---
+ *
+ * Use:                Low-level block encryption and decryption.
+ */
+
+extern void twofish_eblk(const twofish_ctx */*k*/,
+                        const uint32 */*s*/, uint32 */*d*/);
+
+extern void twofish_dblk(const twofish_ctx */*k*/,
+                         const uint32 */*s*/, uint32 */*d*/);
+
+/*----- That's all, folks -------------------------------------------------*/
+
+#ifdef __cplusplus
+  }
+#endif
+
+#endif