adding Keccak

This commit is contained in:
bg 2010-02-10 22:27:02 +00:00
parent de0d7d8778
commit 1b51cba0fd
28 changed files with 41021 additions and 146 deletions

View File

@ -91,8 +91,8 @@ FILE_PATTERNS = *.h \
*.H++ \
RECURSIVE \
= \
NO
RECURSIVE = NO
YES
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = main-*

99
hfal_keccak.c Normal file
View File

@ -0,0 +1,99 @@
/* hfal_keccak.c */
/*
This file is part of the AVR-Crypto-Lib.
Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* \file hfal_keccak.c
* \email daniel.otte@rub.de
* \author Daniel Otte
* \date 2010-02-09
* \license GPLv3 or later
*
*/
#include <avr/pgmspace.h>
#include <stdlib.h>
#include "hashfunction_descriptor.h"
#include "keccak.h"
static const char keccak224_str[] PROGMEM = "Keccak-224";
static const char keccak256_str[] PROGMEM = "keccak-256";
static const char keccak384_str[] PROGMEM = "Keccak-384";
static const char keccak512_str[] PROGMEM = "keccak-512";
const hfdesc_t keccak224_desc PROGMEM = {
HFDESC_TYPE_HASHFUNCTION,
0,
keccak224_str,
sizeof(keccak_ctx_t),
KECCAK224_BLOCKSIZE,
224,
(hf_init_fpt)keccak224_init,
(hf_nextBlock_fpt)keccak_nextBlock,
(hf_lastBlock_fpt)keccak_lastBlock,
(hf_ctx2hash_fpt)keccak224_ctx2hash,
(hf_free_fpt)NULL,
(hf_mem_fpt)NULL
};
const hfdesc_t keccak256_desc PROGMEM = {
HFDESC_TYPE_HASHFUNCTION,
0,
keccak256_str,
sizeof(keccak_ctx_t),
KECCAK256_BLOCKSIZE,
256,
(hf_init_fpt)keccak256_init,
(hf_nextBlock_fpt)keccak_nextBlock,
(hf_lastBlock_fpt)keccak_lastBlock,
(hf_ctx2hash_fpt)keccak256_ctx2hash,
(hf_free_fpt)NULL,
(hf_mem_fpt)NULL
};
const hfdesc_t keccak384_desc PROGMEM = {
HFDESC_TYPE_HASHFUNCTION,
0,
keccak384_str,
sizeof(keccak_ctx_t),
KECCAK384_BLOCKSIZE,
384,
(hf_init_fpt)keccak384_init,
(hf_nextBlock_fpt)keccak_nextBlock,
(hf_lastBlock_fpt)keccak_lastBlock,
(hf_ctx2hash_fpt)keccak384_ctx2hash,
(hf_free_fpt)NULL,
(hf_mem_fpt)NULL
};
const hfdesc_t keccak512_desc PROGMEM = {
HFDESC_TYPE_HASHFUNCTION,
0,
keccak512_str,
sizeof(keccak_ctx_t),
KECCAK512_BLOCKSIZE,
512,
(hf_init_fpt)keccak512_init,
(hf_nextBlock_fpt)keccak_nextBlock,
(hf_lastBlock_fpt)keccak_lastBlock,
(hf_ctx2hash_fpt)keccak512_ctx2hash,
(hf_free_fpt)NULL,
(hf_mem_fpt)NULL
};

39
hfal_keccak.h Normal file
View File

@ -0,0 +1,39 @@
/* hfal_keccak.h */
/*
This file is part of the AVR-Crypto-Lib.
Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* \file hfal_keccak.h
* \email daniel.otte@rub.de
* \author Daniel Otte
* \date 2010-02-09
* \license GPLv3 or later
*
*/
#ifndef HFAL_KECCAK_H_
#define HFAL_KECCAK_H_
#include <avr/pgmspace.h>
#include "hashfunction_descriptor.h"
extern const hfdesc_t keccak224_desc;
extern const hfdesc_t keccak256_desc;
extern const hfdesc_t keccak384_desc;
extern const hfdesc_t keccak512_desc;
#endif /* HFAL_KECCAK_H_ */

266
keccak/keccak.c Normal file
View File

@ -0,0 +1,266 @@
/* keecak.c */
/*
This file is part of the AVR-Crypto-Lib.
Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <avr/pgmspace.h>
#include "memxor.h"
#include "keccak.h"
#define W 64
#ifdef DEBUG
# undef DEBUG
#endif
#define DEBUG 1
#if DEBUG
#include "cli.h"
void keccak_dump_state(uint64_t a[5][5]){
uint8_t i,j;
for(i=0; i<5; ++i){
cli_putstr_P(PSTR("\r\n"));
cli_putc('0'+i);
cli_putstr_P(PSTR(": "));
for(j=0; j<5; ++j){
cli_hexdump_rev(&(a[i][j]), 8);
cli_putc(' ');
}
}
}
void keccak_dump_ctx(keccak_ctx_t* ctx){
keccak_dump_state(ctx->a);
cli_putstr_P(PSTR("\r\nDBG: r: "));
cli_hexdump_rev(&(ctx->r), 2);
cli_putstr_P(PSTR("\t c: "));
cli_hexdump_rev(&(ctx->c), 2);
cli_putstr_P(PSTR("\t d: "));
cli_hexdump(&(ctx->d), 1);
cli_putstr_P(PSTR("\t bs: "));
cli_hexdump(&(ctx->bs), 1);
}
#endif
#undef DEBUG
static uint64_t rc[] PROGMEM = {
0x0000000000000001LL, 0x0000000000008082LL,
0x800000000000808ALL, 0x8000000080008000LL,
0x000000000000808BLL, 0x0000000080000001LL,
0x8000000080008081LL, 0x8000000000008009LL,
0x000000000000008ALL, 0x0000000000000088LL,
0x0000000080008009LL, 0x000000008000000ALL,
0x000000008000808BLL, 0x800000000000008BLL,
0x8000000000008089LL, 0x8000000000008003LL,
0x8000000000008002LL, 0x8000000000000080LL,
0x000000000000800ALL, 0x800000008000000ALL,
0x8000000080008081LL, 0x8000000000008080LL,
0x0000000080000001LL, 0x8000000080008008LL
};
uint64_t rotl64(uint64_t a, uint8_t r){
return (a<<r)|(a>>(64-r));
}
static uint8_t r[5][5] PROGMEM = {
{ 0, 36, 3, 41, 18 },
{ 1, 44, 10, 45, 2 },
{ 62, 6, 43, 15, 61 },
{ 28, 55, 25, 21, 56 },
{ 27, 20, 39, 8, 14 }
};
void keccak_round(uint64_t a[5][5], uint8_t rci){
uint64_t c[5], d[5], b[5][5];
uint8_t i,j;
/* theta */
for(i=0; i<5; ++i){
c[i] = a[0][i] ^ a[1][i] ^ a[2][i] ^ a[3][i] ^ a[4][i];
}
for(i=0; i<5; ++i){
d[i] = c[(4+i)%5] ^ rotl64(c[(i+1)%5], 1);
}
for(i=0; i<5; ++i){
for(j=0; j<5; ++j){
a[j][i] ^= d[i];
}
}
#if DEBUG
cli_putstr_P(PSTR("\r\nAfter theta:"));
keccak_dump_state(a);
#endif
/* rho & pi */
for(i=0; i<5; ++i){
for(j=0; j<5; ++j){
b[(2*i+3*j)%5][j] = rotl64(a[j][i], pgm_read_byte(&(r[i][j])));
}
}
#if DEBUG
cli_putstr_P(PSTR("\r\n--- after rho & pi ---"));
keccak_dump_state(a);
#endif
/* chi */
for(i=0; i<5; ++i){
for(j=0; j<5; ++j){
a[j][i] = b[j][i] ^ ((~(b[j][(i+1)%5]))&(b[j][(i+2)%5]));
}
}
#if DEBUG
cli_putstr_P(PSTR("\r\nAfter chi:"));
keccak_dump_state(a);
#endif
/* iota */
uint64_t t;
memcpy_P(&t, &(rc[rci]), 8);
a[0][0] ^= t;
#if DEBUG
cli_putstr_P(PSTR("\r\nAfter iota:"));
keccak_dump_state(a);
#endif
}
void keccak_f1600(uint64_t a[5][5]){
uint8_t i=0;
do{
#if DEBUG
cli_putstr_P(PSTR("\r\n\r\n--- Round "));
cli_hexdump(&i, 1);
cli_putstr_P(PSTR(" ---"));
#endif
keccak_round(a, i);
}while(++i<24);
}
void keccak_nextBlock(keccak_ctx_t* ctx, const void* block){
memxor(ctx->a, block, ctx->bs);
keccak_f1600(ctx->a);
}
void keccak_lastBlock(keccak_ctx_t* ctx, const void* block, uint16_t length_b){
while(length_b>=ctx->r){
keccak_nextBlock(ctx, block);
block = (uint8_t*)block + ctx->bs;
length_b -= ctx->r;
}
uint8_t tmp[ctx->bs];
uint8_t pad[3];
memset(tmp, 0x00, ctx->bs);
memcpy(tmp, block, (length_b+7)/8);
/* appand 1 */
if(length_b&7){
/* we have some single bits */
uint8_t t;
t = tmp[length_b/8]>>(8-(length_b&7));
t |= 0x01<<(length_b&7);
tmp[length_b/8] = t;
}else{
tmp[length_b/8] = 0x01;
}
pad[0] = ctx->d;
pad[1] = ctx->bs;
pad[2] = 0x01;
if(length_b/8+1+3<ctx->bs){
memcpy(tmp+length_b/8+1, pad, 3);
}else{
if(length_b/8+1+2<ctx->bs){
memcpy(tmp+length_b/8+1, pad, 2);
keccak_nextBlock(ctx, tmp);
memset(tmp, 0x00, ctx->bs);
tmp[0]=0x01;
}else{
if(length_b/8+1+1<ctx->bs){
memcpy(tmp+length_b/8+1, pad, 1);
keccak_nextBlock(ctx, tmp);
memset(tmp, 0x00, ctx->bs);
tmp[0] = ctx->bs;
tmp[1] = 0x01;
}else{
keccak_nextBlock(ctx, tmp);
memset(tmp, 0x00, ctx->bs);
tmp[0] = ctx->d;
tmp[1] = ctx->bs;
tmp[2] = 0x01;
}
}
}
keccak_nextBlock(ctx, tmp);
keccak_dump_ctx(ctx);
}
void keccak_ctx2hash(void* dest, uint16_t length_b, keccak_ctx_t* ctx){
while(length_b>=ctx->r){
memcpy(dest, ctx->a, ctx->bs);
dest = (uint8_t*)dest + ctx->bs;
length_b -= ctx->r;
keccak_f1600(ctx->a);
}
memcpy(dest, ctx->a, (length_b+7)/8);
}
void keccak224_ctx2hash(void* dest, keccak_ctx_t* ctx){
keccak_ctx2hash(dest, 224, ctx);
}
void keccak256_ctx2hash(void* dest, keccak_ctx_t* ctx){
keccak_ctx2hash(dest, 256, ctx);
}
void keccak384_ctx2hash(void* dest, keccak_ctx_t* ctx){
keccak_ctx2hash(dest, 384, ctx);
}
void keccak512_ctx2hash(void* dest, keccak_ctx_t* ctx){
keccak_ctx2hash(dest, 512, ctx);
}
/*
1. SHA3-224: Keccak[r = 1152, c = 448, d = 28]224
2. SHA3-256: Keccak[r = 1088, c = 512, d = 32]256
3. SHA3-384: Keccak[r = 832, c = 768, d = 48]384
4. SHA3-512: Keccak[r = 576, c = 1024, d = 64]512
*/
void keccak_init(uint16_t r, uint16_t c, uint8_t d, keccak_ctx_t* ctx){
memset(ctx->a, 0x00, 5*5*8);
ctx->r = r;
ctx->c = c;
ctx->d = d;
ctx->bs = (uint8_t)(r/8);
}
void keccak224_init(keccak_ctx_t* ctx){
keccak_init(1152, 448, 28, ctx);
}
void keccak256_init(keccak_ctx_t* ctx){
keccak_init(1088, 512, 32, ctx);
}
void keccak384_init(keccak_ctx_t* ctx){
keccak_init( 832, 768, 48, ctx);
}
void keccak512_init(keccak_ctx_t* ctx){
keccak_init( 576, 1024, 64, ctx);
}

58
keccak/keccak.h Normal file
View File

@ -0,0 +1,58 @@
/* keccak.h */
/*
This file is part of the AVR-Crypto-Lib.
Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef KECCAK_H_
#define KECCAK_H_
#include <stdint.h>
#define KECCAK224_BLOCKSIZE 1152
#define KECCAK224_BLOCKSIZE_B (KECCAK224_BLOCKSIZE/8)
#define KECCAK256_BLOCKSIZE 1088
#define KECCAK256_BLOCKSIZE_B (KECCAK256_BLOCKSIZE/8)
#define KECCAK384_BLOCKSIZE 832
#define KECCAK384_BLOCKSIZE_B (KECCAK384_BLOCKSIZE/8)
#define KECCAK512_BLOCKSIZE 576
#define KECCAK512_BLOCKSIZE_B (KECCAK512_BLOCKSIZE/8)
typedef struct{
uint64_t a[5][5];
uint16_t r, c;
uint8_t d, bs;
} keccak_ctx_t;
void keccak_dump_ctx(keccak_ctx_t* ctx);
void keccak_init(uint16_t r, uint16_t c, uint8_t d, keccak_ctx_t* ctx);
void keccak224_init(keccak_ctx_t* ctx);
void keccak256_init(keccak_ctx_t* ctx);
void keccak384_init(keccak_ctx_t* ctx);
void keccak512_init(keccak_ctx_t* ctx);
void keccak_nextBlock(keccak_ctx_t* ctx, const void* block);
void keccak_lastBlock(keccak_ctx_t* ctx, const void* block, uint16_t length_b);
void keccak_ctx2hash(void* dest, uint16_t length_b, keccak_ctx_t* ctx);
void keccak224_ctx2hash(void* dest, keccak_ctx_t* ctx);
void keccak256_ctx2hash(void* dest, keccak_ctx_t* ctx);
void keccak384_ctx2hash(void* dest, keccak_ctx_t* ctx);
void keccak512_ctx2hash(void* dest, keccak_ctx_t* ctx);
#endif /* KECCAK_H_ */

66
keccak/memxor.S Normal file
View File

@ -0,0 +1,66 @@
/* memxor.S */
/*
This file is part of the AVR-Crypto-Lib.
Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* File: memxor.S
* Author: Daniel Otte
* Date: 2008-08-07
* License: GPLv3 or later
* Description: memxor, XORing one block into another
*
*/
/*
* void memxor(void* dest, const void* src, uint16_t n);
*/
/*
* param dest is passed in r24:r25
* param src is passed in r22:r23
* param n is passed in r20:r21
*/
.global memxor
memxor:
movw r30, r24
movw r26, r22
movw r24, r20
adiw r24, 0
breq 2f
1:
ld r20, X+
ld r21, Z
eor r20, r21
st Z+, r20
sbiw r24, 1
brne 1b
2:
ret

7
keccak/memxor.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef MEMXOR_H_
#define MEMXOR_H_
#include <stdint.h>
void memxor(void* dest, const void* src, uint16_t n);
#endif

12
mkfiles/keccak_c.mk Normal file
View File

@ -0,0 +1,12 @@
# Makefile for BlueMidnightWish
ALGO_NAME := KECCAK_C
# comment out the following line for removement of BlueMidnightWish from the build process
HASHES += $(ALGO_NAME)
$(ALGO_NAME)_DIR := keccak/
$(ALGO_NAME)_OBJ := keccak.o memxor.o
$(ALGO_NAME)_TEST_BIN := main-keccak-test.o hfal_keccak.o $(CLI_STD) $(HFAL_STD)
$(ALGO_NAME)_NESSIE_TEST := test nessie
$(ALGO_NAME)_PERFORMANCE_TEST := performance

View File

@ -527,157 +527,145 @@ void testrun_aes192_cmac0(void){
cli_hexdump_block(tag, 2, 4, 16);
bcal_cmac_free(&ctx);
}
/*
MSG:
KEY: 233952DEE4D5ED5F9B9C6D6FF80FF478
NONCE: 62EC67F9C3A4A407FCB2A8C49031A8B3
HEADER: 6BFB914FD07EAE6B
CIPHER: E037830E8389F27B025A2D6527E79D01
*/
uint8_t eax_msg[] PROGMEM = {
0xF7, 0xFB,
0x1A, 0x47, 0xCB, 0x49, 0x33,
0x48, 0x1C, 0x9E, 0x39, 0xB1,
0x40, 0xD0, 0xC0, 0x7D, 0xA5, 0xE4,
0x4D, 0xE3, 0xB3, 0x5C, 0x3F, 0xC0, 0x39, 0x24, 0x5B, 0xD1, 0xFB, 0x7D,
0x8B, 0x0A, 0x79, 0x30, 0x6C, 0x9C, 0xE7, 0xED, 0x99, 0xDA, 0xE4, 0xF8, 0x7F, 0x8D, 0xD6, 0x16, 0x36,
0x1B, 0xDA, 0x12, 0x2B, 0xCE, 0x8A, 0x8D, 0xBA, 0xF1, 0x87, 0x7D, 0x96, 0x2B, 0x85, 0x92, 0xDD, 0x2D, 0x56,
0x6C, 0xF3, 0x67, 0x20, 0x87, 0x2B, 0x85, 0x13, 0xF6, 0xEA, 0xB1, 0xA8, 0xA4, 0x44, 0x38, 0xD5, 0xEF, 0x11,
0xCA, 0x40, 0xD7, 0x44, 0x6E, 0x54, 0x5F, 0xFA, 0xED, 0x3B, 0xD1, 0x2A, 0x74, 0x0A, 0x65, 0x9F, 0xFB, 0xBB, 0x3C, 0xEA, 0xB7
};
uint8_t eax_msg_len[] PROGMEM = {0, 2, 5, 5, 6, 12, 17, 18, 18, 21};
uint8_t eax_key[] PROGMEM = {
0x23, 0x39, 0x52, 0xDE, 0xE4, 0xD5, 0xED, 0x5F, 0x9B, 0x9C, 0x6D, 0x6F, 0xF8, 0x0F, 0xF4, 0x78,
0x91, 0x94, 0x5D, 0x3F, 0x4D, 0xCB, 0xEE, 0x0B, 0xF4, 0x5E, 0xF5, 0x22, 0x55, 0xF0, 0x95, 0xA4,
0x01, 0xF7, 0x4A, 0xD6, 0x40, 0x77, 0xF2, 0xE7, 0x04, 0xC0, 0xF6, 0x0A, 0xDA, 0x3D, 0xD5, 0x23,
0xD0, 0x7C, 0xF6, 0xCB, 0xB7, 0xF3, 0x13, 0xBD, 0xDE, 0x66, 0xB7, 0x27, 0xAF, 0xD3, 0xC5, 0xE8,
0x35, 0xB6, 0xD0, 0x58, 0x00, 0x05, 0xBB, 0xC1, 0x2B, 0x05, 0x87, 0x12, 0x45, 0x57, 0xD2, 0xC2,
0xBD, 0x8E, 0x6E, 0x11, 0x47, 0x5E, 0x60, 0xB2, 0x68, 0x78, 0x4C, 0x38, 0xC6, 0x2F, 0xEB, 0x22,
0x7C, 0x77, 0xD6, 0xE8, 0x13, 0xBE, 0xD5, 0xAC, 0x98, 0xBA, 0xA4, 0x17, 0x47, 0x7A, 0x2E, 0x7D,
0x5F, 0xFF, 0x20, 0xCA, 0xFA, 0xB1, 0x19, 0xCA, 0x2F, 0xC7, 0x35, 0x49, 0xE2, 0x0F, 0x5B, 0x0D,
0xA4, 0xA4, 0x78, 0x2B, 0xCF, 0xFD, 0x3E, 0xC5, 0xE7, 0xEF, 0x6D, 0x8C, 0x34, 0xA5, 0x61, 0x23,
0x83, 0x95, 0xFC, 0xF1, 0xE9, 0x5B, 0xEB, 0xD6, 0x97, 0xBD, 0x01, 0x0B, 0xC7, 0x66, 0xAA, 0xC3
};
uint8_t eax_nonce[] PROGMEM = {
0x62, 0xEC, 0x67, 0xF9, 0xC3, 0xA4, 0xA4, 0x07, 0xFC, 0xB2, 0xA8, 0xC4, 0x90, 0x31, 0xA8, 0xB3,
0xBE, 0xCA, 0xF0, 0x43, 0xB0, 0xA2, 0x3D, 0x84, 0x31, 0x94, 0xBA, 0x97, 0x2C, 0x66, 0xDE, 0xBD,
0x70, 0xC3, 0xDB, 0x4F, 0x0D, 0x26, 0x36, 0x84, 0x00, 0xA1, 0x0E, 0xD0, 0x5D, 0x2B, 0xFF, 0x5E,
0x84, 0x08, 0xDF, 0xFF, 0x3C, 0x1A, 0x2B, 0x12, 0x92, 0xDC, 0x19, 0x9E, 0x46, 0xB7, 0xD6, 0x17,
0xFD, 0xB6, 0xB0, 0x66, 0x76, 0xEE, 0xDC, 0x5C, 0x61, 0xD7, 0x42, 0x76, 0xE1, 0xF8, 0xE8, 0x16,
0x6E, 0xAC, 0x5C, 0x93, 0x07, 0x2D, 0x8E, 0x85, 0x13, 0xF7, 0x50, 0x93, 0x5E, 0x46, 0xDA, 0x1B,
0x1A, 0x8C, 0x98, 0xDC, 0xD7, 0x3D, 0x38, 0x39, 0x3B, 0x2B, 0xF1, 0x56, 0x9D, 0xEE, 0xFC, 0x19,
0xDD, 0xE5, 0x9B, 0x97, 0xD7, 0x22, 0x15, 0x6D, 0x4D, 0x9A, 0xFF, 0x2B, 0xC7, 0x55, 0x98, 0x26,
0xB7, 0x81, 0xFC, 0xF2, 0xF7, 0x5F, 0xA5, 0xA8, 0xDE, 0x97, 0xA9, 0xCA, 0x48, 0xE5, 0x22, 0xEC,
0x22, 0xE7, 0xAD, 0xD9, 0x3C, 0xFC, 0x63, 0x93, 0xC5, 0x7E, 0xC0, 0xB3, 0xC1, 0x7D, 0x6B, 0x44
};
uint8_t eax_header[] PROGMEM = {
0x6B, 0xFB, 0x91, 0x4F, 0xD0, 0x7E, 0xAE, 0x6B,
0xFA, 0x3B, 0xFD, 0x48, 0x06, 0xEB, 0x53, 0xFA,
0x23, 0x4A, 0x34, 0x63, 0xC1, 0x26, 0x4A, 0xC6,
0x33, 0xCC, 0xE2, 0xEA, 0xBF, 0xF5, 0xA7, 0x9D,
0xAE, 0xB9, 0x6E, 0xAE, 0xBE, 0x29, 0x70, 0xE9,
0xD4, 0x48, 0x2D, 0x1C, 0xA7, 0x8D, 0xCE, 0x0F,
0x65, 0xD2, 0x01, 0x79, 0x90, 0xD6, 0x25, 0x28,
0x54, 0xB9, 0xF0, 0x4E, 0x6A, 0x09, 0x18, 0x9A,
0x89, 0x9A, 0x17, 0x58, 0x97, 0x56, 0x1D, 0x7E,
0x12, 0x67, 0x35, 0xFC, 0xC3, 0x20, 0xD2, 0x5A
};
uint8_t eax_cipher[] PROGMEM = {
0xE0, 0x37, 0x83, 0x0E, 0x83, 0x89, 0xF2, 0x7B, 0x02, 0x5A, 0x2D, 0x65, 0x27, 0xE7, 0x9D, 0x01,
0x19, 0xDD, 0x5C, 0x4C, 0x93, 0x31, 0x04, 0x9D, 0x0B, 0xDA, 0xB0, 0x27, 0x74, 0x08, 0xF6, 0x79, 0x67, 0xE5,
0xD8, 0x51, 0xD5, 0xBA, 0xE0, 0x3A, 0x59, 0xF2, 0x38, 0xA2, 0x3E, 0x39, 0x19, 0x9D, 0xC9, 0x26, 0x66, 0x26, 0xC4, 0x0F, 0x80,
0x63, 0x2A, 0x9D, 0x13, 0x1A, 0xD4, 0xC1, 0x68, 0xA4, 0x22, 0x5D, 0x8E, 0x1F, 0xF7, 0x55, 0x93, 0x99, 0x74, 0xA7, 0xBE, 0xDE,
0x07, 0x1D, 0xFE, 0x16, 0xC6, 0x75, 0xCB, 0x06, 0x77, 0xE5, 0x36, 0xF7, 0x3A, 0xFE, 0x6A, 0x14, 0xB7, 0x4E, 0xE4, 0x98, 0x44, 0xDD,
0x83, 0x5B, 0xB4, 0xF1, 0x5D, 0x74, 0x3E, 0x35, 0x0E, 0x72, 0x84, 0x14, 0xAB, 0xB8, 0x64, 0x4F, 0xD6, 0xCC, 0xB8, 0x69, 0x47, 0xC5, 0xE1, 0x05, 0x90, 0x21, 0x0A, 0x4F,
0x02, 0x08, 0x3E, 0x39, 0x79, 0xDA, 0x01, 0x48, 0x12, 0xF5, 0x9F, 0x11, 0xD5, 0x26, 0x30, 0xDA, 0x30, 0x13, 0x73, 0x27, 0xD1, 0x06, 0x49, 0xB0, 0xAA, 0x6E, 0x1C, 0x18, 0x1D, 0xB6, 0x17, 0xD7, 0xF2,
0x2E, 0xC4, 0x7B, 0x2C, 0x49, 0x54, 0xA4, 0x89, 0xAF, 0xC7, 0xBA, 0x48, 0x97, 0xED, 0xCD, 0xAE, 0x8C, 0xC3, 0x3B, 0x60, 0x45, 0x05, 0x99, 0xBD, 0x02, 0xC9, 0x63, 0x82, 0x90, 0x2A, 0xEF, 0x7F, 0x83, 0x2A,
0x0D, 0xE1, 0x8F, 0xD0, 0xFD, 0xD9, 0x1E, 0x7A, 0xF1, 0x9F, 0x1D, 0x8E, 0xE8, 0x73, 0x39, 0x38, 0xB1, 0xE8, 0xE7, 0xF6, 0xD2, 0x23, 0x16, 0x18, 0x10, 0x2F, 0xDB, 0x7F, 0xE5, 0x5F, 0xF1, 0x99, 0x17, 0x00,
0xCB, 0x89, 0x20, 0xF8, 0x7A, 0x6C, 0x75, 0xCF, 0xF3, 0x96, 0x27, 0xB5, 0x6E, 0x3E, 0xD1, 0x97, 0xC5, 0x52, 0xD2, 0x95, 0xA7, 0xCF, 0xC4, 0x6A, 0xFC, 0x25, 0x3B, 0x46, 0x52, 0xB1, 0xAF, 0x37, 0x95, 0xB1, 0x24, 0xAB, 0x6E
};
void testrun_aes128_eax(void){
uint8_t key[16]= {
0x23, 0x39, 0x52, 0xDE, 0xE4, 0xD5, 0xED, 0x5F,
0x9B, 0x9C, 0x6D, 0x6F, 0xF8, 0x0F, 0xF4, 0x78
};
uint8_t nonce[16] = {
0x62, 0xEC, 0x67, 0xF9, 0xC3, 0xA4, 0xA4, 0x07,
0xFC, 0xB2, 0xA8, 0xC4, 0x90, 0x31, 0xA8, 0xB3
};
uint8_t header[8] = {
0x6B, 0xFB, 0x91, 0x4F, 0xD0, 0x7E, 0xAE, 0x6B
};
uint8_t key[16];
uint8_t nonce[16];
uint8_t header[8];
uint8_t tag[16];
uint8_t msg[21];
uint8_t msg_len;
PGM_VOID_P msg_p;
PGM_VOID_P cipher_p;
uint8_t i, r;
bcal_eax_ctx_t ctx;
uint8_t r;
msg_p = eax_msg;
cipher_p = eax_cipher;
for(i=0; i<10; ++i){
cli_putstr_P(PSTR("\r\n\r\n** AES128-EAX-TEST #"));
cli_putc('0'+i);
cli_putstr_P(PSTR(" **"));
cli_putstr_P(PSTR("\r\n** AES128-EAX-TEST **"));
msg_len = pgm_read_byte(eax_msg_len+i);
memcpy_P(key, eax_key+16*i, 16);
memcpy_P(nonce, eax_nonce+16*i, 16);
memcpy_P(header, eax_header+8*i, 8);
memcpy_P(msg, msg_p, msg_len);
msg_p = (uint8_t*)msg_p+msg_len;
cli_putstr_P(PSTR("\r\n key: "));
cli_hexdump(key, 16);
cli_putstr_P(PSTR("\r\n nonce: "));
cli_hexdump(nonce, 16);
cli_putstr_P(PSTR("\r\n header: "));
cli_hexdump(header, 8);
r = bcal_eax_init(&aes128_desc, key, 128, &ctx);
cli_putstr_P(PSTR("\r\n init = 0x"));
cli_hexdump(&r, 1);
if(r)
return;
bcal_eax_loadNonce(nonce, 16*8, &ctx);
bcal_eax_addLastHeader(header, 8*8, &ctx);
bcal_eax_encLastBlock(NULL, 0, &ctx);
bcal_eax_ctx2tag(tag, 128, &ctx);
cli_putstr_P(PSTR("\r\n tag: "));
cli_hexdump_block(tag, 16, 4, 16);
bcal_eax_free(&ctx);
}
cli_putstr_P(PSTR("\r\n key: "));
cli_hexdump(key, 16);
cli_putstr_P(PSTR("\r\n msg: "));
if(msg_len){
cli_hexdump(msg, msg_len);
}
cli_putstr_P(PSTR("\r\n nonce: "));
cli_hexdump(nonce, 16);
cli_putstr_P(PSTR("\r\n header: "));
cli_hexdump(header, 8);
/*
MSG: F7FB
KEY: 91945D3F4DCBEE0BF45EF52255F095A4
NONCE: BECAF043B0A23D843194BA972C66DEBD
HEADER: FA3BFD4806EB53FA
CIPHER:
*/
void testrun_aes128_eax2(void){
uint8_t key[16]= {
0x91, 0x94, 0x5D, 0x3F, 0x4D, 0xCB, 0xEE, 0x0B,
0xF4, 0x5E, 0xF5, 0x22, 0x55, 0xF0, 0x95, 0xA4,
};
uint8_t msg[2] = { 0xF7, 0xFB };
uint8_t nonce[16] = {
0xBE, 0xCA, 0xF0, 0x43, 0xB0, 0xA2, 0x3D, 0x84,
0x31, 0x94, 0xBA, 0x97, 0x2C, 0x66, 0xDE, 0xBD,
};
uint8_t header[8] = {
0xFA, 0x3B, 0xFD, 0x48, 0x06, 0xEB, 0x53, 0xFA
};
uint8_t tag[16];
r = bcal_eax_init(&aes128_desc, key, 128, &ctx);
cli_putstr_P(PSTR("\r\n init = 0x"));
cli_hexdump(&r, 1);
if(r)
return;
bcal_eax_loadNonce(nonce, 16*8, &ctx);
bcal_eax_addLastHeader(header, 8*8, &ctx);
bcal_eax_encLastBlock(msg, msg_len*8, &ctx);
bcal_eax_ctx2tag(tag, 128, &ctx);
bcal_eax_ctx_t ctx;
uint8_t r;
cli_putstr_P(PSTR("\r\n cipher: "));
cli_hexdump_block(msg, msg_len, 4, 16);
cli_putstr_P(PSTR("\r\n tag: "));
cli_hexdump_block(tag, 16, 4, 16);
cli_putstr_P(PSTR("\r\n** AES128-EAX2-TEST **"));
if(memcmp_P(msg, cipher_p, msg_len)){
cli_putstr_P(PSTR("\r\n cipher: [fail]\r\n should: "));
memcpy_P(msg, cipher_p, msg_len);
cli_hexdump_block(msg, msg_len, 4, 16);
}else{
cli_putstr_P(PSTR("\r\n cipher: [pass]"));
}
cipher_p = ((uint8_t*)cipher_p)+msg_len;
// *
if(memcmp_P(tag, cipher_p, 16)){
cli_putstr_P(PSTR("\r\n tag: [fail]"));
}else{
cli_putstr_P(PSTR("\r\n tag: [pass]"));
}
cli_putstr_P(PSTR("\r\n key: "));
cli_hexdump(key, 16);
cli_putstr_P(PSTR("\r\n msg: "));
cli_hexdump(msg, 2);
cli_putstr_P(PSTR("\r\n nonce: "));
cli_hexdump(nonce, 16);
cli_putstr_P(PSTR("\r\n header: "));
cli_hexdump(header, 8);
r = bcal_eax_init(&aes128_desc, key, 128, &ctx);
cli_putstr_P(PSTR("\r\n init = 0x"));
cli_hexdump(&r, 1);
if(r)
return;
bcal_eax_loadNonce(nonce, 16*8, &ctx);
bcal_eax_addLastHeader(header, 8*8, &ctx);
bcal_eax_encLastBlock(msg, 2*8, &ctx);
bcal_eax_ctx2tag(tag, 128, &ctx);
cli_putstr_P(PSTR("\r\n cipher: "));
cli_hexdump_block(msg, 2, 4, 16);
cli_putstr_P(PSTR("\r\n tag: "));
cli_hexdump_block(tag, 16, 4, 16);
bcal_eax_free(&ctx);
}
/*
MSG: 1A47CB4933
KEY: 01F74AD64077F2E704C0F60ADA3DD523
NONCE: 70C3DB4F0D26368400A10ED05D2BFF5E
HEADER: 234A3463C1264AC6
CIPHER:
*/
void testrun_aes128_eax3(void){
uint8_t key[16]= {
0x01, 0xF7, 0x4A, 0xD6, 0x40, 0x77, 0xF2, 0xE7,
0x04, 0xC0, 0xF6, 0x0A, 0xDA, 0x3D, 0xD5, 0x23
};
uint8_t msg[5] = {
0x1A, 0x47, 0xCB, 0x49, 0x33
};
uint8_t nonce[16] = {
0x70, 0xC3, 0xDB, 0x4F, 0x0D, 0x26, 0x36, 0x84,
0x00, 0xA1, 0x0E, 0xD0, 0x5D, 0x2B, 0xFF, 0x5E
};
uint8_t header[8] = {
0x23, 0x4A, 0x34, 0x63, 0xC1, 0x26, 0x4A, 0xC6
};
uint8_t tag[16];
bcal_eax_ctx_t ctx;
uint8_t r;
cli_putstr_P(PSTR("\r\n** AES128-EAX3-TEST **"));
cli_putstr_P(PSTR("\r\n key: "));
cli_hexdump(key, 16);
cli_putstr_P(PSTR("\r\n msg: "));
cli_hexdump(msg, 5);
cli_putstr_P(PSTR("\r\n nonce: "));
cli_hexdump(nonce, 16);
cli_putstr_P(PSTR("\r\n header: "));
cli_hexdump(header, 8);
r = bcal_eax_init(&aes128_desc, key, 128, &ctx);
cli_putstr_P(PSTR("\r\n init = 0x"));
cli_hexdump(&r, 1);
if(r)
return;
bcal_eax_loadNonce(nonce, 16*8, &ctx);
bcal_eax_addLastHeader(header, 8*8, &ctx);
bcal_eax_encLastBlock(msg, 5*8, &ctx);
bcal_eax_ctx2tag(tag, 128, &ctx);
cli_putstr_P(PSTR("\r\n cipher: "));
cli_hexdump_block(msg, 5, 4, 16);
cli_putstr_P(PSTR("\r\n tag: "));
cli_hexdump_block(tag, 16, 4, 16);
bcal_eax_free(&ctx);
cipher_p = ((uint8_t*)cipher_p)+16;
bcal_eax_free(&ctx);
}
}
/*****************************************************************************/
@ -823,8 +811,6 @@ const char testcmac_str[] PROGMEM = "testcmac";
const char testcmac72_str[] PROGMEM = "testcmac72";
const char testcmac0_str[] PROGMEM = "testcmac0";
const char testeax_str[] PROGMEM = "testeax";
const char testeax2_str[] PROGMEM = "testeax2";
const char testeax3_str[] PROGMEM = "testeax3";
const char cmacvs_list_str[] PROGMEM = "cmacvs_list";
const char cmacvs_set_str[] PROGMEM = "cmacvs_set";
const char cmacvs_test1_str[] PROGMEM = "cmacvs_test1";
@ -846,8 +832,6 @@ cmdlist_entry_t cmdlist[] PROGMEM = {
{ testcmac72_str, NULL, testrun_aes128_cmac72 },
{ testcmac0_str, NULL, testrun_aes192_cmac0 },
{ testeax_str, NULL, testrun_aes128_eax },
{ testeax2_str, NULL, testrun_aes128_eax2 },
{ testeax3_str, NULL, testrun_aes128_eax3 },
{ cmacvs_list_str, NULL, cmacvs_listalgos },
{ cmacvs_set_str, (void*)1, (void_fpt)cmacvs_setalgo },
{ cmacvs_test1_str, NULL, cmacvs_test1 },

120
test_src/main-keccak-test.c Normal file
View File

@ -0,0 +1,120 @@
/* main-keccak-test.c */
/*
This file is part of the AVR-Crypto-Lib.
Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Keccak test-suit
*
*/
#include "config.h"
#include "uart_i.h"
#include "debug.h"
#include "keccak.h"
#include "cli.h"
#include "hfal_keccak.h"
#include "shavs.h"
#include "nessie_hash_test.h"
#include "performance_test.h"
#include "hfal-nessie.h"
#include "hfal-performance.h"
#include "hfal-test.h"
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
char* algo_name = "Keccak";
const hfdesc_t* algolist[] PROGMEM = {
(hfdesc_t*)&keccak224_desc,
(hfdesc_t*)&keccak256_desc,
(hfdesc_t*)&keccak384_desc,
(hfdesc_t*)&keccak512_desc,
NULL
};
/*****************************************************************************
* additional validation-functions *
*****************************************************************************/
void test_256(void){
uint8_t data[] = {0x53, 0x58, 0x7B, 0xC8 };
uint8_t hash[32];
uint8_t null[KECCAK256_BLOCKSIZE_B];
memset(null, 0, KECCAK256_BLOCKSIZE_B);
keccak_ctx_t ctx;
keccak256_init(&ctx);
keccak_lastBlock(&ctx, data, 29);
keccak256_ctx2hash(hash, &ctx);
cli_putstr_P(PSTR("\r\n testhash: "));
cli_hexdump(hash, 32);
}
void performance_keccak(void){
hfal_performance_multiple(algolist);
}
void testrun_nessie_keccak(void){
hfal_nessie_multiple(algolist);
}
/*****************************************************************************
* main *
*****************************************************************************/
const char nessie_str[] PROGMEM = "nessie";
const char test256_str[] PROGMEM = "test256";
const char performance_str[] PROGMEM = "performance";
const char echo_str[] PROGMEM = "echo";
const char shavs_list_str[] PROGMEM = "shavs_list";
const char shavs_set_str[] PROGMEM = "shavs_set";
const char shavs_test1_str[] PROGMEM = "shavs_test1";
const char shavs_test3_str[] PROGMEM = "shavs_test3";
cmdlist_entry_t cmdlist[] PROGMEM = {
{ nessie_str, NULL, testrun_nessie_keccak },
{ performance_str, NULL, performance_keccak },
{ test256_str, NULL, test_256 },
{ shavs_list_str, NULL, shavs_listalgos },
{ shavs_set_str, (void*)1, (void_fpt)shavs_setalgo },
{ shavs_test1_str, NULL, shavs_test1 },
{ shavs_test3_str, NULL, shavs_test3 },
{ echo_str, (void*)1, (void_fpt)echo_ctrl },
{ NULL, NULL, NULL }
};
int main (void){
DEBUG_INIT();
cli_rx = (cli_rx_fpt)uart0_getc;
cli_tx = (cli_tx_fpt)uart0_putc;
shavs_algolist=(hfdesc_t**)algolist;
shavs_algo=(hfdesc_t*)&keccak256_desc;
for(;;){
cli_putstr_P(PSTR("\r\n\r\nCrypto-VS ("));
cli_putstr(algo_name);
cli_putstr_P(PSTR("; "));
cli_putstr(__DATE__);
cli_putstr_P(PSTR(" "));
cli_putstr(__TIME__);
cli_putstr_P(PSTR(")\r\nloaded and running\r\n"));
cmd_interface(cmdlist);
}
}

View File

@ -303,9 +303,11 @@ void shavs_test1(void){ /* KAT tests */
cli_putstr_P(PSTR("\r\n\t (temp) == "));
cli_hexdump_rev(&temp,2);
_delay_ms(500);
#endif
temp=length-(shavs_ctx.blocks)*((shavs_ctx.buffersize_B)*8);
#else
uint16_t temp=length-(shavs_ctx.blocks)*((shavs_ctx.buffersize_B)*8);
/* cli_putstr_P(PSTR("\r\n\t (temp) == "));
#endif
/* cli_putstr_P(PSTR("\r\n\t (temp) == "));
cli_hexdump_rev(&temp,2); */
hfal_hash_lastBlock( &(shavs_ctx.ctx), buffer, /* be aware of freaking compilers!!! */
// length-(shavs_ctx.blocks)*((shavs_ctx.buffersize_B)*8));

22
testconf/Keccak.conf Normal file
View File

@ -0,0 +1,22 @@
[Keccak-224]
algo=a
file_0=testvectors/shavs/Keccak/ShortMsgKAT_224.txt
file_1=testvectors/shavs/Keccak/LongMsgKAT_224.txt
[Keccak-256]
algo=b
file_0=testvectors/shavs/Keccak/ShortMsgKAT_256.txt
file_1=testvectors/shavs/Keccak/LongMsgKAT_256.txt
[Keccak-384]
algo=c
file_0=testvectors/shavs/Keccak/ShortMsgKAT_384.txt
file_1=testvectors/shavs/Keccak/LongMsgKAT_384.txt
[Keccak-512]
algo=d
file_0=testvectors/shavs/Keccak/ShortMsgKAT_512.txt
file_1=testvectors/shavs/Keccak/LongMsgKAT_512.txt

View File

@ -0,0 +1,7 @@
# ExtremelyLongMsgKAT_224.txt
# Algorithm Name: Keccak
# Principal Submitter: The Keccak Team (Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche)
Repeat = 16777216
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
MD = AB17D18D23C633D3E597D3377E3C129DB8C856D735C95A3C31EAA660

View File

@ -0,0 +1,7 @@
# ExtremelyLongMsgKAT_256.txt
# Algorithm Name: Keccak
# Principal Submitter: The Keccak Team (Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche)
Repeat = 16777216
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
MD = 869C73CA3D81ECFD5EF69DBCC94DC9B76B6E3FBF6388B589D98D6809747DE0E6

View File

@ -0,0 +1,7 @@
# ExtremelyLongMsgKAT_384.txt
# Algorithm Name: Keccak
# Principal Submitter: The Keccak Team (Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche)
Repeat = 16777216
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
MD = CEF802CC242D16607E5777A476AAC9E9F5EF2EC2FA031FA93DF07F6DCD9D9C2A00C93F673EEE78B8257D1DC46D275474

View File

@ -0,0 +1,7 @@
# ExtremelyLongMsgKAT_512.txt
# Algorithm Name: Keccak
# Principal Submitter: The Keccak Team (Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche)
Repeat = 16777216
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
MD = 0F22A97E694C2032BD698E63FAB13E741CE68BE656C00AA44EA27DCC98AEA05EAE18C903BB3A0FAA4745AA596FF6EEDBF7A94F22FB350911DC809CE8BD0F5F2E

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,305 @@
# MonteCarlo_224.txt
# Algorithm Name: Keccak
# Principal Submitter: The Keccak Team (Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche)
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
j = 0
MD = EF114D0B5E3AC3647945102C60482609B743C740CCE6F8801A4E1AB6
j = 1
MD = 55680F182C7500A1AF83C2BE5E6F54D4541D41086EBC7C485B710AD1
j = 2
MD = 42D93C7C36577C96B942054A28B58688764565C3FE750DD1776CD1F5
j = 3
MD = 2CA4859C90458D68442321696601D41FE98D013D1B194D9BE70C8184
j = 4
MD = 2C5BE0876AEB9C02267D4E90D350812E2C113EE792804703F9D360C0
j = 5
MD = 5014F473F6B47B191D843314AFEDC465B4A857869AB0A85A9A848894
j = 6
MD = 9A7C868F2796C4CE177AA966280B7D56E02BA74A2A69A477A2509F1E
j = 7
MD = 0C603525BAD1FE46CA58568A4C403B6DC22C8C96C19B0DED8F9638B7
j = 8
MD = 32C0D83F1986BB2C605ADCA353AB43EE7D959E8A70B8A698B3B680FB
j = 9
MD = C4AC375B3361F3553FAF9E008AF42CA879F0352560ADC451BE8F8916
j = 10
MD = 5349B1BA3689A5080BA994A1755F51668E43A4F6ACB01528C38278E1
j = 11
MD = 4B49B34ABFA8A77FA0F7A6DE3F8565BF5CA55C857729C1089D70A2E0
j = 12
MD = 6B10618C610C124BA6ED80DBD75814F8FC1E3B1F0396B4F710E8A838
j = 13
MD = B7A97FE26FD68AF0CBADB3659B7DC6B375F6403923ADF382B0DF3D46
j = 14
MD = 8E91D1AE196B5CC3E73191A6063733AE230F2346A5B00A9C8E00C9D6
j = 15
MD = 4FFF5C95A0F8B7B2D3EFCAC8487D229FD7D51985A98D29A329865536
j = 16
MD = 35F512258778BF108356794C9A97C676730D2FC5FA0ED46253DCB76B
j = 17
MD = 290EEBA37BFAC2283875D65C36609A855795DDA376A5B4B1798B1D96
j = 18
MD = 2D9CA70A43C7D27F51E5BBDC8FAAC928E262A572E37A7846E7D61768
j = 19
MD = C5F2EBDB854DDCB78C694745616BBF30ECFD4E63087EBDD1A4914A56
j = 20
MD = 3B77D25CA9169D56578054B8F76D0AD7C788D91D0BCCAA2C2CF407ED
j = 21
MD = 9F266D5284AB662A86AD71A7F22C04C176077497D5FBC7CD35590D3C
j = 22
MD = ECFA12BAB77FDC8F2398F0863BF2B4BDD406B1022E94719578D6B1A4
j = 23
MD = A3D252C96F522CB5C17A02FABD1322B0EC25A78F18174F16B8DB1332
j = 24
MD = 20DB47420D353EEEDB605D67639BA8D69E73D1530C4F06431F197736
j = 25
MD = 556EDEA803D20FCFBB0FD5896B1564A6CE3C293424F2F6E3BAA5ECD4
j = 26
MD = C7230F67B656CCE6F7CD482A0ECF673C35BE26088094714CF3868572
j = 27
MD = 812A152E65A4683B8BED04F56BF21E06A36FC8195651F4A553FA81AA
j = 28
MD = B36557813DF04B296DBB54091E18841A674A067B7DB9F81130D6B041
j = 29
MD = 781EBDEE2A98851F4AF2BA8D73E40934DEF046F4174F105A9988F8B6
j = 30
MD = 11FE19F8037BBC360BC5E681ABB5008D8A3F40BA4EFFEC4E3C32743D
j = 31
MD = E7D8C6C29ED8E1DC952ADBEFB7BB9E8F5DB74C5783289630D467A96D
j = 32
MD = 9F1C982F587517AB40B2B9514A9CD3F5F7BE2FEA34A0F8C7AAE5365E
j = 33
MD = 246FFB8618864676B120F111C78272CAEB0C7E42C64D321638C858D5
j = 34
MD = 0FA3D2821C0169F5F91148D0885E87E7D2DC8472F964ECBADD1F8DAC
j = 35
MD = 1D1F1E192280216E30224A4669F811CD0C8CC4280555CDAD23EB9FAF
j = 36
MD = A485C1D1F88CAEABF37F46F9BD81895AEC1D37234B89F5156C3A2BDE
j = 37
MD = B64BEBE966A50DAB91566410B3E455BE7F3257D724B21FF624142DE9
j = 38
MD = 7CCA9A3B46BC0C7FD00B2429CA77F795DA90F854027A39CD2AADC780
j = 39
MD = 5712A54074E2B3B0E8993CB34D01828878C0310DB436B36B64756A24
j = 40
MD = 5429020509599166384530ED4FC02B70D909CC7069C35AA04F5AB586
j = 41
MD = 198ECCAB56DED0AEBA7F39FF5153DDF83643E6AFC1B7CC9E7D4C4D62
j = 42
MD = 1106FB9CD966BA7FE48B69EF7690175D906B8181169C6D4D2464F9E4
j = 43
MD = CEAF56E1F7B61C71C6A8FD816383D88B3676CA309E36775E38193805
j = 44
MD = C820FF379CDD76FB5CEDA9F970CD68BAF8228DE00C57FDEB143E888B
j = 45
MD = 81AA65F26EB4E49F0F73CFE23C86A277C9A8C8A21F8DB2EC57AE3EF6
j = 46
MD = FDA21077569F91F50A82C1132DC48550BCC7AFC882C639F9329D64BF
j = 47
MD = 0C1F6EB3347B31654191277FC93A1A269BD9C5722AC384768AEE9E88
j = 48
MD = 613EF6BC627734C13A753918FD0CC048F8E430E2EE4AD2C186784D2F
j = 49
MD = A490FA9FA1A78FB0F3C65558196253E047362ACC5D9C009D978B672F
j = 50
MD = 94106054A666B6A531A873B3C4DFC6BDF1BD08D00C3A3AA309E68AB5
j = 51
MD = 60F937C760E743919AEE5A4D42B885595D4A989BDC2CDD6755872CE8
j = 52
MD = EBDB70A35D03D46657F47885095AA2FB1FB8DBAC64343E4F31CEB0F0
j = 53
MD = 6AA424A2AD297DA1FA9FE6B9B23AF9D7431EBA34CB5A42797FB30D20
j = 54
MD = 0455B13802E37589CF563458589D5427B6C81248C6EE73680E20499A
j = 55
MD = C21BF7D364AB5FC61624021C8339501A0DDD4BD57A27E232D8C20A03
j = 56
MD = 833C7514AF3260B38593019F064F71674E6ABDE61E394E2877EF9664
j = 57
MD = 36F9E0849D59A530E56C3D505D5E4A192796C07BC90D9FD92E3590BA
j = 58
MD = B14486770A3C59708B37E4F61EDCC95C9CC54223129B3F458B8E3F30
j = 59
MD = 699B4B69F8FF27DFA783F4FC1E07A6EFAA6BDAC99034E6BA66B03FE9
j = 60
MD = 82D7742EF0302FBC52E7EA7FA5A738BFC394EA83853D47D7506652A6
j = 61
MD = 2253A5EA6DA06C26732F4E913360D18AEC210E405E0D3B50BBF0F494
j = 62
MD = 304A9044950DDE97A5A360516906039C97591BEAC3B66ACDEF96C299
j = 63
MD = E505A037BD612982895A1C694A08CCA023B37785F38DDB5FDE5F4A92
j = 64
MD = C25E57FFDD3D78D1280087AE544C8374CCBC09CD3D76D29A0AAFFE14
j = 65
MD = CFD609316A524D04B660F0693D012C6674E2FFF3BFFBE45AA200B47D
j = 66
MD = C92EF85F4DFEFF51B0485335E10AFD6F23CD45DDEEB089E9D0371DE8
j = 67
MD = 4284F2969542545DB7CF8D14AAE41E38BADC6685A4ADD1A7C0D8A1B3
j = 68
MD = 80490B80159C9AC1B45A6F6ECC1C88FE560FC5B763F28EED08AB245C
j = 69
MD = E7110FE5D0D5CFEB7DCC66CDECE5A0C0C085415634832F1BCE96718B
j = 70
MD = C8DE55663B4909793C76B70F720EA09497629E3A16345BBF180D6F0F
j = 71
MD = B974767980D8FA14B42E5D7A3508CD716EF6375419AC7FC075F0997A
j = 72
MD = 14F89E23C012A587E71F2B0768D8C6BEEEF11DA8F4113A1868E68427
j = 73
MD = FC76FA1B0273094604D6898785A20CEA193CA86C494D5CEE3BE10546
j = 74
MD = 9C2F708D217FF127E1B619AD849DCEAACBC29F8DD73BA40C96FF956C
j = 75
MD = E2A40D11C5A5AF157F5B56A393DAE61295864DA8EFF62FB234D5C5EC
j = 76
MD = 3A1172CA1DC2771B020C4C39D0E98EBF16E8E7A8BF9BA3DF03FA7BDF
j = 77
MD = 103C2FA4ACAB3D283D79F9F990017F9DA8F5E5B9918A5C8323B711AF
j = 78
MD = B6001F6799FFC5E2FA257473717BE68E6F5994D3FB8519E19635FD2A
j = 79
MD = EF09B1D548F1DD7494D4C3CAC44EE036336199343E1E9F301929988B
j = 80
MD = 60359F121D4594BDC18F2294FAF1C9A072A2FE02E3D0CE2041A032F0
j = 81
MD = 49375AE4B8FE8E5909655FBE9875EB5ECA267F62B5D420B433E977B8
j = 82
MD = BA8337E9A121E99849CC04B3EBD8A2A9D0CB23CDB9D9EC15230ED383
j = 83
MD = 7C740E9AC32C2B74A1868865A5BFB858DF8A2EA267D0ADA2091B54D3
j = 84
MD = 57BDB3AD336252152B136402599C4A0CB6DF626E759A45C339439F37
j = 85
MD = C1C732CA7870864D4471E3A6EB5520F747AE6F95ACF8102DBCC6A6E1
j = 86
MD = 9752355D60CF37DE331A8DDB70F78CD919AAF87148CDDF56202B59F2
j = 87
MD = 9B1B5FB24806544EFDDB6BE4B65C2FB6FD17A0F75F3FC0CC0AC3A47E
j = 88
MD = C650C5557863BE6EBD186BD5EB13E8157FC664463DC73DC1B9CE9E5B
j = 89
MD = C5943CA4CBA8A1AF649A1809C464C93A2F94AE75327674345299A3E1
j = 90
MD = C3A9AB65DCFCDCAD4BB3093B74E8D95D154FD6C1C28B1A511685D605
j = 91
MD = DDAAADCB4E62690939DB343DD9CA876B5EF2A220BCA1CB86591A2742
j = 92
MD = C7893D28F4E57AC4EF8ABB2C3A70199A90DE7FDB180634BC2A9A0AD8
j = 93
MD = 8AF573936FB6CBD42924249617C1AB14628162E62CA70694B7A0E5D5
j = 94
MD = 20ED177851CE64E4731A3A8219FC62F2D3C3A645D48F154B7E7C1DD7
j = 95
MD = DA13094C9C231101576D0E3F60545AD4EF46CE754AABF13DDB9E532C
j = 96
MD = 8B35E233D37AE3A728B988295C5DE4A1B148DA9137935AE57F51EB35
j = 97
MD = EAFE0CF967F3A643E68AA08C5821684651C1FC2849D092CD26A8FC97
j = 98
MD = B9D96F14D9FA06B0309284D6C8070363D0D38C139889A461C07E235A
j = 99
MD = 89965DEC224F80C62BA360BF6053B45110124B063A1E38F712EE20D2

View File

@ -0,0 +1,305 @@
# MonteCarlo_256.txt
# Algorithm Name: Keccak
# Principal Submitter: The Keccak Team (Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche)
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
j = 0
MD = 96DC718815408516160BB7E5C270EFF1EF7FF455CA4CD604823F18C6040326D5
j = 1
MD = 46EFBD577B845887D8C3BBF8AF33ED6C4D16D7F78A0F1F274646BB239CDE5C63
j = 2
MD = 4F219E44B329E045B5796316FAC3C7D081F83F5109A5D3C04D04C6085ECB99CF
j = 3
MD = 740DE881E12657CBE15FF9BD31C35B1B58F399D3A4C6A95C9732262C9CCAFDFC
j = 4
MD = 53180A5CB86CBDFFD5786C7DF4614D6B5917212AD452B4649C58F52EE85618AF
j = 5
MD = 05B20D0D8D0AFFC4C193020E32E98662BEE09F8509477001C47B31020033A7DD
j = 6
MD = E79A28614C4DAC49A385DBBB94868FEEEA14144DB6B56EBE8706B42831D14373
j = 7
MD = 4B8A44425A1330D72EBBC61C1A729781772AB59C8BB66CE6F3AE10857C63353B
j = 8
MD = B9715C164425BA78D3874EB7772EF46773AC63403E0BC0D7F337BF73D4FA85D8
j = 9
MD = 98C5794C978BD33E7A73E5B36477C52EE9CD94C4A4DA7C7778D31EDC5BF03B50
j = 10
MD = 86AA9F3624817BAC95C5627C517EF1B64C30F320F715860A91C26B068A6E76E9
j = 11
MD = EC0FDBCECA3330A442CB13D734CE913290298C2DD1ED8F751A641D57C53F2A44
j = 12
MD = 0FC37BA7137D76F39A08E6A56808CF12B82B4FF8415C3CD1C5E84BD1E849EC0D
j = 13
MD = 0F82715C0C24C2D866F6EAD89A180ABF672AFC4F2EE6164ECC9D2862D5181B33
j = 14
MD = 523FAABE32B941F88E3909C47926AA521121B4C0D38FE5E784999DE072B477F3
j = 15
MD = 62666A58C27B43CE070AAB888D2C885A6722273659D98DBC07EE9BB3E396279A
j = 16
MD = 0A9430E9A6D90C693A3042A6E58D3B81135D9F15861FF2C170DB08BB2CF7BDCA
j = 17
MD = 1BA3007DA71F7B38C46D3F98F4296BB9F2D5427EEF38344B3E33391117936FA3
j = 18
MD = 201D831B936EDE14727AC880F5626D2CF15ABFEF2606B171716A562A0B8E3A03
j = 19
MD = 5ED9271873F1CBD90E1E8D6D4B8B536A02D002666262F3094587CE1AF20548B7
j = 20
MD = 099332ABE9CCD2E72A03BDC6084B0639960BB553AE997C59A1F8EF0E2898FDFF
j = 21
MD = 09111E83CA62E70A11070D6F33E8A1EAF703BF7EADA400A049BC130781C029D6
j = 22
MD = 52A995B45CD1033FD11BCB38D5F5CB367998C0F1B1EFDD70F691862A2F044135
j = 23
MD = D32A226089AEF43D1B8C3A5A2C3A8A040F633008148DEE58DC0A93A201232C24
j = 24
MD = 37B6AB3A01A3CA3C939AF0CC99CDD19694AB4D98A1D7590101F426339D3319EB
j = 25
MD = 8F1C265D1518605F08EA1A90C49CA21D417E0F3886648FE50F062070DB822EC1
j = 26
MD = B045EF3B0C1A1E1A2554ED62A3210168D41D7B20E2404742EBE8EA45079E983B
j = 27
MD = 431D940F35D9BD52E11A5EC6F8EDF55E5C9A66BF20E3AB7E66960565926F02B4
j = 28
MD = 7176EDDC2315F0F3040F23F2EBA678BA0410209688A7436590157C8EDF5D8DEC
j = 29
MD = 9D8703540F4E88F4F7ABCEDDB5D3A0E5851774DE2B8A9033FEE7E1253A47C988
j = 30
MD = DCEB13B28A003F9C6F5A32C00260B87D3D6EF7FCE971613814367715BE21572A
j = 31
MD = AD820D6726D4E5D75BD2E696892B2ACF7AC8310EC2D27A1EC4835326E628CEB1
j = 32
MD = 6B80B99B21823827F03F4E4EB80F95B809F05B29EBFAABDE4FB31D7FF337BC9A
j = 33
MD = 352E60614BD57D39DC1A412012D56D1045FE91063AF4BEBB150B83C030EAAD9F
j = 34
MD = A1588950C19D7161CBD1BFDB813459DAFB6BCAF18162560B4478CE99EDBEDF5D
j = 35
MD = D797A367C4DEECDCF6E2615586126C1797D9D5EDAB6510504C6DB21F3418EFB0
j = 36
MD = A1ECF7696DB53498EA07195EECA6071B10F45001CC7BCF5C3172029A2BC25FEF
j = 37
MD = EAB7361FB84944715FC9F177840DE90CFC69B7DD74E6A4C3DB1103D5E9EBED98
j = 38
MD = 6D805BB0C1F45EB177D80BB1371549219EC9C5EA68DD226E80410E97A7B97909
j = 39
MD = C6E3F46425D45A348CDEAA5C25241398D62DAF1F45E4BADE4EC98587C291C2AD
j = 40
MD = BB5CCA581203C9F2CA4D35C4083EDA3AE780E71E96AA0537692C920E393768B3
j = 41
MD = 3EDCAB69CD54B9E401C1F61FF76A0E4033F13512254D0C1F29F02D98B3EAFB4E
j = 42
MD = 723590F5D2E89D9B217B07B8FF1B149FF95A7342381C88983BFAE40252FF2137
j = 43
MD = 680326B28B5ADAE72D01EC6C06461077703A3EF7BAE6F595DA8FA041E0DCAD75
j = 44
MD = C6479F09B30F78A214095CAAF676ECB5C2E6A2F15CA26A3FDE4DE29F30BA1519
j = 45
MD = 733D8178CA754EC84ACA7DFCD17907FC23EEFE7F384B35A0D02E53E22820A363
j = 46
MD = 79408D5E18D7834AE762B54D4969C4B14818184EB20E6550E07A471A06E269F7
j = 47
MD = A79C8D5A94214EE3447DD60F248A9E56EBA674421EC706EFEBFC997501FBEBF7
j = 48
MD = 69AE1537B62ABB42CC9F6D4156A61E8C3FDB83655BFBD27D3C16DA71346D76C9
j = 49
MD = C3D5FC08AD31D1B58B66D93318827F1C4BDEE77B9DD670D9DDBDEE72C56D21E9
j = 50
MD = B8657E2C9D8EA1CEC9CB1DAAAA5884A1F8A2328F4446B3BD775BE375B122D426
j = 51
MD = 5FB921BF349D6D002375B98A04989D29A527D8F8278E1BEF097000999F81ED71
j = 52
MD = 5C5371143898E1D4636C2997141C3D2664ED52963F0B7A014658829610E1B699
j = 53
MD = 045B9E962864C84411FAD905BFB83AD6AD47F132E1F71151D715C9A1A81CC42C
j = 54
MD = 4F732E2570711679EF817980BC4D2592D4370E35C7C1F87824B1314D08389564
j = 55
MD = 2FAB0BA32819E3073663E5637D1561F19A1818D6BC88A91C56EA1656CE260533
j = 56
MD = 53BBFBDED8300F4543C9EF54B3A71461F6AE62EBD8D5119FF9E69360F6FB216F
j = 57
MD = 62BEDB61EF90DFC662736E50F415224717F196D5791C2D6CC6F070F17394E93F
j = 58
MD = F65122D16FEFD0FB32B70A2B251D39CE0A90F5DB11410BB8FABEC9ADF3A15042
j = 59
MD = C2ADDF5A09E35CA317CCC853A13A25CDFD0E2BA6FB293C0D09BA383F5CD30048
j = 60
MD = 45ED6278527A5B1C20BD355AD101AEEF76D8D923F041F4B2F540D9E32BFBB0F6
j = 61
MD = 2FDF29BD6317A02CD97B501C5E52BDE685023D38C290AAC02A074C2714672CF1
j = 62
MD = CAB55E1B2478C1DC48F72F8E0EAAB977EEC667FF2528830915E99EA8F9B36F68
j = 63
MD = 880FF6E2D612890FDF2A831FA481375557C7D6CE11DC9D62423ECF618D03099F
j = 64
MD = 7258C3EFB4C6F3C163681A5DF7906292AA9D097C0DFC44ED0A6EE90557A787A2
j = 65
MD = CFE7912D7A8D5F83E55C4783309DA3BCD33BE70B7CD23E070E5125034EC1E9E9
j = 66
MD = 82B19CBC3097D0EB81AC5B933FAEAE13F9AB26614E79B94F90BFF2CC339ACCB6
j = 67
MD = EBDC22811C87AC5575A8A5916968990D316FEBB11BB95C2C2B0B3C50939465AA
j = 68
MD = F699996B52F7484922399DBD9DFDCE7C94400440C9DB99DF771F275D10829F8F
j = 69
MD = 007BED83B83D45F1B4D5F40664D14A57DDB1A0E59E84BD9AEE88E11D7D9952CF
j = 70
MD = 50C97A182A98D7DF5DC33B5C2517638F841AD3E1CF0B9C9AC7A0B9B59F4F58EA
j = 71
MD = 638F58D218AB1F4C51E26D834663D82E1F58526AAC629129A9CB6C0695CB9F49
j = 72
MD = FE498C8359C8CEFCC866A21B69509BABF82629B962267D2977B4610E16C7F5F1
j = 73
MD = CD9B1AA253D64EF2D031C4082CEF60487264672BBDD2DC62F99C9EB43A90E2B1
j = 74
MD = DFA3FA8A691E332BD36A03542F3D4D039490269F6715809EE579C782A1F3581A
j = 75
MD = B7964AA4F4B677F4D87C410CFE81FD7A565ED6325F7092AF8F894D3E6F2135EE
j = 76
MD = 42A2A8CA895A5EAC038D8EAC547D98B6113F252EEA267BB869E65ADDA0E8829A
j = 77
MD = EBA418D9DDCD9B34B69DAE640806684EE8A7CDC5113D7533ACB028BC85813AF7
j = 78
MD = F7804F2D93B06B579D271932034FD8C5E5B7A7D266FF7412A2AC0FF487CF9C05
j = 79
MD = C5440276B80D5117531F41D5ADE82CBFA9D4ECE9F06E988D01AB2749F266E2B3
j = 80
MD = DA1ADC2819C7AD35389FCE5B199E8EF3E6DE0BBE1111F658E0EC66B583F34E6A
j = 81
MD = D0378A08148153A0A6F37CB5EA9BADFCD16246DAC188C967F9B248BB76AC0756
j = 82
MD = 8DFED8F6C2727B63B7E3C1BB52E1965B184A21E2D1890BFB91503852D5434448
j = 83
MD = BA6D8A6E0DD30A3773ADDCF0E75C423EDA477A9F49C6B7401595064A4497D3EF
j = 84
MD = 6ABE21ADCD39F37059153CFC38DE5F9A70DAD9A50C9B68BCDE6C164C3621FE1D
j = 85
MD = A2C30297FB7CBECFF6B59051757BB0B6B3F8AE868BB4F18C4570A35615892D43
j = 86
MD = 70D6415736670C974E7AE1B0DCD9C603824B41FE57E3106302D5D7D625962079
j = 87
MD = 046180A281BFA32F45812AFEAF8A6423D393BA0C5C62700844FC3C27E78F60FE
j = 88
MD = B53131C5DB2D21683DCF53EC0F7772178D21F04B6D4FD1ADD2FC1759CB9E4F74
j = 89
MD = 006E40D165A471A3E2A26E4D48C00DF8CAAC9FC11028445A9E72ACE9F0DEE26A
j = 90
MD = D7BA187B0407D2A6A449974369C4BFB63C3FAA309F828F1DF2058AB152D3EA6C
j = 91
MD = 2B52EE3B1043BD564560DA3670DFFFADF15753747A6E2B4B5010F4651415C1DC
j = 92
MD = F3ABC4BCF8FD3D4634B030B6B2840A8BE9F1EEC7B81E8FB6C2828A9DB4BFF51A
j = 93
MD = CFC0B2F8B99275565D5BAFAF758F6433C404903B1681E45D99C9FB042A0967D2
j = 94
MD = 26553D0232A6B7EFE2B766E18E531A6245C04DC9564B22193868E6F6BDB57DDA
j = 95
MD = 774189794287EA775DAF401656B56ABD0764C2BFB3FCFBC229DB0EF5D5E29BD2
j = 96
MD = 3DD93E0704AAF271A35665C8ED2ECCEDBD5FE353E1E3DBA0C0BEEB0A3E98A9C2
j = 97
MD = 6BC2F2D453194C91D48C094B4F9FB0F97B3862F50616D0BCE7220A6E214858AC
j = 98
MD = 0783BBBCE32900B727D1498CDBAE98682988D0BB3E8BD2E6CCED0750BE47814C
j = 99
MD = F1F27B5EE3065374A48CE29A6F80CD85E67AA75F45F61CF72C32BDA8AE92BA11

View File

@ -0,0 +1,305 @@
# MonteCarlo_384.txt
# Algorithm Name: Keccak
# Principal Submitter: The Keccak Team (Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche)
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
j = 0
MD = C62830A53D71374CD08A8CA3FBCD54841C8AB8A27B7398B73512C11FEE59D473C0794276E617B65C6CD35DF02AEE84DD
j = 1
MD = 0A0450E7E154B14FB3E9C559DF696CAC6A663EB3C5B3ED7A932E7BED032C6A30938D95FAC5036A43497839261FCA6AD0
j = 2
MD = 831179B1A98C9E63B427875FB02FA2A8F0CE6CADA8DDB78224A0DAFB81D6D9ACBAF6CC9C1A812C20FF4E950CBCAD7ACA
j = 3
MD = 31CDD8DCB7E120EDA87F1482494965E897BDA596FFD8C67C9E5E447EE5380ABCF084767B68394B3CAE8BAB4C1074A44B
j = 4
MD = B7C03C3B570E7AC2D8082345B961742F38B7740776F5417AA2A997D8C26C461ABED91D333E4A22C8A09C60850C980489
j = 5
MD = 14EEED0B459CAB55223EC189F8CE5F803D721E0C4B5DA5C3ACF7DDCC430BB610B13D4702B45B1E45A5D5B93BC8F3BAAF
j = 6
MD = 7B91F57BDB4506DF94FC55CE4537F421A9FB51ECA561FD59295354747A2845EE48C02CA89E1E2FC94B75FEEAE28DC8BF
j = 7
MD = 9D1DC594F5657EEDA5667C55DBFD4BCA1AA923DCA7B8C903C766FDE4F5EC8DBC801775499B88A7AA504E2EB0F30E906F
j = 8
MD = BFD5AAE62F474FD511A73AC56F4723B9A8A4BEE2828082627CBA00DEFDB736355901A5A67F06BEBA6ADE78FDC0015401
j = 9
MD = 66918B59B5222A80D87AD2366CC8C2B5B6046D6471AD919A0CF31062BEDA6323943CB0F069DD51727C94D391B62A2652
j = 10
MD = E4B3BC58AEBF7A4C44673AD791A79F9CD6B54D69D6FEB08371881F40093491A61667FBA32F6AFAD84AE6835AF5D3504A
j = 11
MD = 3821CC34801306E6CBA7B80E382B95E7FB31D16C279CFC0378E42D995EFB045C12F294B30B3F9777BC53B8D02B4A467D
j = 12
MD = D48B1C9CC9FD31448F195D004B9BA32EC3DB61750FF2F6037BD419715678C77E227BC7DA55A1CBCF96C1B5C60EDCE7E7
j = 13
MD = 5879FCAB050133935A55DD525F30BE409B67628FDCDBC8FDC08A1175056700170F26601413DF423674CC41AE0F96EE71
j = 14
MD = 8743EE9597D813C5DF555D6847ABDB76B3E1B82B50D91257E37D141234D225E7FCAA2240E2EEFB0ED4DEA023B71F4B52
j = 15
MD = 876B468DE37B35D0C57E5E6CE08DC923868575F8A108B76F6842E2019CCCA7112A4916A4813C6D3CCC808F28AF2EB94D
j = 16
MD = EB02078E1ED139F8848FDD20F5DC5759B45432CCCC038CA93FC4C580D8E67706A4CFF70B338A9F6E00FCF53D692476CF
j = 17
MD = 5EFE1235A9011AFB037067657FE74092F5BA1ABE9BBF0C7C607D92EF7B1D2AD11DFB002DFEB69327CBD2C45BB9D780B4
j = 18
MD = A0BEADE02CED06077E30A2708F232CBC2DD5DBBEC8DEF961104D10B310151B7B700B20714EE6BC7E5D678196BF4841E3
j = 19
MD = 49467628B92E2610D4CF04E974D388188D09490E8442BF1CD2EE6BADE3C6EE04909433F2C1B304393825444144AF5479
j = 20
MD = 6E9B82231D2538951EDF29361151E9568DC1D2A5C59D348F36B21BD1AF924C4B6D3ED4C075F949E13F31F487E8B6D5F5
j = 21
MD = 5369CC0D1EAE68C1DD64D25A060859930F48264DF41A9AB0DD013B330D042DAB3A163CDF48DC629918087548EEDFF579
j = 22
MD = 6EE83A3CCBEAB7B6DD81CFD7603836E1C8CC30376B030B645F0B406AB975025755FC0250EFC8BAACC4FE3445BA1CB48B
j = 23
MD = F5A1BAB1C63888BB4162F141B0DD7528B58C73CB7D41DC7426FAD92E11D58805D40377F9D8FDDDD461C2B795919C465E
j = 24
MD = 572886A9D859C9A812B4BBEAEE9F4B261D6BAEE8B1697059CB4C3D2A23908688BFC6CF330C69B74694CAFD744FD6E205
j = 25
MD = AB12D651CE43F665E65E293584D25FC03C1CADDD5612BE712B2DF71F07E9D2BEFA81935B23700EB44D2F21F7FA542958
j = 26
MD = F2E9EAE7A275772B378AC2E8F2EFEB8B85BB52B9FE9A573F1AEC13CC7930B3EC753D2007681C45A6EA45F36499A8511B
j = 27
MD = 32AB50EC19C11BB33CAB57D22F27B8C9E41D0BCC6B1DDBEC9C431D476D0C9926412115C3DB733CBCC5BAE7E95AB3C8F5
j = 28
MD = 13E229A04C10174927E0C4F8EFC33F6971A2E4A379F6E0E3242F3788A8D56CF82A1FA2D88DD60E78CB8675937CDCBDB2
j = 29
MD = 459A8F21E1B5707B21B111E471160E5F8266B767A9DB00F7E02F407A497693446C25CF3957D1D32E2AC48A7F72D57B1E
j = 30
MD = 14CDEDFF06ED5F7CD89BA5AD0D7F5E30E709A498BD913A26EA2AB4BBF15ABDC50FFB902A439D15AD3F0F26CFB33A8D6F
j = 31
MD = FEB06BFE509DBCAE5F9547835E5613C322B977FB2783EEF207264236E12635E08AE17A4E0AA19875805932ADE6086F13
j = 32
MD = 37F039719779AE73CD05466C5EF4490685B60792DFC45DC0CA3507A65D098903DB200B01A9D7C999E14078511C2F68FC
j = 33
MD = 0C8DAFAAFF3D298DE204F9A26012685EA59AEF8163544A793BADFF1A9D50E4EA27BD464EF715A9B498C73851E60E8FCD
j = 34
MD = 0498DF14727E77F319F5207803A0B3CDE8DAD720540DDEE5A2248A7A2458F9C25153D606FFF6390E9DB634CAD5777B2A
j = 35
MD = 3ED492AC51D9C86391EF901E66DC8049FDA9FEAF8F4EAE3DC501DF3DE7ED6390B08745A5C094E5F02011C2242C115F3A
j = 36
MD = 392173E75A104BC50429710F511A057942B5450ADE29C0329819E59FCADCCBE45135E51CABC67936E17E7113A27CD687
j = 37
MD = 154869BFFF5B932A02EB14362935E0A118ED4A4B3732AF36469AF417932B02C448BDBCB0C73C9659010BDA30F1EDD8FA
j = 38
MD = 9C0B495BF5C010B9AA0B7AE01DB1F5E2C4FE50784BC9CAD9344BF0A5564BAAAD57475BEA9D369575CDD418DCDF88424C
j = 39
MD = DD4642E334E56B00E5E689934830E1D8140AC2DA3918657D3ADFCBCD6FA9398C80C76F9733C5604FEDAD9AAD253BB922
j = 40
MD = 54029AB1F7CF93FD31DE678FCAC7402A8FAF8D9C0F1851D379071A3A3F6CCBEF8191086243418DB167DCC12ACF7E6F39
j = 41
MD = 98D7115FA0F6E2863A6161C1DDFF767660F6280C7583DC9DCD5F2270C0D758816C363B95EDF23D1FB27AA663F5F90268
j = 42
MD = 49806A583A8FB2C83A7C814533F44919C8113813B0993777B0ED2E17B2A24EB03903F7B88561D230B63D51FC25F59C1E
j = 43
MD = 515ABEAB5584029BD97EA5AE4734D7948C2584BF55406B644909F8739D70DBEAC619B6B6D784E171E8852605988563DC
j = 44
MD = 3C7CA8FE7225534C88F0856124702A6E52542BEA3DB4E63E41F09665AC267A44B1FE6C4741AFAF2E85FB8FDE5053741B
j = 45
MD = B7F9E749E1282AE2EE908C3B6521C8AF005C06B14064010035B534980854C89BAD085D794343BC69586990ED00625B0D
j = 46
MD = 1F8F0DC4F7C9A1171236428B8BC7D63694B6A1C459D66D08FCD4C23A23CC9F18303E5F784EB6272B3A998D0617BAB226
j = 47
MD = 352589F325660A52B490932364695AD1AC7B538A85E41FD3234916A53FE1A6374AA3A6C4BA1FE716463E623C4102110E
j = 48
MD = C8F46BCB154A4BCFBFFBD2ABB47FD1D509A1F9D2C5F3142738E2F59B4C9EBC9A05675D83462E5A649A8B482E8AA8E8EF
j = 49
MD = 945A29BFA0D534B25A8D219ACB416200B301D507401DA8CC0FD4F7C109A56DEEE9DF29B988E71FEE746FE88B43526D3F
j = 50
MD = 323C50D40D12B59918E1034D721EE41E4EF1521D0A50E1D617804B1208B0B416C8765915530EFB6DAFD5EF63C3A5F8D1
j = 51
MD = 33D6010659B3B8A1BFDAA5E213EB70529F759871A3E6CF9635DFAC77B3963A8A94105E28D76F5F22FACEA6C44D8B3490
j = 52
MD = C28DDC608AD8A13483D0089A00F527AAC07B1227BCC4843E7895F8955E5F812C0FBA761FBEC638CE504A182AE25AA083
j = 53
MD = 9D88825612B216C71D4CEC6D58FC9616544985E7EB1A1661F48A2CE4A73BDA6DA99C0DA795493798238D0AF648CF68C9
j = 54
MD = 3611D88FEC69D46DA735B2BD23E5E247DA1619B83623FB5913FEE4471F2455FDCA6C16C31661CA7362B911540D96B88A
j = 55
MD = 733A460100E5A8AC1FE492BE09F2EC5D43B6872A114C5870BFA48A5F8AC4CEE124918B8B4DE91377AD59B7CC5B76E55F
j = 56
MD = DBAF59023EEFA658B8287DB2DBEA36C8B4219583EFCF1016866E05BF1BCAA4D463AFDA58F88AB1D2CF8FCF764F9BAC50
j = 57
MD = C0C020E4F172E51F677AA4380ACF51B6892C018286A83E2A4BA026C2139A552B6CC303F158E30D1B76CA630CFACFD840
j = 58
MD = 889911D660DC08E77809399CF85E44D2ABF926C0D9C2EDE27D12272A95F836F0BAECEA065CA1EFDC3B5D1B6F4E788C5E
j = 59
MD = 17559DA05FD2FF74D856E5503E6565A77D6D97542A87CE37062946727895638DC1F202D1FEACC8F8D763F121988F01F5
j = 60
MD = AB7C432FCF84AF60E5E6A51F761ECC3DCBADC55CB33F68B3EA3112FC28B596BF89E0C06D68D4CAD86EB30613EA3D21A8
j = 61
MD = 4080E321EE7502633C0FB121023700C631BA57C476C38453165BBE508B0E3A9E007DC66E1880E324B6C92B6FAA119078
j = 62
MD = 23987F0965D48B3A04F3CC3D01490289BDDED1D8D5782CC061DC6D6591ABCAB0C0A7AA67E507EA3297AD6601B89BE6E3
j = 63
MD = 969EECF3820BCDEFC6444E8E493382320976F8B67ABF1FAF690E3A4E9BDF7423B0E0971C3FD4169B5A4E6D2DA54A89D7
j = 64
MD = 8A7EB758947D90FA39F823963AC4CFA655E1B49471E2B022298AAD12DE432649243EDC48288342736F41642B42AB6CB7
j = 65
MD = 4E555CA1FC0DC1D11463367D62D9EAB7523DCDF95B4B6AFABDA47593A7A72DAD60AD3EBE7130CA932267B7D2C4FA31D3
j = 66
MD = 9294FE0317E017E04D670A4B5BFDE5997638F6112A7C3AD4E9A784BDE29C99CF9D0E05887544CD9EB30F7306823DC1B5
j = 67
MD = D12C5C81FD82D0BDD8FBFEFA0472382386D4EFCBE843EDEC786C5B451053831C3A4F625430FA7CFE5B3413483A84C418
j = 68
MD = 6BCF0391B10D9BB0A6CE12EEEA47006FD67B8C4F60A201E6B0094332C3AAB576087A5C03D7A6C4FF0123F194F024F884
j = 69
MD = 79941DC9C3436D7A1CD3388FC3D7F0C6717336F8980933683156B82F8B64F2BA99C22561B885EA5C79980465EE617558
j = 70
MD = 03E82ED3995C64E71E52266BA501C95C6625BE44B122097AEAD9C46703937D656C9100612A182D9266688290D86D609C
j = 71
MD = BE2AADA12C1B8E14F67B3FA6494063FB6F3B933510DA106B3C25CDCBC121548435C3409210CDA5C7A0C98B41ED56F154
j = 72
MD = 70FB439114ED31703F3BAD40F26F4F0CBBBD5E8FA1534033D62DCE1F4F30E775CCCFAD02D97903D9FBDBC5D5A47E00E5
j = 73
MD = 33650574CFE71803FFA444ECDDEF152D1C51ADF25CE5C7D8F01D0C0B8CCB3F3CB3C4EA467AC714AF437A84EDB3D3C40E
j = 74
MD = 0580EA976F19020611D4C1A7E97960F18E9E747C08AF7B2C15BA17FF3AC59DC28B15A56511A3F6B54DB4643357F46904
j = 75
MD = 14858349920730F92EBD5F67AED6861605306758CA1B23CE0EB3C6167E5E7C4A8AADA35C06B8C5570316B1D7DC1586AD
j = 76
MD = E964A72FA8180FB69A90E00B6EE6811BC7A75E88FD3A94793BD39F13FE8AE3565099AF1779271F58D7A15568D898C544
j = 77
MD = AF508526202B27858B95106B72122B10B271D202E03D1F853ADB950F62AEDE04D040E4E91231DBB77C3DC1539B810688
j = 78
MD = AC6E8A7A4E657E28C8549B60E630913AED50249495F0710EBADA75564B5E4A9A8FDB5FDE2C19254DD7D39F07E409855D
j = 79
MD = 4BAD5506CEED8F0EA2D5E37651F3C5F9BBE6F3D00DA2C5276485C986851ED474DD14BF4D61132FAF7F9A2AD1C449511C
j = 80
MD = 7EC780985C22EB0A3FB5061A26910A389A73021826704E2D4B780E757D4DB11BF0046B2F3444E5797CFBF7E8CC7BA31B
j = 81
MD = FACFF59F8B7D2B26A504943071CB250BEFDEF9AF1B0FBDDA79130BF3D21999A8DBF3999CF1ACA387EAECB9B0ADB83EC8
j = 82
MD = C8CC35CD69FEF5ED9A7CB9ADD0E099E8649C3545BF6FBC388BD290ED9DA540DB15B9318B5903C3D0827D0CC5B84C213C
j = 83
MD = 5EF0E067FB57C3F8149B2EB12198BE94680C4CC82DC4519F3A7A756AB4FCBED18836139582827276FCAE0B5BC279EDE9
j = 84
MD = D3D7F8B4983F0BBD63DA76FB77CD42BD4891AC3826E1E533B98E798A185BF52517D8084C14A1A509F5E06D16E71E3F85
j = 85
MD = E40C24DEA2833666960233D9EF00104441C8AC7193F1F0D956A403A953220C1AEC7ADB3A996DBD7982E46E130CFECE8F
j = 86
MD = 18CC3A15CFD4773D7A61AD23BB7BEB33EF21275B0D4093893F4F674DE5CAB86BE2AD4FCFC0EBC795D39CE8A25118AE3A
j = 87
MD = 68BFF893902D7FC70BBFEF9AC0B1359E7980D986ABA40CA66C8C55560972AA0AAFB47D46E7C9658A43F73EF5C9E50B8F
j = 88
MD = BA83F5E17A35476FC75E64150451AF56A6B274409C0D06F1E7BD5747A17C8931AD28282D308E608DEB7E7C0F5454CF75
j = 89
MD = 9CB2F7E6026C21747A8621B68C4AC0A196CE693BBCDA2BDC0B307810CFC1FC9D83913DF7D46318B6EEF74DC1B38DE85D
j = 90
MD = B6EE529E9A547B9D40A773F15DDDE18943F03BAE40809A29B714FC3784F581E0F9E09DADE3C285D41D159E2D09D97769
j = 91
MD = 9EE9D7E01F4C2431C9E346096AB22B2A4FE9F155C88C5E4D4D15EAFA551424FD5DA0C2EF01766FFEF2A1D2ABFAA48C65
j = 92
MD = 35D4317FB2CE046AFE60D069A67BDBC939A6E703EFB01F69F42C2F61C76F4D69396E5FE401750AB0A6C181D73D77D69A
j = 93
MD = 15E534E68EB967AF253F99F30F56E823D9AAD2F85E8623A201F49E67D15276D2A7EA48B195A82D5EC5F492A260E25728
j = 94
MD = 6088900D2DBDC176E5F2B6BEE06FCB280CC1266068373BE233F11F9A14B5FE66803C1623CAE12063D1F7CF1B547A8F3C
j = 95
MD = C710C6808EA46BA9EDF506FAB01B33998E4B2F9A699EBFADCD20F5715A2FBDE0E8C4D0DF0BD450FF0BDF7EF7B2C1EBAA
j = 96
MD = E387D6D3FCC622028C9075D7B319D16A75F746DF7FE8960F66C207C53637A44941C471F3635BA8CEA362CC97E1DA8219
j = 97
MD = 6A1D2F3E92FCDF24BC27149FA61C7BB098BC8057D1B7B74CB1A2F01094457F02307835E11749636B0F85E5154DE2CE1B
j = 98
MD = F19B87290BFE2971CECADA3C6CBE9CFBF9AD2D1CE5D5718BCA5CFC2E794081388F68B2C55E7B16C62B6F15F3F934C168
j = 99
MD = C1C338279D927E1AFF660AA511B78EBE6124E1EFC8FDBA74597195FDE92D442CBED61AB9E1DFF5DD3362CFCDAAA51BC7

View File

@ -0,0 +1,305 @@
# MonteCarlo_512.txt
# Algorithm Name: Keccak
# Principal Submitter: The Keccak Team (Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche)
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
j = 0
MD = 015237E301389B7DDAB954EFD690C0A7E849C475684062592B2B973BE3AC5B220D4C3EC353B17F1577CD01909B86CB89285E7642DDFE4856822CFA34F8319BA9
j = 1
MD = 1480310F6C0E5FEB84FE0AB33BB120FE685439CD4B4B9842536B079A098E941D1E84C3883964CD25CBC9106A7DE03EE2794A1E18D0C886FDCDFE28F692393DF4
j = 2
MD = 4A597660170C6958CEEF42FB443CFB71EE6C2955D19FBF68486D7A3F678EDF88569A16CBFDC099B699D832F904BB81FE15612D0D789AAC0CF753759E2C664ADC
j = 3
MD = 386C8103CF7C80C03743D10150DACB4A1119D0F9964E1D4EA9D1C9C8C9E215F9657818E608BAD190A2DC7B7675B5FA323D20078293E0019AB5405BB7102A5F9B
j = 4
MD = 59181BD3109ADB456A623FF787EF3A09D3886396AB0D71681980134BAC568A0C6265501AE356ED442C3CB3855881BB4D5317E6357EDB454CE59B5509D7560338
j = 5
MD = 549371737360EDAF15C1901E2FB31DCF0F2395233A1006C10B8FFC3AA1A55BA6E6D20D7BECB9F128FDD29B0F5D7FD529E54E9405FDB62F008ED11515F7A80D17
j = 6
MD = 9CA5B55949C7D4DC19C742BAF5911D5D2854CBC2B674F8962A0ABE50F0247ACD7F10C57B00E01798EDDA0D0F3906157BE99CEBD7EB879DCB89058E1511CB0EB7
j = 7
MD = 6FBD5786171AD9DC6ED0ED2B24C36A42C7939809E7311517FFC9C0F90BD6C6C74084F0AD7EB9BFD753687B0C3FCB25167D40574EF6B191B068691CB8F69013D5
j = 8
MD = 4E3D1F2D0DAAA3603772C77131836C22707ECAB174CD8EE7094956C304DF8C334C5A31B3E5954DD6A863E2C8B62585AB0FC56873E663747AD8ADC90D532FF7A2
j = 9
MD = 872151A6FD7C720112FA595A787AD895C5F0D0949F7D105BCD7877A0D740E5F19F5D245ED6CAFD0510BB2364C9533C1404B58C30D84C22370BDA3C6FC7AA2417
j = 10
MD = 5017FEB413835CA88E29EC50393AD37FD79F270EFF035068EC0205328ACF7B0FACF07EC29800832F00FEBD90A135A57CFA05E93BE1ECD96C94EEE81AB51B4F11
j = 11
MD = 0D8EA3A64DC402C516E154EF4431CA252DF03C2F5C50F3AE3A4655C910AC30AC2F1300EF60F0E2BFE59CCE545162040F3B8A326502446834B1AE41CBD3EC2B5F
j = 12
MD = 31AFE46E0822E9DBE86579195CAA2B622350BAAC1AA7835EFBC210E5A60B2AB1BD14B4AD9FF96B84B05354E008C2155BB97C4B671456AE2C7399206E21881917
j = 13
MD = 21D524A6170DC1D5D3188CD453DDD851C89BF9DD442AFACC2540B439B125753BAB0197CE0177501D395B3CB9C56C86C393DB551F9664BEC529A777FEF74CE011
j = 14
MD = 7887F9841DF41E339A292F4B1C2682F0082B9F7DD675063B260A0E8524D2781276FE0F1BC5D1F97341F069FB69F0ACBCBAFA3982E5C416AD553FD0366A9EA8EF
j = 15
MD = A7C4F0F2425721C25CF060C0BBA21979B9CF305B3B3DA2EE4D97B075E22168ACC10E4B4B17AD0A4CB0F15CAEF3B1CDF668405C5C080261A412360D23E4C5EC06
j = 16
MD = D80C171405DD10AE560E8E22C57AA990FA5884E5F4654AC970A6C1C1C25C0C114D233A4AAA6DBCEE69FFDEF99E3ED5B6213F7A3635F68382BFDBE24C89B4DE1D
j = 17
MD = BD752DD23C4AFAA31423D3609CE6A90A9D7219E63C6364A6900BA0C687B3D022664372DB3250C41C3E41AB0D2184DDC54905D51A848F63C71932BB33A82C186B
j = 18
MD = BFADC648128C11027EBBAEEFD380C5D98B8A25664955A31A998A63C65DF3C613D21066C72EE22CCAD445FACBC346B11794AA1A4FE194EEAB0BC5C4FAE278FD5B
j = 19
MD = DECB05B02E511B2D4A468824C2B4F0C655EC6CA44D1367C14A8F4F12D9A4AB5FDCB46C14E74098E3507297143268EFC07D1932A70AC2A22D20FF050BFB6BCEEA
j = 20
MD = C5801928EFFFD6553545B35A6C7C90BEEEEB2131336C588BFF86D637B4983ABF1C370367ACFAD884E5E50DC25A55A255A0AF6CC986001B591626315B3D3F0274
j = 21
MD = 7916572D1FE9DAB4927A02DE7863EF16BD7B5B46CC4EAC240EABF952F732376FDDBA82A5FE589FE9DA81CFBC3668D207927101F38E7AF993166C757F5D8CE8AA
j = 22
MD = 084308A71FA66DCE383A294F26D6A500EA2B07C94DCF583A5CB2D85891478D3E944D2E532CD1B7E27E5C1E4BBF05050F937C6412F23A149D067FB577EE7100E7
j = 23
MD = 4CB1ABC7EF0F491CF98FC223608A78591D51131E2BAC3F59561737D290BAEAC6A0E1E35EADC3103B6BBCCB58769B9DFBD7E1997B08B72A87B2BC5C8226C3FF2E
j = 24
MD = BBD78E28AF14C0195D7ADE237C83C3B725F2B4C918001183EFACCCF15BAF470AE7A0FAE07A9B018E826576F13A51CCD52D85831A6AF8C29A715639BBC1EB8111
j = 25
MD = 674E26C2B392416C1F39E19ADA10926496350F2D18EAEEC493666CDC74DBA08B371A52D19798FFCDF64D011D93282625CC9E16F32D5E1A519FF82A4BF2070C4B
j = 26
MD = A29F4FC3A2DAB84750859E0BB9ED42BAE9B98B1956D568B2997BD948455096BBFBF016BB586B7E35E58893BA98EF34405E16DA2462B064BAA20241C79BEB9983
j = 27
MD = 9E718DAC7FB7DAEC8F1F8AEF4AE7AC3FC23BED1B129F4CD4CFA075ADF94CC2A95F6A73B99476E5DD244C32662AAACA9A6EBC9DBABF008925BA9E2FA9700925CB
j = 28
MD = 2AD4A079F91C8C95D8CE54298DCBD439809EAB9AD2E3BDB64FC6F5A8966C0A5294685FEF972F050D57FA69175AA1E0357865E5DBD224795A63796A6FFF40B178
j = 29
MD = A0BBB833BE8E543A4D5CA1DC16C298F5CFF87B7C5AAB0A15846156D9AD303609217413E814983D33F4304223FB723667058A1F592DEF5B1067FF4F56D265E7B3
j = 30
MD = 57CB435CD4F1E75C0D682FA0382BFC0AEB8052BB74DF0BAA37450DC04E720B480C29458C357ADD8AE74CD550CFFEE1851930C2C4DB57EA87B2A263A292571DFF
j = 31
MD = 8FF7024DAE272D3C6AA42FE6129617CAC0286D009FC8226284D873CCA0C84603352857698A311B75A6E1882054D2CCB74346B32657B3422FB1BDAE92FF2EB90B
j = 32
MD = 57F67D6B77C69483DF8D9C6A1617D1A876BFCB313424597AF0F1CD07C00A34ADF143F516D075B7E779D6BBEAEB21EFD23F2F5AC88F8CF4751D1CBEEFF3504844
j = 33
MD = B694E6F5DF86E3CD0CF0F8B60A47CFBFEC008E6F3C7D970DA3DD567A22FDE94622A886643CF26600ED3BA64FE5232DA497D5606CAA61F721FC4FDF79810A8FB0
j = 34
MD = 9FFC1ECE5AF4AAB1C7A1289DFEA5704AB0EE1E741C0D951799A0209507814CEF5754155685FCF08DBEB89D0A9C3D8B6F1E9BAF3D163280B6F985069E1059E768
j = 35
MD = 4AC26F5B6EF9E9F8D3C6F3C29A62F8DC6328102497F7951B908958DB026C3D90118DA190E7FE42326D4A7ED6960634E20FF793788F885A085158F59C1AF93648
j = 36
MD = 0D1CC0768D72EC4142EF700D851851E5127ADE35BD5EF3BDB33A936144911922059A74F13D483EF71180B505D8A6C550F7C457EA5B8F57BC2938B5AD35D01BBC
j = 37
MD = B45463B1C4400B8477961569FEA3FE1C1060337187F152BDCE6D50DACA8973164AC029B9A257CC7924EE9787AAAC59BE79DFF70969161D17EDD6D31987438064
j = 38
MD = 78E6A596EB909F0B69E598BE790A623069EEC0962BFA723A17A68AFE9171FD4CE8C5F6AE9F2D6CEC894E4EF7FDC485ED43DA181728ACD64511BF2A4E14650D9F
j = 39
MD = 7AB1980C39753C5ED8891EA395B3FA50EBAF63302CC6F9C8ED6D92E7F3AC907BD2E54A7D9CA6EDE9D24ADB4D76E4FF7E64BABDBEBF9198F5EF3915D52EB86689
j = 40
MD = C7A6E4CB17E8C39CD537EBD3A8E24E6DF3916AEA35DBA9CC98994216C9D59268EDF7797DB373D22ECECD719C02BA9ECE0DA2E9F9DC3CBD1CB3C344C40B35AFF8
j = 41
MD = D7A256C865CD3C9FF6D4DF8687232136A38086310AFC7B0A0ADD88860D2348AD44EE4C19BA7E5F3DD5B2984A9B822AB2B0E222BD3C5E44C782DF54E8379272E4
j = 42
MD = 60BE8F00C39ABD9A30D9361C6EFF6A21964DF3E8A66351A3DF5340783621DBCE58AA90218876A100F668075B283FA82A45AE7CD463E064EE7BF80CFE812D5A0C
j = 43
MD = 5A7AA5B4318799D271EC305498E4453176F5C0E6FC7B7BBCC372DE3A4684E15F18AEDCDA707CB13B0CDFF40E703120654389E2C5C54ADEA7DB4B2774D0C002E6
j = 44
MD = FFE379F2887B0DB3A5B49739A2E0C2773F2C0B74B14B753BDF989910268944C50F8116127217E1E9E6A753A7059F0A52EA0B2F834E6FFA29BA8BA11A43EF26E3
j = 45
MD = 46089C1C9C35DF61AD7CDE46140142C0AFFC046A71AA1ADE4C62A8FD65BA5D299E1CA1DB770DCC5C2039CD8FAD2FAD111F6903373C3F2367337369DCC045CA5A
j = 46
MD = 0122FC9D52A07847BFB9D47F1D85C595E6364C0F0B4F1C7F19A6345A42EB9837CBDAED9A32330641D337744D3380AB407EDEDAA9AECB014EECFB1074C28CED81
j = 47
MD = 739BDCBC4CCBA4263A3FF80DA093FF8A48C815B0A71C2B0ED043905F2A5A25F646D92C9BDEFA67F6F6D24424E0A2147B27BD5D982F6B2129D3E12F8FD6BE00E7
j = 48
MD = 1F4227F8C4D55DB1E6E3BD8492254A9D387FEA207D9664E18492811DDBB56D03D9F8606E22F485F1828C42DAED354D3C0787B130DBE40185B5BAF825C5C33A76
j = 49
MD = A297B1A958E82E2CCB185CDF31F2D88CEADCC373BC7D46453266808534066A94BBB3009271EA20D7A6C45845A3FDB61DDD7BB1638A006E83D7E5F97AEA8C7696
j = 50
MD = 1A96271F665FBF18D2F1D143D326767CCBF0D29B5724602AAB63EEAA3402FB12388B7F539BBFBC86A2B86D45B3ADC1247BCD26F1BD2AE83985ADD08F0C8C373A
j = 51
MD = FB7E4DDAB80DBD5720432F49CBE1A17AE586A73AECEBCF638C8127CD69E59512BA828A63D6A5ED91FD5DB67B845CA05B9796E72F12522CCD42E631323767507D
j = 52
MD = 4D738D4B751ED9EC1E42C4FAB3CAB2C6D5A18AFE8550F877A4B8969F5CD5F5799662B1BECC7215E60B4979BD68EC392587C9D5B3E0579DB5B178503EDF920B19
j = 53
MD = 0C33CD9D889025420C8DDFA2BDB72FC23B6096666BBAE04E12EBA19B34595D160E4AE74957B714AEAC213031D665CC59A04FAC068DFD0BD7D73000F228A342C2
j = 54
MD = 65EEFFE626DFC0B736E26EC6BB36B91715207DC8DDCD3537881BC9A68B1ECD30671872D43F543171E75B114AF1A00315B1FE3822FD036A6C8BB6CC2E31B57F1D
j = 55
MD = 63C74278EC24F37149AF33D00989783C3A36287FD241510894D61F6A02BE22C668A482870E00107F9EF4711AF4CBB7AAE174EF74EFBC31126384A115C5BDA941
j = 56
MD = 29095E3FB1591029C4681A3C52F15BB660C51C872F8851E40CDF96A99E88041EED9F8D914BCAA91781AB154BCA29BF3D097625C125F7AD8BA7D0069AD192E5A8
j = 57
MD = C9475A00AF4076C6F9C48EE3ECE8EF0FC35E9933EA0B47464E7E3D5FE83877853C3B5B142197BF0E5B4F3E3DAED438DC7F74395F5A48AE075020E82F7B5F7885
j = 58
MD = 9D57BA78CF0128D0516ECB312719B86BA7F026FEE0CE5DF3A7778FA1DF2A14D422E720D41571C341E57308F0BFC0EFC9A8F1B66C58B62A09CFC3BCFC6F7A25B9
j = 59
MD = 522ED569C6D23F09573AFB6B24C331B60242CE3D51D6FED5A290C900088BDA83CCC86B56C0C41398B49E3DC525FBE26D312672D5AC99012D433DC359C60A209E
j = 60
MD = D43899B3F5823695BE223C2246F5C2B8C7A42DA5423481FC1FCFB7FF7FA1E64E3637B471F672C1E472C69A87265AAE53C2F53A500941A6C1257991E3D0A55DB9
j = 61
MD = C6CCF337DAEACD10676D2CC0E8B1171F0AAF5694EE9B7F761BFCDD62F640C971DB1F457AA1B4064A6902C90BBB457F1343D20DE13104CA85066D422E05010F37
j = 62
MD = 8DD331A2A7D9A22668992EF12C99402CE5294E5D4BE63B38280D1649DAE49604D94A9119580573D39644DB170F0861BA15F0FCD35804F38DA2876C2C2F305A7A
j = 63
MD = 80549BA9C1490EA3A81BFBEF1FEC8075964AA8F7C4DBA16BE34B699EE9F7E6D44738D1AE43294DBBEDEE6CC73DE59D8A61F2A2BDB448FEC1BC557ABCE59467AB
j = 64
MD = 73800EF788736364175C7641184D3F3A51A44B4B541F4FD5704773FDE283453BB3417E221DAD15FFC64BBFA9967CFCB50286AD5530ACEC80A3CBE5D1D058562F
j = 65
MD = 84389F8706AAEDDAFE14EF183DDB04A75ABBDF5C05DC8CE1DD950F1BB089772C585FE7A93C910154883561B7BB74DC5B8A60F0B80DF8357B4F809BA8809EC3AC
j = 66
MD = C3B274247904C7259286D183280A4C59EFB2273F5895E7B2CFC7192B08716F6FC12B86900797F40EDD2A17F404507838BD13CF3F18B5B58754C1719A5B190033
j = 67
MD = 0ADD68790BCBB149E5BEBF3EEE8EE10C57184D441A40D71317A508855DDD77CBE99C200CAAD611C3BC476F06765E33636ECE6E159559BEB24BA0BB6CCADFD08A
j = 68
MD = C56A90C3A7A071E9A2BDEB85692B26C46C7BC6DF942DA707FF3949E6091FC113E247E5880CD6972B240CB3E3FCCC3629E15E311AC8AA86283BA5278C3DC8FC2D
j = 69
MD = 2886715138126BAD20BFFD1D42B99256BBDF223DFF8074755360D6284CD6FDF1D656102CF12CE1E3B971FAB57797750725E6B0CEF1AC59FE11F5B724A1168CB9
j = 70
MD = 6ADECD2DBBC4111846AA2163E15BDFB463E4835D25793DC19ABF98FBC8A382749629C8ECDAF67134C7F78A0E188B451B5F12EBFE81D4DF45DE8C91BC795E94E7
j = 71
MD = 974AB588462738E621FA7026A9E21AB043F1CFF952ADADEB2AC642D56B83170F9EE6B374413E7CBFF5F118FF1E0A35B44EA13D8124451C245EFEA41F3123EC7E
j = 72
MD = E58B42C541854723196B76DF8C127EEB8D58985949316545A0D7FD33647C2D14308B18E69A680B73296A1D5B3C3E3BDFD8B3A7CB4762543336484D411D78A5CB
j = 73
MD = 37E5AA6A33ACDE3A7F2276C7B5CD544AC75A6D7E18EB0D2DFDBFE653622E2C14549FA5183F6D3D62FF8DC82620B9B9B5B69E8A5D9B24FF9E940CBD5AF919E053
j = 74
MD = 86E432183CFDB3980F971AB8AA760940190990379AA8C526062CF1565D01741411D62AAAF3A46BF9CE1E899FC9511392C25E24CBBB1D20387D121DC5C75F6870
j = 75
MD = D4CB8F65AD3369D7941DD56CC239B0C0601E0D0564C40A92E7F14B927B18F78BA4660DF39C9B5A7CDEF1AA80B92F2A3B14338E3366521BB915E9C8BD54CB9599
j = 76
MD = F66EAF0DEA254C7E0307CB21E0CB87560E158D6C02A2AC786E88ECCC7F2FD8F2DEC9DA1ED208A011A8AD6A8A321722D7D31F65EA430B20A3A8FC35AA38AE8E4B
j = 77
MD = AF50B7459E1A109865160EAB3A56095D15877ACFD091478A1A5BFC09D76EAA706464B3D426E999877F834A2DE9EFC756DD0311578F297C92DAD555E0DC163A03
j = 78
MD = 00283243636E30FC9F06BF14F9F691BADC965164EEC93AF185F27172109CF180626866A041154C97E236B2FB4C65D3B21741BBD8E417ACC7EBF84E8197A634DE
j = 79
MD = 2537B4E85A9DB8F53721647D6C63AF5E2BBF152ABAFEBC9E019E964999A041DAC2CC24797C37F72A0C874FDEB019F30A771013025D7D466D6F64059392F8478B
j = 80
MD = 96F364FCE5905D4E03370BD8A0FA97164312EBC39BB3DE3DF5D05E1051AA08113FFD58F8448E0DD36A329DF7C4DAA0332972AEDFEEC9232CF2F3B5DE515A6C5A
j = 81
MD = 3DB50003299392CD44A40168A8EB1128EB3A35E341DE2FECDEEF9EF334636D638871C4BD73E87364B06F1E55441D055A6901ABEA4E70A4FADAA411C6EFA93DD7
j = 82
MD = 848F6CB4D50A4F76A502A82142AE41818F955258AB2BF32824554EFFF7AC651EAE53FA73F1F97E0C56FF65E51CA9739B8A7F3FFDEB075EC583559F53940E462C
j = 83
MD = 22E4CE94599AE85E53B6A15310548B20B8170890EE9EF03B683707D4AA625199D9D6890495C3AB5B52242838F6B4AC1B567301E211D068AF476700564EC5B847
j = 84
MD = 1BABCE80DFCA4EEC12B45E3FE4C2F59768A35FB51820A2AB36B48B36D32A67ABDD5A5E74DB51C8FC9AFF12E1389AB694F7B94D78409EAD186CAA1C79B83129CB
j = 85
MD = A69702465BEBF5C70646EB51BA1F40D9E4302153BDAD944CF72FF4AAE9AF718C81E4DB3FE8D0BA04AAC7F5ABBF335759688EFDA60880EA6DE7713F9CE8499972
j = 86
MD = EEB39A698F968C2A4E89724FB5CC6DCF3D4DD3A5EBE6E0E3BB046DEA0658AC2D6D99DBF822E023F3BF727B1B81DCEA5006829A14EB47E0A0C4990B372AB4BE46
j = 87
MD = BFC9E2D32B1960415052A33E4996B9E07B097D63A049C2D08187BCECAA067A0BEE328E0C6D62539089F5FD4015BF9A3D520B51A6918A14B8E751C751316DC877
j = 88
MD = E981BD988C13D450DB40A81E7BE33C192641F9CABD8BA0F49ED48DBBB344AD3E99A72DCBAC74A5E48F0D78F1754BAA7BF70C1D3090263BD37BF45B7A7A4B0169
j = 89
MD = 6DCB76F9406C9C61272DEDA02DBB8EAE5B5EC7F13EDBCB8477591781BA6D0ACFE049515F7F695A5A0AEF4154274E98C2B94A89E2452218594821D7AACD0FAED3
j = 90
MD = 1FC807E0526DE034EE40A71BEE58AFE170E4AAAF3382A07E25C54B7E9F157A92BBBD2F16DAD8CD1ABA27BA9D992D0272D49F892B09067CAF817891FEB8A1672B
j = 91
MD = 187A9EE84849BBE3CDFD9089724FF17B985682DBC9518BC4E8C193C5B79067AE78DA6D24AE51F1716799BF6FB08C29733BA4086F1D25835DD627F4B2D2A49409
j = 92
MD = A3752B729BD752989310B639A401015247A777720DC77897B281C90326D8B63A1A20F1A8D7DC20CC54297307CC740E4903195A6A3EC714E111B2AF449D8E7E82
j = 93
MD = FCB3FF7A677BE5F8278B6A309330E79DB5E706FBA2B755618553BC00A6DE6381004F52FCF62285F1E07CD57A7D89745AF43CF5A3A42B9FB66440F031D3CCB5BE
j = 94
MD = 5853E91CC849310F2EE6ED32BE819991ABECFEE28CA9D2A969D616D06E54D3726DEA87CCF5A77C0BA9FF19871396E7ADBD860923ED838416D340849D8AB198E5
j = 95
MD = A14B02C37AA7EF3F7D6A60688C40E8521C6078F30D32F8CCED0E4E2E883AC122F861C7475540D497A17DC182787CC695600D1159E3E30639B7237360115BE500
j = 96
MD = 6F0AFAEA9691CD5464B3BC57BDC9DBBDBC583C88F7B15AF6B441048DFBFE88D8057EDE76183D716D428A332B43DC88F1399A5FF5102C0AE0830FA19B2A2C298C
j = 97
MD = A56FAACDAC3E611C9F9573ECA06CBBBE186752603A7DE432B20A814FAE95A1A2436BAFA816281519AD0CBB9FD092304D4398311D9F172E6131004791802411EF
j = 98
MD = 9AA6293CE8BCA6E84CBADF657D68521790967A41A21AD05E67302F49C5CA8A837C39081760194382929B8EEAA556E878FE67E26768B39708B1816EED55C438DE
j = 99
MD = 9BA0E133D9D4E158C11D4022CFD06AA1CD932139206EEBF83D19851E81B839590146C55DBB20FE5265186341224562CCC321C2B1401C1A391CA1FBC764619C9F

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff