+BlueMidnightWish
This commit is contained in:
parent
14d8fdb5b5
commit
55961d7663
|
@ -0,0 +1,385 @@
|
|||
/* bmw_large.c */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2009 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 bmw_large.c
|
||||
* \author Daniel Otte
|
||||
* \email daniel.otte@rub.de
|
||||
* \date 2009-04-27
|
||||
* \license GPLv3 or later
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include "bmw_large.h"
|
||||
|
||||
#define SHL64(a,n) ((a)<<(n))
|
||||
#define SHR64(a,n) ((a)>>(n))
|
||||
#define ROTL64(a,n) (((a)<<(n))|((a)>>(64-(n))))
|
||||
#define ROTR64(a,n) (((a)>>(n))|((a)<<(64-(n))))
|
||||
|
||||
#define BUG24 1
|
||||
|
||||
#define DEBUG 0
|
||||
#if DEBUG
|
||||
#include "cli.h"
|
||||
|
||||
void ctx_dump(const bmw_large_ctx_t* ctx){
|
||||
uint8_t i;
|
||||
cli_putstr_P(PSTR("\r\n==== ctx dump ===="));
|
||||
for(i=0; i<16;++i){
|
||||
cli_putstr_P(PSTR("\r\n h["));
|
||||
cli_hexdump(&i, 1);
|
||||
cli_putstr_P(PSTR("] = "));
|
||||
cli_hexdump_rev(&(ctx->h[i]), 8);
|
||||
}
|
||||
cli_putstr_P(PSTR("\r\n counter = "));
|
||||
cli_hexdump(&(ctx->counter), 4);
|
||||
}
|
||||
|
||||
void dump_x(const uint64_t* q, uint8_t elements, char x){
|
||||
uint8_t i;
|
||||
cli_putstr_P(PSTR("\r\n==== "));
|
||||
cli_putc(x);
|
||||
cli_putstr_P(PSTR(" dump ===="));
|
||||
for(i=0; i<elements;++i){
|
||||
cli_putstr_P(PSTR("\r\n "));
|
||||
cli_putc(x);
|
||||
cli_putstr_P(PSTR("["));
|
||||
cli_hexdump(&i, 1);
|
||||
cli_putstr_P(PSTR("] = "));
|
||||
cli_hexdump_rev(&(q[i]), 8);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define ctx_dump(x)
|
||||
#define dump_x(a,b,c)
|
||||
#endif
|
||||
|
||||
uint64_t bmw_large_s0(uint64_t x){
|
||||
uint64_t r;
|
||||
r = SHR64(x, 1)
|
||||
^ SHL64(x, 3)
|
||||
^ ROTL64(x, 4)
|
||||
^ ROTR64(x, 64-37);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_s1(uint64_t x){
|
||||
uint64_t r;
|
||||
r = SHR64(x, 1)
|
||||
^ SHL64(x, 2)
|
||||
^ ROTL64(x,13)
|
||||
^ ROTR64(x,64-43);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_s2(uint64_t x){
|
||||
uint64_t r;
|
||||
r = SHR64(x, 2)
|
||||
^ SHL64(x, 1)
|
||||
^ ROTL64(x, 19)
|
||||
^ ROTR64(x, 64-53);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_s3(uint64_t x){
|
||||
uint64_t r;
|
||||
r = SHR64(x, 2)
|
||||
^ SHL64(x, 2)
|
||||
^ ROTL64(x, 28)
|
||||
^ ROTR64(x, 64-59);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_s4(uint64_t x){
|
||||
uint64_t r;
|
||||
r = SHR64(x, 1)
|
||||
^ x;
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_s5(uint64_t x){
|
||||
uint64_t r;
|
||||
r = SHR64(x, 2)
|
||||
^ x;
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_r1(uint64_t x){
|
||||
uint64_t r;
|
||||
r = ROTL64(x, 5);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_r2(uint64_t x){
|
||||
uint64_t r;
|
||||
r = ROTL64(x, 11);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_r3(uint64_t x){
|
||||
uint64_t r;
|
||||
r = ROTL64(x, 27);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_r4(uint64_t x){
|
||||
uint64_t r;
|
||||
r = ROTL64(x, 32);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_r5(uint64_t x){
|
||||
uint64_t r;
|
||||
r = ROTR64(x, 64-37);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_r6(uint64_t x){
|
||||
uint64_t r;
|
||||
r = ROTR64(x, 64-43);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_r7(uint64_t x){
|
||||
uint64_t r;
|
||||
r = ROTR64(x, 64-53);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_expand1(uint8_t j, const uint64_t* q, const void* m){
|
||||
uint64_t(*s[])(uint64_t) = {bmw_large_s1, bmw_large_s2, bmw_large_s3, bmw_large_s0};
|
||||
uint64_t r;
|
||||
uint8_t i;
|
||||
r = 0x0555555555555555LL*(j+16);
|
||||
for(i=0; i<16; ++i){
|
||||
r += s[i%4](q[j+i]);
|
||||
}
|
||||
r += ((uint64_t*)m)[j];
|
||||
r += ((uint64_t*)m)[j+3];
|
||||
r -= ((uint64_t*)m)[j+10];
|
||||
return r;
|
||||
}
|
||||
|
||||
uint64_t bmw_large_expand2(uint8_t j, const uint64_t* q, const void* m){
|
||||
uint64_t(*rf[])(uint64_t) = {bmw_large_r1, bmw_large_r2, bmw_large_r3,
|
||||
bmw_large_r4, bmw_large_r5, bmw_large_r6,
|
||||
bmw_large_r7};
|
||||
uint64_t r;
|
||||
uint8_t i;
|
||||
r = 0x0555555555555555LL*(j+16);
|
||||
for(i=0; i<14; i+=2){
|
||||
r += q[j+i];
|
||||
}
|
||||
for(i=0; i<14; i+=2){
|
||||
r += rf[i/2](q[j+i+1]);
|
||||
}
|
||||
r += bmw_large_s5(q[j+14]);
|
||||
r += bmw_large_s4(q[j+15]);
|
||||
r += ((uint64_t*)m)[j];
|
||||
r += ((uint64_t*)m)[(j+3)%16];
|
||||
r -= ((uint64_t*)m)[(j+10)%16];
|
||||
return r;
|
||||
}
|
||||
|
||||
void bmw_large_f0(uint64_t* q, const uint64_t* h, const void* m){
|
||||
uint64_t t[16];
|
||||
uint8_t i;
|
||||
uint64_t(*s[])(uint64_t)={ bmw_large_s0, bmw_large_s1, bmw_large_s2,
|
||||
bmw_large_s3, bmw_large_s4 };
|
||||
for(i=0; i<16; ++i){
|
||||
t[i] = h[i] ^ ((uint64_t*)m)[i];
|
||||
}
|
||||
dump_x(t, 16, 'T');
|
||||
q[ 0] = (t[ 5] - t[ 7] + t[10] + t[13] + t[14]);
|
||||
q[ 1] = (t[ 6] - t[ 8] + t[11] + t[14] - t[15]);
|
||||
q[ 2] = (t[ 0] + t[ 7] + t[ 9] - t[12] + t[15]);
|
||||
q[ 3] = (t[ 0] - t[ 1] + t[ 8] - t[10] + t[13]);
|
||||
q[ 4] = (t[ 1] + t[ 2] + t[ 9] - t[11] - t[14]);
|
||||
q[ 5] = (t[ 3] - t[ 2] + t[10] - t[12] + t[15]);
|
||||
q[ 6] = (t[ 4] - t[ 0] - t[ 3] - t[11] + t[13]);
|
||||
q[ 7] = (t[ 1] - t[ 4] - t[ 5] - t[12] - t[14]);
|
||||
q[ 8] = (t[ 2] - t[ 5] - t[ 6] + t[13] - t[15]);
|
||||
q[ 9] = (t[ 0] - t[ 3] + t[ 6] - t[ 7] + t[14]);
|
||||
q[10] = (t[ 8] - t[ 1] - t[ 4] - t[ 7] + t[15]);
|
||||
q[11] = (t[ 8] - t[ 0] - t[ 2] - t[ 5] + t[ 9]);
|
||||
q[12] = (t[ 1] + t[ 3] - t[ 6] - t[ 9] + t[10]);
|
||||
q[13] = (t[ 2] + t[ 4] + t[ 7] + t[10] + t[11]);
|
||||
q[14] = (t[ 3] - t[ 5] + t[ 8] - t[11] - t[12]);
|
||||
q[15] = (t[12] - t[ 4] - t[ 6] - t[ 9] + t[13]);
|
||||
dump_x(q, 16, 'W');
|
||||
for(i=0; i<16; ++i){
|
||||
q[i] = s[i%5](q[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void bmw_large_f1(uint64_t* q, const void* m){
|
||||
uint8_t i;
|
||||
q[16] = bmw_large_expand1(0, q, m);
|
||||
q[17] = bmw_large_expand1(1, q, m);
|
||||
for(i=2; i<16; ++i){
|
||||
q[16+i] = bmw_large_expand2(i, q, m);
|
||||
}
|
||||
}
|
||||
|
||||
void bmw_large_f2(uint64_t* h, const uint64_t* q, const void* m){
|
||||
uint64_t xl=0, xh;
|
||||
uint8_t i;
|
||||
for(i=16;i<24;++i){
|
||||
xl ^= q[i];
|
||||
}
|
||||
xh = xl;
|
||||
for(i=24;i<32;++i){
|
||||
xh ^= q[i];
|
||||
}
|
||||
#if DEBUG
|
||||
cli_putstr_P(PSTR("\r\n XL = "));
|
||||
cli_hexdump_rev(&xl, 4);
|
||||
cli_putstr_P(PSTR("\r\n XH = "));
|
||||
cli_hexdump_rev(&xh, 4);
|
||||
#endif
|
||||
memcpy(h, m, 16*8);
|
||||
h[0] ^= SHL64(xh, 5) ^ SHR64(q[16], 5);
|
||||
h[1] ^= SHR64(xh, 7) ^ SHL64(q[17], 8);
|
||||
h[2] ^= SHR64(xh, 5) ^ SHL64(q[18], 5);
|
||||
h[3] ^= SHR64(xh, 1) ^ SHL64(q[19], 5);
|
||||
h[4] ^= SHR64(xh, 3) ^ q[20];
|
||||
h[5] ^= SHL64(xh, 6) ^ SHR64(q[21], 6);
|
||||
h[6] ^= SHR64(xh, 4) ^ SHL64(q[22], 6);
|
||||
h[7] ^= SHR64(xh,11) ^ SHL64(q[23], 2);
|
||||
for(i=0; i<8; ++i){
|
||||
h[i] += xl ^ q[24+i] ^ q[i];
|
||||
}
|
||||
for(i=0; i<8; ++i){
|
||||
h[8+i] ^= xh ^ q[24+i];
|
||||
h[8+i] += ROTL64(h[(4+i)%8],i+9);
|
||||
}
|
||||
h[ 8] += SHL64(xl, 8) ^ q[23] ^ q[ 8];
|
||||
h[ 9] += SHR64(xl, 6) ^ q[16] ^ q[ 9];
|
||||
h[10] += SHL64(xl, 6) ^ q[17] ^ q[10];
|
||||
h[11] += SHL64(xl, 4) ^ q[18] ^ q[11];
|
||||
h[12] += SHR64(xl, 3) ^ q[19] ^ q[12];
|
||||
h[13] += SHR64(xl, 4) ^ q[20] ^ q[13];
|
||||
h[14] += SHR64(xl, 7) ^ q[21] ^ q[14];
|
||||
h[15] += SHR64(xl, 2) ^ q[22] ^ q[15];
|
||||
}
|
||||
|
||||
void bmw_large_nextBlock(bmw_large_ctx_t* ctx, const void* block){
|
||||
uint64_t q[32];
|
||||
dump_x(block, 16, 'M');
|
||||
bmw_large_f0(q, ctx->h, block);
|
||||
dump_x(q, 16, 'Q');
|
||||
bmw_large_f1(q, block);
|
||||
dump_x(q, 32, 'Q');
|
||||
bmw_large_f2(ctx->h, q, block);
|
||||
ctx->counter += 1;
|
||||
ctx_dump(ctx);
|
||||
}
|
||||
|
||||
void bmw_large_lastBlock(bmw_large_ctx_t* ctx, const void* block, uint16_t length_b){
|
||||
uint8_t buffer[128];
|
||||
while(length_b >= BMW_LARGE_BLOCKSIZE){
|
||||
bmw_large_nextBlock(ctx, block);
|
||||
length_b -= BMW_LARGE_BLOCKSIZE;
|
||||
block = (uint8_t*)block + BMW_LARGE_BLOCKSIZE_B;
|
||||
}
|
||||
memset(buffer, 0, 128);
|
||||
memcpy(buffer, block, (length_b+7)/8);
|
||||
buffer[length_b>>3] |= 0x80 >> (length_b&0x07);
|
||||
if(length_b+1>128*8-64){
|
||||
bmw_large_nextBlock(ctx, buffer);
|
||||
memset(buffer, 0, 128-8);
|
||||
ctx->counter -= 1;
|
||||
}
|
||||
*((uint64_t*)&(buffer[128-8])) = (uint64_t)(ctx->counter*1024LL)+(uint64_t)length_b;
|
||||
bmw_large_nextBlock(ctx, buffer);
|
||||
}
|
||||
|
||||
void bmw384_init(bmw384_ctx_t* ctx){
|
||||
uint8_t i;
|
||||
ctx->h[0] = 0x0001020304050607LL;
|
||||
for(i=1; i<16; ++i){
|
||||
ctx->h[i] = ctx->h[i-1]+ 0x0808080808080808LL;
|
||||
}
|
||||
#if BUG24
|
||||
ctx->h[6] = 0x3031323324353637LL;
|
||||
#endif
|
||||
ctx->counter=0;
|
||||
ctx_dump(ctx);
|
||||
}
|
||||
|
||||
void bmw512_init(bmw512_ctx_t* ctx){
|
||||
uint8_t i;
|
||||
ctx->h[0] = 0x8081828384858687LL;
|
||||
for(i=1; i<16; ++i){
|
||||
ctx->h[i] = ctx->h[i-1]+ 0x0808080808080808LL;
|
||||
}
|
||||
ctx->counter=0;
|
||||
ctx_dump(ctx);
|
||||
}
|
||||
|
||||
void bmw384_nextBlock(bmw384_ctx_t* ctx, const void* block){
|
||||
bmw_large_nextBlock(ctx, block);
|
||||
}
|
||||
|
||||
void bmw512_nextBlock(bmw512_ctx_t* ctx, const void* block){
|
||||
bmw_large_nextBlock(ctx, block);
|
||||
}
|
||||
|
||||
void bmw384_lastBlock(bmw384_ctx_t* ctx, const void* block, uint16_t length_b){
|
||||
bmw_large_lastBlock(ctx, block, length_b);
|
||||
}
|
||||
|
||||
void bmw512_lastBlock(bmw512_ctx_t* ctx, const void* block, uint16_t length_b){
|
||||
bmw_large_lastBlock(ctx, block, length_b);
|
||||
}
|
||||
|
||||
void bmw384_ctx2hash(void* dest, const bmw384_ctx_t* ctx){
|
||||
memcpy(dest, &(ctx->h[10]), 384/8);
|
||||
}
|
||||
|
||||
void bmw512_ctx2hash(void* dest, const bmw512_ctx_t* ctx){
|
||||
memcpy(dest, &(ctx->h[8]), 512/8);
|
||||
}
|
||||
|
||||
void bmw384(void* dest, const void* msg, uint32_t length_b){
|
||||
bmw_large_ctx_t ctx;
|
||||
bmw384_init(&ctx);
|
||||
while(length_b>=BMW_LARGE_BLOCKSIZE){
|
||||
bmw_large_nextBlock(&ctx, msg);
|
||||
length_b -= BMW_LARGE_BLOCKSIZE;
|
||||
msg = (uint8_t*)msg + BMW_LARGE_BLOCKSIZE_B;
|
||||
}
|
||||
bmw_large_lastBlock(&ctx, msg, length_b);
|
||||
bmw384_ctx2hash(dest, &ctx);
|
||||
}
|
||||
|
||||
void bmw512(void* dest, const void* msg, uint32_t length_b){
|
||||
bmw_large_ctx_t ctx;
|
||||
bmw512_init(&ctx);
|
||||
while(length_b>=BMW_LARGE_BLOCKSIZE){
|
||||
bmw_large_nextBlock(&ctx, msg);
|
||||
length_b -= BMW_LARGE_BLOCKSIZE;
|
||||
msg = (uint8_t*)msg + BMW_LARGE_BLOCKSIZE_B;
|
||||
}
|
||||
bmw_large_lastBlock(&ctx, msg, length_b);
|
||||
bmw512_ctx2hash(dest, &ctx);
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
/* bmw_large.h */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2009 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 bmw_large.h
|
||||
* \author Daniel Otte
|
||||
* \email daniel.otte@rub.de
|
||||
* \date 2009-04-27
|
||||
* \license GPLv3 or later
|
||||
*
|
||||
*/
|
||||
#ifndef BMW_LARGE_H_
|
||||
#define BMW_LARGE_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define BMW_LARGE_BLOCKSIZE 1024
|
||||
#define BMW_LARGE_BLOCKSIZE_B ((BMW_LARGE_BLOCKSIZE+7)/8)
|
||||
#define BMW384_BLOCKSIZE BMW_LARGE_BLOCKSIZE
|
||||
#define BMW384_BLOCKSIZE_B BMW_LARGE_BLOCKSIZE_B
|
||||
#define BMW512_BLOCKSIZE BMW_LARGE_BLOCKSIZE
|
||||
#define BMW512_BLOCKSIZE_B BMW_LARGE_BLOCKSIZE_B
|
||||
|
||||
typedef struct {
|
||||
uint64_t h[16];
|
||||
uint32_t counter;
|
||||
} bmw_large_ctx_t;
|
||||
|
||||
typedef bmw_large_ctx_t bmw384_ctx_t;
|
||||
typedef bmw_large_ctx_t bmw512_ctx_t;
|
||||
|
||||
void bmw384_init(bmw384_ctx_t* ctx);
|
||||
void bmw512_init(bmw512_ctx_t* ctx);
|
||||
|
||||
void bmw_large_nextBlock(bmw_large_ctx_t* ctx, const void* block);
|
||||
void bmw_large_lastBlock(bmw_large_ctx_t* ctx, const void* block, uint16_t length_b);
|
||||
|
||||
void bmw384_nextBlock(bmw384_ctx_t* ctx, const void* block);
|
||||
void bmw384_lastBlock(bmw384_ctx_t* ctx, const void* block, uint16_t length_b);
|
||||
|
||||
void bmw512_nextBlock(bmw512_ctx_t* ctx, const void* block);
|
||||
void bmw512_lastBlock(bmw512_ctx_t* ctx, const void* block, uint16_t length_b);
|
||||
|
||||
void bmw384_ctx2hash(void* dest, const bmw384_ctx_t* ctx);
|
||||
void bmw512_ctx2hash(void* dest, const bmw512_ctx_t* ctx);
|
||||
|
||||
void bmw384(void* dest, const void* msg, uint32_t length_b);
|
||||
void bmw512(void* dest, const void* msg, uint32_t length_b);
|
||||
|
||||
#endif /* BMW_LARGE_H_ */
|
|
@ -0,0 +1,385 @@
|
|||
/* bmw_small.c */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2009 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 bmw_small.c
|
||||
* \author Daniel Otte
|
||||
* \email daniel.otte@rub.de
|
||||
* \date 2009-04-27
|
||||
* \license GPLv3 or later
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include "bmw_small.h"
|
||||
|
||||
#define SHL32(a,n) ((a)<<(n))
|
||||
#define SHR32(a,n) ((a)>>(n))
|
||||
#define ROTL32(a,n) (((a)<<(n))|((a)>>(32-(n))))
|
||||
#define ROTR32(a,n) (((a)>>(n))|((a)<<(32-(n))))
|
||||
|
||||
#define BUG24 1
|
||||
|
||||
#define DEBUG 0
|
||||
#if DEBUG
|
||||
#include "cli.h"
|
||||
|
||||
void ctx_dump(const bmw_small_ctx_t* ctx){
|
||||
uint8_t i;
|
||||
cli_putstr_P(PSTR("\r\n==== ctx dump ===="));
|
||||
for(i=0; i<16;++i){
|
||||
cli_putstr_P(PSTR("\r\n h["));
|
||||
cli_hexdump(&i, 1);
|
||||
cli_putstr_P(PSTR("] = "));
|
||||
cli_hexdump_rev(&(ctx->h[i]), 4);
|
||||
}
|
||||
cli_putstr_P(PSTR("\r\n counter = "));
|
||||
cli_hexdump(&(ctx->counter), 4);
|
||||
}
|
||||
|
||||
void dump_x(const uint32_t* q, uint8_t elements, char x){
|
||||
uint8_t i;
|
||||
cli_putstr_P(PSTR("\r\n==== "));
|
||||
cli_putc(x);
|
||||
cli_putstr_P(PSTR(" dump ===="));
|
||||
for(i=0; i<elements;++i){
|
||||
cli_putstr_P(PSTR("\r\n "));
|
||||
cli_putc(x);
|
||||
cli_putstr_P(PSTR("["));
|
||||
cli_hexdump(&i, 1);
|
||||
cli_putstr_P(PSTR("] = "));
|
||||
cli_hexdump_rev(&(q[i]), 4);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define ctx_dump(x)
|
||||
#define dump_x(a,b,c)
|
||||
#endif
|
||||
|
||||
uint32_t bmw_small_s0(uint32_t x){
|
||||
uint32_t r;
|
||||
r = SHR32(x, 1)
|
||||
^ SHL32(x, 3)
|
||||
^ ROTL32(x, 4)
|
||||
^ ROTR32(x, 13);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_s1(uint32_t x){
|
||||
uint32_t r;
|
||||
r = SHR32(x, 1)
|
||||
^ SHL32(x, 2)
|
||||
^ ROTL32(x, 8)
|
||||
^ ROTR32(x, 9);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_s2(uint32_t x){
|
||||
uint32_t r;
|
||||
r = SHR32(x, 2)
|
||||
^ SHL32(x, 1)
|
||||
^ ROTL32(x, 12)
|
||||
^ ROTR32(x, 7);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_s3(uint32_t x){
|
||||
uint32_t r;
|
||||
r = SHR32(x, 2)
|
||||
^ SHL32(x, 2)
|
||||
^ ROTL32(x, 15)
|
||||
^ ROTR32(x, 3);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_s4(uint32_t x){
|
||||
uint32_t r;
|
||||
r = SHR32(x, 1)
|
||||
^ x;
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_s5(uint32_t x){
|
||||
uint32_t r;
|
||||
r = SHR32(x, 2)
|
||||
^ x;
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_r1(uint32_t x){
|
||||
uint32_t r;
|
||||
r = ROTL32(x, 3);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_r2(uint32_t x){
|
||||
uint32_t r;
|
||||
r = ROTL32(x, 7);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_r3(uint32_t x){
|
||||
uint32_t r;
|
||||
r = ROTL32(x, 13);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_r4(uint32_t x){
|
||||
uint32_t r;
|
||||
r = ROTL32(x, 16);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_r5(uint32_t x){
|
||||
uint32_t r;
|
||||
r = ROTR32(x, 13);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_r6(uint32_t x){
|
||||
uint32_t r;
|
||||
r = ROTR32(x, 9);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_r7(uint32_t x){
|
||||
uint32_t r;
|
||||
r = ROTR32(x, 5);
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_expand1(uint8_t j, const uint32_t* q, const void* m){
|
||||
uint32_t(*s[])(uint32_t) = {bmw_small_s1, bmw_small_s2, bmw_small_s3, bmw_small_s0};
|
||||
uint32_t r;
|
||||
uint8_t i;
|
||||
r = 0x05555555*(j+16);
|
||||
for(i=0; i<16; ++i){
|
||||
r += s[i%4](q[j+i]);
|
||||
}
|
||||
r += ((uint32_t*)m)[j];
|
||||
r += ((uint32_t*)m)[j+3];
|
||||
r -= ((uint32_t*)m)[j+10];
|
||||
return r;
|
||||
}
|
||||
|
||||
uint32_t bmw_small_expand2(uint8_t j, const uint32_t* q, const void* m){
|
||||
uint32_t(*rf[])(uint32_t) = {bmw_small_r1, bmw_small_r2, bmw_small_r3,
|
||||
bmw_small_r4, bmw_small_r5, bmw_small_r6,
|
||||
bmw_small_r7};
|
||||
uint32_t r;
|
||||
uint8_t i;
|
||||
r = 0x05555555*(j+16);
|
||||
for(i=0; i<14; i+=2){
|
||||
r += q[j+i];
|
||||
}
|
||||
for(i=0; i<14; i+=2){
|
||||
r += rf[i/2](q[j+i+1]);
|
||||
}
|
||||
r += bmw_small_s5(q[j+14]);
|
||||
r += bmw_small_s4(q[j+15]);
|
||||
r += ((uint32_t*)m)[j];
|
||||
r += ((uint32_t*)m)[(j+3)%16];
|
||||
r -= ((uint32_t*)m)[(j+10)%16];
|
||||
return r;
|
||||
}
|
||||
|
||||
void bmw_small_f0(uint32_t* q, const uint32_t* h, const void* m){
|
||||
uint32_t t[16];
|
||||
uint8_t i;
|
||||
uint32_t(*s[])(uint32_t)={ bmw_small_s0, bmw_small_s1, bmw_small_s2,
|
||||
bmw_small_s3, bmw_small_s4 };
|
||||
for(i=0; i<16; ++i){
|
||||
t[i] = h[i] ^ ((uint32_t*)m)[i];
|
||||
}
|
||||
dump_x(t, 16, 'T');
|
||||
q[ 0] = (t[ 5] - t[ 7] + t[10] + t[13] + t[14]);
|
||||
q[ 1] = (t[ 6] - t[ 8] + t[11] + t[14] - t[15]);
|
||||
q[ 2] = (t[ 0] + t[ 7] + t[ 9] - t[12] + t[15]);
|
||||
q[ 3] = (t[ 0] - t[ 1] + t[ 8] - t[10] + t[13]);
|
||||
q[ 4] = (t[ 1] + t[ 2] + t[ 9] - t[11] - t[14]);
|
||||
q[ 5] = (t[ 3] - t[ 2] + t[10] - t[12] + t[15]);
|
||||
q[ 6] = (t[ 4] - t[ 0] - t[ 3] - t[11] + t[13]);
|
||||
q[ 7] = (t[ 1] - t[ 4] - t[ 5] - t[12] - t[14]);
|
||||
q[ 8] = (t[ 2] - t[ 5] - t[ 6] + t[13] - t[15]);
|
||||
q[ 9] = (t[ 0] - t[ 3] + t[ 6] - t[ 7] + t[14]);
|
||||
q[10] = (t[ 8] - t[ 1] - t[ 4] - t[ 7] + t[15]);
|
||||
q[11] = (t[ 8] - t[ 0] - t[ 2] - t[ 5] + t[ 9]);
|
||||
q[12] = (t[ 1] + t[ 3] - t[ 6] - t[ 9] + t[10]);
|
||||
q[13] = (t[ 2] + t[ 4] + t[ 7] + t[10] + t[11]);
|
||||
q[14] = (t[ 3] - t[ 5] + t[ 8] - t[11] - t[12]);
|
||||
q[15] = (t[12] - t[ 4] - t[ 6] - t[ 9] + t[13]);
|
||||
dump_x(q, 16, 'W');
|
||||
for(i=0; i<16; ++i){
|
||||
q[i] = s[i%5](q[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void bmw_small_f1(uint32_t* q, const void* m){
|
||||
uint8_t i;
|
||||
q[16] = bmw_small_expand1(0, q, m);
|
||||
q[17] = bmw_small_expand1(1, q, m);
|
||||
for(i=2; i<16; ++i){
|
||||
q[16+i] = bmw_small_expand2(i, q, m);
|
||||
}
|
||||
}
|
||||
|
||||
void bmw_small_f2(uint32_t* h, const uint32_t* q, const void* m){
|
||||
uint32_t xl=0, xh;
|
||||
uint8_t i;
|
||||
for(i=16;i<24;++i){
|
||||
xl ^= q[i];
|
||||
}
|
||||
xh = xl;
|
||||
for(i=24;i<32;++i){
|
||||
xh ^= q[i];
|
||||
}
|
||||
#if DEBUG
|
||||
cli_putstr_P(PSTR("\r\n XL = "));
|
||||
cli_hexdump_rev(&xl, 4);
|
||||
cli_putstr_P(PSTR("\r\n XH = "));
|
||||
cli_hexdump_rev(&xh, 4);
|
||||
#endif
|
||||
memcpy(h, m, 16*4);
|
||||
h[0] ^= SHL32(xh, 5) ^ SHR32(q[16], 5);
|
||||
h[1] ^= SHR32(xh, 7) ^ SHL32(q[17], 8);
|
||||
h[2] ^= SHR32(xh, 5) ^ SHL32(q[18], 5);
|
||||
h[3] ^= SHR32(xh, 1) ^ SHL32(q[19], 5);
|
||||
h[4] ^= SHR32(xh, 3) ^ q[20];
|
||||
h[5] ^= SHL32(xh, 6) ^ SHR32(q[21], 6);
|
||||
h[6] ^= SHR32(xh, 4) ^ SHL32(q[22], 6);
|
||||
h[7] ^= SHR32(xh,11) ^ SHL32(q[23], 2);
|
||||
for(i=0; i<8; ++i){
|
||||
h[i] += xl ^ q[24+i] ^ q[i];
|
||||
}
|
||||
for(i=0; i<8; ++i){
|
||||
h[8+i] ^= xh ^ q[24+i];
|
||||
h[8+i] += ROTL32(h[(4+i)%8],i+9);
|
||||
}
|
||||
h[ 8] += SHL32(xl, 8) ^ q[23] ^ q[ 8];
|
||||
h[ 9] += SHR32(xl, 6) ^ q[16] ^ q[ 9];
|
||||
h[10] += SHL32(xl, 6) ^ q[17] ^ q[10];
|
||||
h[11] += SHL32(xl, 4) ^ q[18] ^ q[11];
|
||||
h[12] += SHR32(xl, 3) ^ q[19] ^ q[12];
|
||||
h[13] += SHR32(xl, 4) ^ q[20] ^ q[13];
|
||||
h[14] += SHR32(xl, 7) ^ q[21] ^ q[14];
|
||||
h[15] += SHR32(xl, 2) ^ q[22] ^ q[15];
|
||||
}
|
||||
|
||||
void bmw_small_nextBlock(bmw_small_ctx_t* ctx, const void* block){
|
||||
uint32_t q[32];
|
||||
dump_x(block, 16, 'M');
|
||||
bmw_small_f0(q, ctx->h, block);
|
||||
dump_x(q, 16, 'Q');
|
||||
bmw_small_f1(q, block);
|
||||
dump_x(q, 32, 'Q');
|
||||
bmw_small_f2(ctx->h, q, block);
|
||||
ctx->counter += 1;
|
||||
ctx_dump(ctx);
|
||||
}
|
||||
|
||||
void bmw_small_lastBlock(bmw_small_ctx_t* ctx, const void* block, uint16_t length_b){
|
||||
uint8_t buffer[64];
|
||||
while(length_b >= BMW_SMALL_BLOCKSIZE){
|
||||
bmw_small_nextBlock(ctx, block);
|
||||
length_b -= BMW_SMALL_BLOCKSIZE;
|
||||
block = (uint8_t*)block + BMW_SMALL_BLOCKSIZE_B;
|
||||
}
|
||||
memset(buffer, 0, 64);
|
||||
memcpy(buffer, block, (length_b+7)/8);
|
||||
buffer[length_b>>3] |= 0x80 >> (length_b&0x07);
|
||||
if(length_b+1>64*8-64){
|
||||
bmw_small_nextBlock(ctx, buffer);
|
||||
memset(buffer, 0, 64-8);
|
||||
ctx->counter -= 1;
|
||||
}
|
||||
*((uint64_t*)&(buffer[64-8])) = (uint64_t)(ctx->counter*512LL)+(uint64_t)length_b;
|
||||
bmw_small_nextBlock(ctx, buffer);
|
||||
}
|
||||
|
||||
void bmw224_init(bmw224_ctx_t* ctx){
|
||||
uint8_t i;
|
||||
ctx->h[0] = 0x00010203;
|
||||
for(i=1; i<16; ++i){
|
||||
ctx->h[i] = ctx->h[i-1]+ 0x04040404;
|
||||
}
|
||||
#if BUG24
|
||||
ctx->h[13] = 0x24353637;
|
||||
#endif
|
||||
ctx->counter=0;
|
||||
ctx_dump(ctx);
|
||||
}
|
||||
|
||||
void bmw256_init(bmw256_ctx_t* ctx){
|
||||
uint8_t i;
|
||||
ctx->h[0] = 0x40414243;
|
||||
for(i=1; i<16; ++i){
|
||||
ctx->h[i] = ctx->h[i-1]+ 0x04040404;
|
||||
}
|
||||
ctx->counter=0;
|
||||
ctx_dump(ctx);
|
||||
}
|
||||
|
||||
void bmw224_nextBlock(bmw224_ctx_t* ctx, const void* block){
|
||||
bmw_small_nextBlock(ctx, block);
|
||||
}
|
||||
|
||||
void bmw256_nextBlock(bmw256_ctx_t* ctx, const void* block){
|
||||
bmw_small_nextBlock(ctx, block);
|
||||
}
|
||||
|
||||
void bmw224_lastBlock(bmw224_ctx_t* ctx, const void* block, uint16_t length_b){
|
||||
bmw_small_lastBlock(ctx, block, length_b);
|
||||
}
|
||||
|
||||
void bmw256_lastBlock(bmw256_ctx_t* ctx, const void* block, uint16_t length_b){
|
||||
bmw_small_lastBlock(ctx, block, length_b);
|
||||
}
|
||||
|
||||
void bmw224_ctx2hash(void* dest, const bmw224_ctx_t* ctx){
|
||||
memcpy(dest, &(ctx->h[9]), 224/8);
|
||||
}
|
||||
|
||||
void bmw256_ctx2hash(void* dest, const bmw256_ctx_t* ctx){
|
||||
memcpy(dest, &(ctx->h[8]), 256/8);
|
||||
}
|
||||
|
||||
void bmw224(void* dest, const void* msg, uint32_t length_b){
|
||||
bmw_small_ctx_t ctx;
|
||||
bmw224_init(&ctx);
|
||||
while(length_b>=BMW_SMALL_BLOCKSIZE){
|
||||
bmw_small_nextBlock(&ctx, msg);
|
||||
length_b -= BMW_SMALL_BLOCKSIZE;
|
||||
msg = (uint8_t*)msg + BMW_SMALL_BLOCKSIZE_B;
|
||||
}
|
||||
bmw_small_lastBlock(&ctx, msg, length_b);
|
||||
bmw224_ctx2hash(dest, &ctx);
|
||||
}
|
||||
|
||||
void bmw256(void* dest, const void* msg, uint32_t length_b){
|
||||
bmw_small_ctx_t ctx;
|
||||
bmw256_init(&ctx);
|
||||
while(length_b>=BMW_SMALL_BLOCKSIZE){
|
||||
bmw_small_nextBlock(&ctx, msg);
|
||||
length_b -= BMW_SMALL_BLOCKSIZE;
|
||||
msg = (uint8_t*)msg + BMW_SMALL_BLOCKSIZE_B;
|
||||
}
|
||||
bmw_small_lastBlock(&ctx, msg, length_b);
|
||||
bmw256_ctx2hash(dest, &ctx);
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
/* bmw_small.h */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2009 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 bmw_small.h
|
||||
* \author Daniel Otte
|
||||
* \email daniel.otte@rub.de
|
||||
* \date 2009-04-27
|
||||
* \license GPLv3 or later
|
||||
*
|
||||
*/
|
||||
#ifndef BMW_SMALL_H_
|
||||
#define BMW_SMALL_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define BMW_SMALL_BLOCKSIZE 512
|
||||
#define BMW_SMALL_BLOCKSIZE_B ((BMW_SMALL_BLOCKSIZE+7)/8)
|
||||
#define BMW224_BLOCKSIZE BMW_SMALL_BLOCKSIZE
|
||||
#define BMW224_BLOCKSIZE_B BMW_SMALL_BLOCKSIZE_B
|
||||
#define BMW256_BLOCKSIZE BMW_SMALL_BLOCKSIZE
|
||||
#define BMW256_BLOCKSIZE_B BMW_SMALL_BLOCKSIZE_B
|
||||
|
||||
typedef struct {
|
||||
uint32_t h[16];
|
||||
uint32_t counter;
|
||||
} bmw_small_ctx_t;
|
||||
|
||||
typedef bmw_small_ctx_t bmw224_ctx_t;
|
||||
typedef bmw_small_ctx_t bmw256_ctx_t;
|
||||
|
||||
void bmw224_init(bmw224_ctx_t* ctx);
|
||||
void bmw256_init(bmw256_ctx_t* ctx);
|
||||
|
||||
void bmw_small_nextBlock(bmw_small_ctx_t* ctx, const void* block);
|
||||
void bmw_small_lastBlock(bmw_small_ctx_t* ctx, const void* block, uint16_t length_b);
|
||||
|
||||
void bmw224_nextBlock(bmw224_ctx_t* ctx, const void* block);
|
||||
void bmw224_lastBlock(bmw224_ctx_t* ctx, const void* block, uint16_t length_b);
|
||||
|
||||
void bmw256_nextBlock(bmw256_ctx_t* ctx, const void* block);
|
||||
void bmw256_lastBlock(bmw256_ctx_t* ctx, const void* block, uint16_t length_b);
|
||||
|
||||
void bmw224_ctx2hash(void* dest, const bmw224_ctx_t* ctx);
|
||||
void bmw256_ctx2hash(void* dest, const bmw256_ctx_t* ctx);
|
||||
|
||||
void bmw224(void* dest, const void* msg, uint32_t length_b);
|
||||
void bmw256(void* dest, const void* msg, uint32_t length_b);
|
||||
|
||||
#endif /* BMW_SMALL_H_ */
|
|
@ -0,0 +1,67 @@
|
|||
/* hfal_bmw_large.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_bmw_large.c
|
||||
* \email daniel.otte@rub.de
|
||||
* \author Daniel Otte
|
||||
* \date 2009-04-28
|
||||
* \license GPLv3 or later
|
||||
*
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include <stdlib.h>
|
||||
#include "hashfunction_descriptor.h"
|
||||
#include "bmw_large.h"
|
||||
|
||||
|
||||
static const char bmw384_str[] PROGMEM = "BlueMidnightWish-384";
|
||||
static const char bmw512_str[] PROGMEM = "BlueMidnightWish-512";
|
||||
|
||||
const hfdesc_t bmw384_desc PROGMEM = {
|
||||
HFDESC_TYPE_HASHFUNCTION,
|
||||
0,
|
||||
bmw384_str,
|
||||
sizeof(bmw384_ctx_t),
|
||||
BMW384_BLOCKSIZE,
|
||||
384,
|
||||
(hf_init_fpt)bmw384_init,
|
||||
(hf_nextBlock_fpt)bmw384_nextBlock,
|
||||
(hf_lastBlock_fpt)bmw384_lastBlock,
|
||||
(hf_ctx2hash_fpt)bmw384_ctx2hash,
|
||||
(hf_free_fpt)NULL,
|
||||
(hf_mem_fpt)bmw384
|
||||
};
|
||||
|
||||
const hfdesc_t bmw512_desc PROGMEM = {
|
||||
HFDESC_TYPE_HASHFUNCTION,
|
||||
0,
|
||||
bmw512_str,
|
||||
sizeof(bmw512_ctx_t),
|
||||
BMW512_BLOCKSIZE,
|
||||
512,
|
||||
(hf_init_fpt)bmw512_init,
|
||||
(hf_nextBlock_fpt)bmw512_nextBlock,
|
||||
(hf_lastBlock_fpt)bmw512_lastBlock,
|
||||
(hf_ctx2hash_fpt)bmw512_ctx2hash,
|
||||
(hf_free_fpt)NULL,
|
||||
(hf_mem_fpt)bmw512
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
/* hfal_bmw_large.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_bmw_large.h
|
||||
* \email daniel.otte@rub.de
|
||||
* \author Daniel Otte
|
||||
* \date 2009-04-28
|
||||
* \license GPLv3 or later
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef HFAL_BMW_LARGE_H_
|
||||
#define HFAL_BMW_LARGE_H_
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include "hashfunction_descriptor.h"
|
||||
|
||||
extern const hfdesc_t bmw384_desc;
|
||||
extern const hfdesc_t bmw512_desc;
|
||||
|
||||
#endif /* HFAL_BMW_LARGE_H_ */
|
|
@ -0,0 +1,67 @@
|
|||
/* hfal_bmw_small.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_bmw_small.c
|
||||
* \email daniel.otte@rub.de
|
||||
* \author Daniel Otte
|
||||
* \date 2009-04-28
|
||||
* \license GPLv3 or later
|
||||
*
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include <stdlib.h>
|
||||
#include "hashfunction_descriptor.h"
|
||||
#include "bmw_small.h"
|
||||
|
||||
|
||||
static const char bmw224_str[] PROGMEM = "BlueMidnightWish-224";
|
||||
static const char bmw256_str[] PROGMEM = "BlueMidnightWish-256";
|
||||
|
||||
const hfdesc_t bmw224_desc PROGMEM = {
|
||||
HFDESC_TYPE_HASHFUNCTION,
|
||||
0,
|
||||
bmw224_str,
|
||||
sizeof(bmw224_ctx_t),
|
||||
BMW224_BLOCKSIZE,
|
||||
224,
|
||||
(hf_init_fpt)bmw224_init,
|
||||
(hf_nextBlock_fpt)bmw224_nextBlock,
|
||||
(hf_lastBlock_fpt)bmw224_lastBlock,
|
||||
(hf_ctx2hash_fpt)bmw224_ctx2hash,
|
||||
(hf_free_fpt)NULL,
|
||||
(hf_mem_fpt)bmw224
|
||||
};
|
||||
|
||||
const hfdesc_t bmw256_desc PROGMEM = {
|
||||
HFDESC_TYPE_HASHFUNCTION,
|
||||
0,
|
||||
bmw256_str,
|
||||
sizeof(bmw256_ctx_t),
|
||||
BMW256_BLOCKSIZE,
|
||||
256,
|
||||
(hf_init_fpt)bmw256_init,
|
||||
(hf_nextBlock_fpt)bmw256_nextBlock,
|
||||
(hf_lastBlock_fpt)bmw256_lastBlock,
|
||||
(hf_ctx2hash_fpt)bmw256_ctx2hash,
|
||||
(hf_free_fpt)NULL,
|
||||
(hf_mem_fpt)bmw256
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
/* hfal_bmw_small.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_bmw_small.h
|
||||
* \email daniel.otte@rub.de
|
||||
* \author Daniel Otte
|
||||
* \date 2009-04-28
|
||||
* \license GPLv3 or later
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef HFAL_BMW_SMALL_H_
|
||||
#define HFAL_BMW_SMALL_H_
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include "hashfunction_descriptor.h"
|
||||
|
||||
extern const hfdesc_t bmw224_desc;
|
||||
extern const hfdesc_t bmw256_desc;
|
||||
|
||||
#endif /* HFAL_BMW_SMALL_H_ */
|
|
@ -57,7 +57,7 @@ def send_md(md_string)
|
|||
$sp.print(md_string[i].chr)
|
||||
# print("DBG s: "+ md_string[i].chr) if $debug
|
||||
if(i%20==19)
|
||||
# sleep(0.1)
|
||||
sleep(0.01)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -99,6 +99,7 @@ def run_test(filename)
|
|||
putc('*')
|
||||
else
|
||||
putc('!')
|
||||
# printf("\nshould: %s\ngot: %s\n",lb,avr_md)
|
||||
errors += 1;
|
||||
end
|
||||
pos += 1
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
# Makefile for BlueMidnightWish
|
||||
ALGO_NAME := BMW_C
|
||||
|
||||
# comment out the following line for removement of BlueMidnightWish from the build process
|
||||
HASHES += $(ALGO_NAME)
|
||||
|
||||
|
||||
$(ALGO_NAME)_OBJ := bmw_small.o bmw_large.o
|
||||
$(ALGO_NAME)_TEST_BIN := main-bmw-test.o debug.o uart.o hexdigit_tab.o \
|
||||
dbz_strings.o nessie_common.o cli.o string-extras.o performance_test.o \
|
||||
nessie_hash_test.o hfal-basic.o hfal_bmw_small.o hfal_bmw_large.o shavs.o
|
||||
$(ALGO_NAME)_NESSIE_TEST := test nessie
|
||||
$(ALGO_NAME)_PERFORMANCE_TEST := performance
|
||||
|
|
@ -80,7 +80,7 @@ uint16_t cli_getc_cecho(void){
|
|||
/**
|
||||
* \brief ouputs a zero-terminated string from ram to the console
|
||||
*/
|
||||
void cli_putstr(char* s){
|
||||
void cli_putstr(const char* s){
|
||||
if(!cli_tx)
|
||||
return;
|
||||
while(*s)
|
||||
|
@ -126,7 +126,7 @@ uint8_t cli_getsn(char* s, uint16_t n){
|
|||
* Dumps length bytes from data to the console ouput. The dump
|
||||
* will have 2*n continous hexadecimal characters.
|
||||
*/
|
||||
void cli_hexdump(void* data, uint16_t length){
|
||||
void cli_hexdump(const void* data, uint16_t length){
|
||||
if(!cli_tx)
|
||||
return;
|
||||
while(length--){
|
||||
|
@ -142,7 +142,7 @@ void cli_hexdump(void* data, uint16_t length){
|
|||
* bytes are dumped in reverse order. This is usefull to dump
|
||||
* integers which ar e in little endian order.
|
||||
*/
|
||||
void cli_hexdump_rev(void* data, uint16_t length){
|
||||
void cli_hexdump_rev(const void* data, uint16_t length){
|
||||
if(!cli_tx)
|
||||
return;
|
||||
data = (uint8_t*)data + length -1;
|
||||
|
@ -158,7 +158,7 @@ void cli_hexdump_rev(void* data, uint16_t length){
|
|||
* Like cli_hexdump but bytes are seperated with a single space
|
||||
* on the console output.
|
||||
*/
|
||||
void cli_hexdump2(void* data, uint16_t length){
|
||||
void cli_hexdump2(const void* data, uint16_t length){
|
||||
if(!cli_tx)
|
||||
return;
|
||||
while(length--){
|
||||
|
@ -174,7 +174,7 @@ void cli_hexdump2(void* data, uint16_t length){
|
|||
* Like cli_hexdump but bytes are seperated with a single space
|
||||
* on the console output.
|
||||
*/
|
||||
void cli_hexdump_block(void* data, uint16_t length, uint8_t indent, uint8_t width){
|
||||
void cli_hexdump_block(const void* data, uint16_t length, uint8_t indent, uint8_t width){
|
||||
uint16_t i;
|
||||
uint8_t j;
|
||||
if(!cli_tx)
|
||||
|
|
|
@ -57,12 +57,12 @@ void cli_putc(char c);
|
|||
uint16_t cli_getc(void);
|
||||
uint16_t cli_getc_cecho(void);
|
||||
uint8_t cli_getsn(char* s, uint16_t n);
|
||||
void cli_putstr(char* s);
|
||||
void cli_putstr(const char* s);
|
||||
void cli_putstr_P(PGM_P s);
|
||||
void cli_hexdump(void* data, uint16_t length);
|
||||
void cli_hexdump_rev(void* data, uint16_t length);
|
||||
void cli_hexdump2(void* data, uint16_t length);
|
||||
void cli_hexdump_block(void* data, uint16_t length, uint8_t indent, uint8_t width);
|
||||
void cli_hexdump(const void* data, uint16_t length);
|
||||
void cli_hexdump_rev(const void* data, uint16_t length);
|
||||
void cli_hexdump2(const void* data, uint16_t length);
|
||||
void cli_hexdump_block(const void* data, uint16_t length, uint8_t indent, uint8_t width);
|
||||
|
||||
void echo_ctrl(char* s);
|
||||
int8_t cmd_interface(PGM_VOID_P cmd_desc);
|
||||
|
|
|
@ -0,0 +1,305 @@
|
|||
/* main-shabal-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/>.
|
||||
*/
|
||||
/*
|
||||
* shabal test-suit
|
||||
*
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "serial-tools.h"
|
||||
#include "uart.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "bmw_small.h"
|
||||
#include "bmw_large.h"
|
||||
#include "cli.h"
|
||||
#include "hfal_bmw_small.h"
|
||||
#include "hfal_bmw_large.h"
|
||||
#include "shavs.h"
|
||||
#include "nessie_hash_test.h"
|
||||
#include "performance_test.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
char* algo_name = "BlueMidnightWish";
|
||||
|
||||
/*****************************************************************************
|
||||
* additional validation-functions *
|
||||
*****************************************************************************/
|
||||
|
||||
void performance_bmw(void){
|
||||
uint64_t t;
|
||||
char str[16];
|
||||
uint8_t data[128];
|
||||
uint8_t hash[512/8];
|
||||
bmw_small_ctx_t ctx1;
|
||||
bmw_large_ctx_t ctx2;
|
||||
|
||||
calibrateTimer();
|
||||
print_overhead();
|
||||
|
||||
memset(data, 0, 64);
|
||||
|
||||
startTimer(1);
|
||||
bmw224_init(&ctx1);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tctx-gen time (224): "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw256_init(&ctx1);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tctx-gen time (256): "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw384_init(&ctx2);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tctx-gen time (384): "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw512_init(&ctx2);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tctx-gen time (512): "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw_small_nextBlock(&ctx1, data);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tone-block (small) time: "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw_large_nextBlock(&ctx2, data);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tone-block (large) time: "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw_small_lastBlock(&ctx1, data, 0);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tlast block (small) time: "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw_large_lastBlock(&ctx2, data, 0);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tlast block (large) time: "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw224_ctx2hash(hash, &ctx1);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tctx2hash time (224): "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw256_ctx2hash(hash, &ctx1);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tctx2hash time (256): "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw384_ctx2hash(hash, &ctx2);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tctx2hash time (384): "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
startTimer(1);
|
||||
bmw512_ctx2hash(hash, &ctx2);
|
||||
t = stopTimer();
|
||||
cli_putstr_P(PSTR("\r\n\tctx2hash time (512): "));
|
||||
ultoa((unsigned long)t, str, 10);
|
||||
cli_putstr(str);
|
||||
|
||||
cli_putstr_P(PSTR("\r\n"));
|
||||
}
|
||||
|
||||
void testrun_nessie_bmw(void){
|
||||
nessie_hash_ctx.hashsize_b = 224;
|
||||
nessie_hash_ctx.name = "BlueMidnigthWish-224";
|
||||
nessie_hash_ctx.blocksize_B = 512/8;
|
||||
nessie_hash_ctx.ctx_size_B = sizeof(bmw224_ctx_t);
|
||||
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)bmw224_init;
|
||||
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)bmw224_nextBlock;
|
||||
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)bmw224_lastBlock;
|
||||
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)bmw224_ctx2hash;
|
||||
|
||||
nessie_hash_run();
|
||||
|
||||
nessie_hash_ctx.hashsize_b = 256;
|
||||
nessie_hash_ctx.name = "BlueMidnigthWish-256";
|
||||
nessie_hash_ctx.blocksize_B = 512/8;
|
||||
nessie_hash_ctx.ctx_size_B = sizeof(bmw256_ctx_t);
|
||||
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)bmw256_init;
|
||||
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)bmw256_nextBlock;
|
||||
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)bmw256_lastBlock;
|
||||
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)bmw256_ctx2hash;
|
||||
|
||||
nessie_hash_run();
|
||||
|
||||
nessie_hash_ctx.hashsize_b = 384;
|
||||
nessie_hash_ctx.name = "BlueMidnigthWish-384";
|
||||
nessie_hash_ctx.blocksize_B = 1024/8;
|
||||
nessie_hash_ctx.ctx_size_B = sizeof(bmw384_ctx_t);
|
||||
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)bmw384_init;
|
||||
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)bmw384_nextBlock;
|
||||
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)bmw384_lastBlock;
|
||||
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)bmw384_ctx2hash;
|
||||
|
||||
nessie_hash_run();
|
||||
|
||||
nessie_hash_ctx.hashsize_b = 512;
|
||||
nessie_hash_ctx.name = "BlueMidnigthWish-512";
|
||||
nessie_hash_ctx.blocksize_B = 1024/8;
|
||||
nessie_hash_ctx.ctx_size_B = sizeof(bmw512_ctx_t);
|
||||
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)bmw512_init;
|
||||
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)bmw512_nextBlock;
|
||||
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)bmw512_lastBlock;
|
||||
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)bmw512_ctx2hash;
|
||||
|
||||
nessie_hash_run();
|
||||
}
|
||||
void bmw224_test(void* msg, uint32_t length_b){
|
||||
uint8_t diggest[224/8];
|
||||
cli_putstr_P(PSTR("\r\n=== BMW224 test ===\r\n message:\r\n"));
|
||||
cli_hexdump_block(msg, (length_b+7)/8, 4, 16);
|
||||
bmw224(diggest, msg, length_b);
|
||||
cli_putstr_P(PSTR("\r\n diggest:\r\n"));
|
||||
cli_hexdump_block(diggest, 224/8, 4, 16);
|
||||
}
|
||||
|
||||
void bmw256_test(void* msg, uint32_t length_b){
|
||||
uint8_t diggest[256/8];
|
||||
cli_putstr_P(PSTR("\r\n=== BMW256 test ===\r\n message:\r\n"));
|
||||
cli_hexdump_block(msg, (length_b+7)/8, 4, 16);
|
||||
bmw256(diggest, msg, length_b);
|
||||
cli_putstr_P(PSTR("\r\n diggest:\r\n"));
|
||||
cli_hexdump_block(diggest, 256/8, 4, 16);
|
||||
}
|
||||
|
||||
void bmw384_test(void* msg, uint32_t length_b){
|
||||
uint8_t diggest[384/8];
|
||||
cli_putstr_P(PSTR("\r\n=== BMW384 test ===\r\n message:\r\n"));
|
||||
cli_hexdump_block(msg, (length_b+7)/8, 4, 16);
|
||||
bmw384(diggest, msg, length_b);
|
||||
cli_putstr_P(PSTR("\r\n diggest:\r\n"));
|
||||
cli_hexdump_block(diggest, 384/8, 4, 16);
|
||||
}
|
||||
|
||||
void bmw512_test(void* msg, uint32_t length_b){
|
||||
uint8_t diggest[512/8];
|
||||
cli_putstr_P(PSTR("\r\n=== BMW512 test ===\r\n message:\r\n"));
|
||||
cli_hexdump_block(msg, (length_b+7)/8, 4, 16);
|
||||
bmw512(diggest, msg, length_b);
|
||||
cli_putstr_P(PSTR("\r\n diggest:\r\n"));
|
||||
cli_hexdump_block(diggest, 512/8, 4, 16);
|
||||
}
|
||||
|
||||
void testrun_stdtest_bmw(void){
|
||||
char* msg0 = "abc";
|
||||
char* msg1 = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
|
||||
bmw224_test(msg0, strlen(msg0)*8);
|
||||
bmw224_test(msg1, strlen(msg1)*8);
|
||||
bmw256_test(msg0, strlen(msg0)*8);
|
||||
bmw256_test(msg1, strlen(msg1)*8);
|
||||
bmw384_test(msg0, strlen(msg0)*8);
|
||||
bmw384_test(msg1, strlen(msg1)*8);
|
||||
bmw512_test(msg0, strlen(msg0)*8);
|
||||
bmw512_test(msg1, strlen(msg1)*8);
|
||||
}
|
||||
|
||||
void testshort(void){
|
||||
char* msg0 = "abc";
|
||||
bmw224_test(msg0, strlen(msg0)*8);
|
||||
}
|
||||
|
||||
void testlshort(void){
|
||||
char* msg0 = "abc";
|
||||
bmw384_test(msg0, strlen(msg0)*8);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* main *
|
||||
*****************************************************************************/
|
||||
|
||||
const hfdesc_t* algolist[] PROGMEM = {
|
||||
(hfdesc_t*)&bmw224_desc,
|
||||
(hfdesc_t*)&bmw256_desc,
|
||||
(hfdesc_t*)&bmw384_desc,
|
||||
(hfdesc_t*)&bmw512_desc,
|
||||
NULL
|
||||
};
|
||||
|
||||
const char nessie_str[] PROGMEM = "nessie";
|
||||
const char test_str[] PROGMEM = "test";
|
||||
const char testshort_str[] PROGMEM = "short";
|
||||
const char testlshort_str[] PROGMEM = "lshort";
|
||||
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";
|
||||
|
||||
cmdlist_entry_t cmdlist[] PROGMEM = {
|
||||
{ nessie_str, NULL, testrun_nessie_bmw},
|
||||
{ test_str, NULL, testrun_stdtest_bmw},
|
||||
{ testshort_str, NULL, testshort},
|
||||
{ testlshort_str, NULL, testlshort},
|
||||
{ performance_str, NULL, performance_bmw},
|
||||
{ shavs_list_str, NULL, shavs_listalgos},
|
||||
{ shavs_set_str, (void*)1, (void_fpt)shavs_setalgo},
|
||||
{ shavs_test1_str, NULL, shavs_test1},
|
||||
{ echo_str, (void*)1, (void_fpt)echo_ctrl},
|
||||
{ NULL, NULL, NULL}
|
||||
};
|
||||
|
||||
int main (void){
|
||||
DEBUG_INIT();
|
||||
|
||||
cli_rx = uart_getc;
|
||||
cli_tx = uart_putc;
|
||||
shavs_algolist=(hfdesc_t**)algolist;
|
||||
shavs_algo=(hfdesc_t*)&bmw256_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);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
# ExtremelyLongMsgKAT.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Repeat = 16777216
|
||||
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
|
||||
MD = ??
|
|
@ -0,0 +1,7 @@
|
|||
# ExtremelyLongMsgKAT_224.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Repeat = 16777216
|
||||
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
|
||||
MD = 1C6AEBB953F4DE9E084009B724405848EEE62C88311A514860B46B3E
|
|
@ -0,0 +1,7 @@
|
|||
# ExtremelyLongMsgKAT_256.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Repeat = 16777216
|
||||
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
|
||||
MD = 154FF90923F8925F817221748DB28F7FEEDCB16CC18D59CA581481E0FE96914D
|
|
@ -0,0 +1,7 @@
|
|||
# ExtremelyLongMsgKAT_384.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Repeat = 16777216
|
||||
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
|
||||
MD = 2F7C4B2F7DC990A585CD729FC5E7E667461E178A071585F9F007F1E81574194B7BDDBD68FFE6BF25396D7811A501ECDA
|
|
@ -0,0 +1,7 @@
|
|||
# ExtremelyLongMsgKAT_512.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Repeat = 16777216
|
||||
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
|
||||
MD = 068B5284CDED9DADCF4E7449FB36885C626A0DD445BD8E0799A4EDCDC6962F3F83FDD73C5BB91844E275C0EB22990E5CEDE42097B61BCAE06F178EF86A2E3716
|
File diff suppressed because it is too large
Load Diff
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
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
|||
# MonteCarlo.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Seed = 6cd4c0c5cb2ca2a0f1d1aecebac03b52e64ea03d1a1654372936545b92bbc5484a59db74bb60f9c40ceb1a5aa35a6fafe80349e14c253a4e8b1d77612ddd81ace926ae8b0af6e53176dbffcc2a6b88c6bd765f939d3d178a9bde9ef3aa131c61e31c1e42cdfaf4b4dcde579a37e150efbef5555b4c1cb40439d835a724e2fae7
|
|
@ -0,0 +1,305 @@
|
|||
# MonteCarlo_224.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
|
||||
|
||||
j = 0
|
||||
MD = 76556102761BBD360B67F193A3035C10A117CEA5BDBE759722F4346A
|
||||
|
||||
j = 1
|
||||
MD = 2C9728E2930CCC92B6E7C121BA1EE7178EF477E4F0B53ACAE289C288
|
||||
|
||||
j = 2
|
||||
MD = 3CF60680172E8434DECED0DD072C9F26FAC7CA8F7BAF3406BB208021
|
||||
|
||||
j = 3
|
||||
MD = D53110427D51B5A4929A8D85227ECAA959F067D1D521555A0BA7141F
|
||||
|
||||
j = 4
|
||||
MD = 17970CF79AA93558B262C07C5689BD69F437C34743894ED6E3F943A5
|
||||
|
||||
j = 5
|
||||
MD = 1552FCC0F7DB45D8009785C43F83434581A719871C181952D4B5ACB9
|
||||
|
||||
j = 6
|
||||
MD = 263A9E6647964C28DF7BE5109FDD0B28743C11B0ECC09F4B05DA6474
|
||||
|
||||
j = 7
|
||||
MD = 60FD954E895B238FC7DFE6C5A884E9FB4F0EEC370DAD491BAC901F45
|
||||
|
||||
j = 8
|
||||
MD = F3F46CD6C7932573D6075A4C03C65B1257C2088E9BEC3A92540CF446
|
||||
|
||||
j = 9
|
||||
MD = 49C9A0DA7EAAAAE3846B376F11BD9A312CD42F430B58F59414359073
|
||||
|
||||
j = 10
|
||||
MD = 3BD41460D129F083E4949DBF0FD23FED847C3D6CE45E665DEEADE218
|
||||
|
||||
j = 11
|
||||
MD = 37D1335030C16A240F9B4E55340268C437A6F7637C190BCBB7BFD0D0
|
||||
|
||||
j = 12
|
||||
MD = 7096C729DCE4223BAB62B54178D7C3B413DB8AF692B4D85DD524E22C
|
||||
|
||||
j = 13
|
||||
MD = 59581177A0E42EC99A0C88DAEF192A0B9575FF51FB09E623F3CDD7BC
|
||||
|
||||
j = 14
|
||||
MD = 1BD2A901A358BB6B60979DADFEC729C2E6AEF85B12B1218DDD1F7CB5
|
||||
|
||||
j = 15
|
||||
MD = 701640321007A23D22C791E24259E211C37D0BBAA5C2B92DD4017E54
|
||||
|
||||
j = 16
|
||||
MD = 7F9AC3E0DE0EED773EE0487A7DA1287CA6ACAB5AC71C4D733164341B
|
||||
|
||||
j = 17
|
||||
MD = A29EC32C98DCA91F9990A8B7F59CFA4FD6DF541006BD4EF00E7A6574
|
||||
|
||||
j = 18
|
||||
MD = FA438E650CB31ADAB864B9E43365C10752FD1CA87EFA06B728C1000C
|
||||
|
||||
j = 19
|
||||
MD = 3CAC0AB990E246A8642E6CF815A5A733C631FB7C1FE5EC93102D5493
|
||||
|
||||
j = 20
|
||||
MD = 20C79BFC8CC47D9C9B869294AEDEBB0951954380FEE9D30B0C846BB5
|
||||
|
||||
j = 21
|
||||
MD = 2AEA027BCA0B8DEBFA1846FAFA4A2D89A395DECEDA8B753930CFD741
|
||||
|
||||
j = 22
|
||||
MD = A8EF7FB190F992FC2F5D7B02140CD3A21380D32ECED9C3E8FB0D7AEC
|
||||
|
||||
j = 23
|
||||
MD = 98581E6DDA02BD8B5D39BF63BC2B069569293AE3AAC874B22D8EA2DC
|
||||
|
||||
j = 24
|
||||
MD = E49EC4E2EE05F92127225E69D9215BC4C221E89B5EB4A38DAC2B29A2
|
||||
|
||||
j = 25
|
||||
MD = F1B41E9FE24B62C6D814E2CD11D4A92B5480E7003328312C1F91EFA8
|
||||
|
||||
j = 26
|
||||
MD = 275007A5B964B8FF5212D8EA29E47AEED014612861C26F8074DCE72F
|
||||
|
||||
j = 27
|
||||
MD = E725A378B2BA84A48F2362D168E62A588EE6A6862707BE984A0DBB16
|
||||
|
||||
j = 28
|
||||
MD = 829918F41C5D2FB6313FD4B7E067712E87BA3E4B955F769F45B14F3C
|
||||
|
||||
j = 29
|
||||
MD = 17DC2CF03237E3A3832BC863DF6DE0262CAA35DC3EC97EAFAB5C8B86
|
||||
|
||||
j = 30
|
||||
MD = 62A890D9446677480FE7596D6D2FC905FA87EC89D397D28E8A3A6E6E
|
||||
|
||||
j = 31
|
||||
MD = D30C38B3B681C16202C80AB364735F19F402CF82A7382EF053766328
|
||||
|
||||
j = 32
|
||||
MD = 32130233BD45F410C368582A5CB1080684A1721B9C8FEA2377044133
|
||||
|
||||
j = 33
|
||||
MD = 02067EA6D34E7515676203528CD30FC8099ED7E7ABF827160E41AE37
|
||||
|
||||
j = 34
|
||||
MD = CA339D7512884446538BEF66D9A0CF886AD72428C6D0C198CF2D5631
|
||||
|
||||
j = 35
|
||||
MD = F0B16AA7C4A0398CFAFE015FC10CDF6267521E2E4C937DEFFD51B5CE
|
||||
|
||||
j = 36
|
||||
MD = 2221C9F9886CF9E3ACF3C01075EE4CE20F47CDDA6B1C0790F329B3BC
|
||||
|
||||
j = 37
|
||||
MD = 2AE581AC47520A10BBB4F67893B5AB86EF2CF7BCB27B285F68E41882
|
||||
|
||||
j = 38
|
||||
MD = 4B6E7EE2E16426EA29D4C59BB56534A08A36C4ECD3D1B0E0CA6E350C
|
||||
|
||||
j = 39
|
||||
MD = 7DF0DAE210EA6A8F95B25BB13C2151A6BEF7750820AEAA4F3F87F9F9
|
||||
|
||||
j = 40
|
||||
MD = 2C4773A0B9E593448AD9BBE83694A9BB4DB09B754A0A4D8EF42C14B8
|
||||
|
||||
j = 41
|
||||
MD = BDE74EE7D6B130C232FEBC09A71FD73D5FAD7422EE02808AA564E3B1
|
||||
|
||||
j = 42
|
||||
MD = D258440766107DD8D915A34F6B7715D6ADF36971185B854996C326B8
|
||||
|
||||
j = 43
|
||||
MD = 0DFC42393751146D1785D695203CC1EDB260D4A8B783669DC3B168D3
|
||||
|
||||
j = 44
|
||||
MD = 6AF201FBB5E141826BB0C3221B7D46271A801F475A1E3F98041B89DA
|
||||
|
||||
j = 45
|
||||
MD = 8CDC817A33DA4E1D34624D92E9F17D0D728B95A16D65B10701CE230F
|
||||
|
||||
j = 46
|
||||
MD = 88BC7E0419D609D03576312C16D88340DEC5882F2B72E2E20645AA1A
|
||||
|
||||
j = 47
|
||||
MD = EEF022E7A04CD058206B36E22C30BC37D5A1439B20FC6BDB89A977CF
|
||||
|
||||
j = 48
|
||||
MD = 749A7AC16648E53E1DA31B41641A317B2AF3059B3CB2A665D6DDB394
|
||||
|
||||
j = 49
|
||||
MD = E9B0B454489B54E0D9EAFADC7B830D868CA3601E56FDF7E7DD1A9BC6
|
||||
|
||||
j = 50
|
||||
MD = 40242A963466099F0424B2D36259A3B19FF7DDD6E2C56E81884A06FD
|
||||
|
||||
j = 51
|
||||
MD = AFCCD10CE88FF7B5E4F729ABE7AC151F1BE047217BAF319461A74E31
|
||||
|
||||
j = 52
|
||||
MD = 2FF278BFB6E3D6781BD9FF23431D63F532DAB06F10876EC9DA137456
|
||||
|
||||
j = 53
|
||||
MD = C250E2B2D8B87E9E4537ED94B07394ECE5203E8C4C60E0B4AB784808
|
||||
|
||||
j = 54
|
||||
MD = 91DF257E207E0B935B1D72DB311FE1F8B26D5DB106F10E68982FE6D9
|
||||
|
||||
j = 55
|
||||
MD = D0E431D9F90AFDC60D253CBFECE3C170ED832E674AE9C3E14F88153D
|
||||
|
||||
j = 56
|
||||
MD = 197D58B179F51EC4F7486C0D82D85B7C2D4B9EAAD0235CB0D92E19D1
|
||||
|
||||
j = 57
|
||||
MD = 92010C6226DAA4D99F1AB63842A773916C56AD5FC5E1EB689BBCC8DC
|
||||
|
||||
j = 58
|
||||
MD = A781D5A497B77A6303077753E2F3C0713A783794324483A1190BE8F2
|
||||
|
||||
j = 59
|
||||
MD = DF90013D0E7150D5F9B76D36C5651A95D658A4F7CAD3F822B2B8A2D7
|
||||
|
||||
j = 60
|
||||
MD = 43E3EB5F10D7F0D012C35F1412E812B7DB4B0DFC1949846ADBDF738B
|
||||
|
||||
j = 61
|
||||
MD = 0EB54963A557DC7A2559574C28A83FA5487FDC7B742EB1B016112FEF
|
||||
|
||||
j = 62
|
||||
MD = 05C048A02B7376206CDBEDAEF3DEE5AB7132CABB7C8F663E23063780
|
||||
|
||||
j = 63
|
||||
MD = 003F95064FFBDF1D43CE09AE3EDF3F96ABEA38F760687013D66FE1D9
|
||||
|
||||
j = 64
|
||||
MD = D3E17C18958315F683090DB7CC58D52C57FE49C00FB79BCD8A007F07
|
||||
|
||||
j = 65
|
||||
MD = 26C4A783EC68B73D4733033D475EF1870F56A1542E9B614F8F89BEC0
|
||||
|
||||
j = 66
|
||||
MD = 7EF4637255602AFBE15F92DDF4F6945E8F9CE57AA5A4CF9E8A3C038E
|
||||
|
||||
j = 67
|
||||
MD = BCE01511EDB8CA9AA9DA888492DE864395CDB056D1797C6B5F14A47D
|
||||
|
||||
j = 68
|
||||
MD = 8234F4B9F51E488B986AD9D45BF6479A054D4CA0FD61333B992259C4
|
||||
|
||||
j = 69
|
||||
MD = C9C3A8C46CE878BA9CC9050AD84284979202EC1EBB860291E82EDA6F
|
||||
|
||||
j = 70
|
||||
MD = 4DF01D6D7F7DBB48045D528BA2A60910171573AE18EB006B555AEF7B
|
||||
|
||||
j = 71
|
||||
MD = 39E242AB88C9C1B24D10E7B2D80B33A07ABD4DBC15727CF5B591D94C
|
||||
|
||||
j = 72
|
||||
MD = B0E5E1570BE6A90259D7B3EF7FCC669FDCF24C8EBF067CF6C371867E
|
||||
|
||||
j = 73
|
||||
MD = B9FB5C58DD37D6394C5B4C6DAE22D4BE5592F2015FFC78F7C16F5175
|
||||
|
||||
j = 74
|
||||
MD = 4F619E9114972D2C32E65AE49DCCA0DE0075ABFDB55BC489392F2681
|
||||
|
||||
j = 75
|
||||
MD = CD8168AB07EE66BE9BCDE63DE86E7AF3AAB83FFD34CB0BAF80C7AF98
|
||||
|
||||
j = 76
|
||||
MD = AAC93B2AE8844734463A3147EAC94D6D676FDC562CB5CB21B702ABB1
|
||||
|
||||
j = 77
|
||||
MD = 26059E100C71CEE3BB1CA4E0CE96FBA6B5D9C0174A6C47D8595C0045
|
||||
|
||||
j = 78
|
||||
MD = BA04E583551E65BA0951C25818603D46605342052A48F655EEB69655
|
||||
|
||||
j = 79
|
||||
MD = F3B52E510BEFA34521AC50BE6EF16F0FBDEA0CFD2B674F655219216E
|
||||
|
||||
j = 80
|
||||
MD = 80682980439C32676D9771E3A86D4DE465FE366EB5533A3D529DE989
|
||||
|
||||
j = 81
|
||||
MD = BAFF1851E204C07BC86F487A986D08DCD6819A5FBFDB001C01703458
|
||||
|
||||
j = 82
|
||||
MD = F9BB1E975BE17B6B9CE56FF8D4D4A047AFDA3C0FF4C87975BEFB8A16
|
||||
|
||||
j = 83
|
||||
MD = 7F938846733627055794AB3606D89C2EB2DF55740576D07E466730F7
|
||||
|
||||
j = 84
|
||||
MD = E58F8127792794E15A48702F92694738A9D70C884EFFEFC588C4B0B0
|
||||
|
||||
j = 85
|
||||
MD = F387635B10635C2DF1F2B1881F19A97C67271425A95D59A10E177D46
|
||||
|
||||
j = 86
|
||||
MD = 9C19F580B97FD5DBD6783237C1D2458BDC2CEDE82C4A3D9A52B59078
|
||||
|
||||
j = 87
|
||||
MD = 9F0AD396730A8962DDF11E623072E3525BC850EEE567A3A5964C3727
|
||||
|
||||
j = 88
|
||||
MD = B124F21F40AA07EBBB6CCEC881481CC38C98F3442BAF39FC4BE21E72
|
||||
|
||||
j = 89
|
||||
MD = B4846981B020184DA92CD552E7D9A7FEA0E87754C2970A5DB148C1BD
|
||||
|
||||
j = 90
|
||||
MD = 1501A24A5E5D966FDEAA0AAE24ABE885343C496BA5F910FE1860915D
|
||||
|
||||
j = 91
|
||||
MD = 84764A4485BFE7FEA560ED04B507F31C8FA355DC41E23D43180D0490
|
||||
|
||||
j = 92
|
||||
MD = 7A79ADE6CD432066176978897D3CEE178425E02695A3EC60E11655AC
|
||||
|
||||
j = 93
|
||||
MD = 8B32482105113643521D9B7BC2D5730FA89D285A777C7747BD5FED1F
|
||||
|
||||
j = 94
|
||||
MD = 940FE61A0A15F2A63A0760AF2DAE592C70B6A342AC06EC1EE357363B
|
||||
|
||||
j = 95
|
||||
MD = D831B2A317DB5920609B1E21D5FC86B7C40BD0E77D3DDE0DBBF7BCCD
|
||||
|
||||
j = 96
|
||||
MD = EE02BCC0AB0D6B2C57BEA506FEF4212BD06970ACB2EC5623FD3DC975
|
||||
|
||||
j = 97
|
||||
MD = 93AA964B502520C0F0D5D48A60E5647D0CF555B2846F6B659410AA70
|
||||
|
||||
j = 98
|
||||
MD = DDF122BBE03C99FEFF088D11D399501F380BFA2D6729ECA8D92A453D
|
||||
|
||||
j = 99
|
||||
MD = 83AA578EA6072292E65AC81E24DB1982276B11C5807FD558AC01CB9A
|
|
@ -0,0 +1,305 @@
|
|||
# MonteCarlo_256.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
|
||||
|
||||
j = 0
|
||||
MD = 16CEB5C707613F4021C8471715FCCAAAF1C7CC6AAF2DE9F1161986CB760AC6E4
|
||||
|
||||
j = 1
|
||||
MD = 76D2CB3969B6E848C21C5B777DB986C2BC5B98487B175BD091C4B3368741D1E0
|
||||
|
||||
j = 2
|
||||
MD = 73B8FD26DA338A131D0DA131F895942B1CCF0359E3C9AAF2E8C9152FA2922A73
|
||||
|
||||
j = 3
|
||||
MD = F67A1A4C2155C9E0F0705166E536B7AAA72FA6584759E7FA5E0550FD29BAB949
|
||||
|
||||
j = 4
|
||||
MD = 8574D6BB47AC3189F3AFEF649AB1085D70EC1FA609DEFDC930A5163DB8236DC9
|
||||
|
||||
j = 5
|
||||
MD = AF3C40027F5C208B1755F089595294C21A28505CFF7AE734C9796B45261B5BDB
|
||||
|
||||
j = 6
|
||||
MD = 617F53233E0C4112AD318BFDFED9A4418BB2D3D083D33634E94038F594B8B6B2
|
||||
|
||||
j = 7
|
||||
MD = 12C6D1988F109227189BB03A95D67181A83B874D3DA5EDC571F3AED668C503EB
|
||||
|
||||
j = 8
|
||||
MD = 8F44170516CE09953F28E4FA8B3A5DCD9E69B232EEAA56B10F865D22469681E7
|
||||
|
||||
j = 9
|
||||
MD = 6D88BA9324F1DF62C779FED407891F059643EF1C23A6A26D62F4CCF0A984FE4C
|
||||
|
||||
j = 10
|
||||
MD = CE0469027B56033F303AA758FF81F086B2AD230D15C7B1110C19E5FB5764CF7D
|
||||
|
||||
j = 11
|
||||
MD = 4342BCF5CC9FE7D26B62C624165B7D0EE52C1964731EEC36C16C87C8779046ED
|
||||
|
||||
j = 12
|
||||
MD = 7F7EBF054FB57AC5DF3B2CA2C12C4640C8D7184F0D3041776EAF60411A1A34AF
|
||||
|
||||
j = 13
|
||||
MD = 69E0FDC9296287002FDD879CAB22799A54294B144274F0FA7CBCCD4293984F4D
|
||||
|
||||
j = 14
|
||||
MD = 6B96756A221445B9AAAB70FB0C0A0BC53C64790731D8EF163F34750846297D73
|
||||
|
||||
j = 15
|
||||
MD = 7655AC45A004AD1E3F7A2C169490541889108FC571B308D1967075F18778F17D
|
||||
|
||||
j = 16
|
||||
MD = E078E8F6646242D43BE759519FD35A619AC630D1FAB83979F7ACF249894FDC44
|
||||
|
||||
j = 17
|
||||
MD = B5F369B25B0359BA1A559D29842DA7325AC2654E017B644B2316B00A10400E58
|
||||
|
||||
j = 18
|
||||
MD = 5EB82CE533C7AA36557EA50C5B1819A921D17C97793A8CED4841B55C12C7CB45
|
||||
|
||||
j = 19
|
||||
MD = ABF11BE5731C82502AC38BD440EC025E66962118C71B9755EA636A1C61A5683A
|
||||
|
||||
j = 20
|
||||
MD = E0E1DEEBED3787D8CCF1867A4FC31827BC0E9DC4CB36DD7219B619AAE22B7551
|
||||
|
||||
j = 21
|
||||
MD = B4D2C761262C424AFDA02BB1E27EBCB636351D48848F4098F1E87C5F8F46B3C1
|
||||
|
||||
j = 22
|
||||
MD = 674ED95A7BB3BB2CA9FDA6BE874A503A31C98FD3DFDA8E79EC15506E0A535251
|
||||
|
||||
j = 23
|
||||
MD = 8D2A924882E94C20E8D520C31AED4A6C4629BB72750309EA5EEACE0543D2E266
|
||||
|
||||
j = 24
|
||||
MD = F0510BBA8E86969B795168443C214B09F4DC3764B55FF11898FC173B1F906460
|
||||
|
||||
j = 25
|
||||
MD = 7203BFBE7EAE13326CAB3BFFE56FA5CF9F820D819342040D778DFE3BDBB22526
|
||||
|
||||
j = 26
|
||||
MD = 7286ABE0019DF88BA88B683CBA797FAC9ED2748CE39901CB0A6AFB32D31F59C7
|
||||
|
||||
j = 27
|
||||
MD = 1060EA9B328B2F294A038BF25D8F63E27118C748B6B95DD438AB7B5410858B26
|
||||
|
||||
j = 28
|
||||
MD = D16A3D02CC43A896D13BE7632B2ADFA005E58113C464CAA5BDA520FFFC856A76
|
||||
|
||||
j = 29
|
||||
MD = C1447A0531EF063E611CC98EE6E8BD3D0D70BDAF7089FA2053D5A5D5A3590FC2
|
||||
|
||||
j = 30
|
||||
MD = 59275FB3CE2994050C53C5BC47D7DECB7CE129A86F0152BCDCFE755511394E55
|
||||
|
||||
j = 31
|
||||
MD = FAA6D928F159F2D3F494BCB42425437CA93A1D2954FD5B2655AA580AAF1060F2
|
||||
|
||||
j = 32
|
||||
MD = F872C304227C48E37D882801A367A13435A9DAF6C4A8D9E946453E554B78C202
|
||||
|
||||
j = 33
|
||||
MD = 89F89454B6FB5E78838C363825CECAD9F87D0BE1EFE7DA1D43A9945399079AC2
|
||||
|
||||
j = 34
|
||||
MD = 489C11BA865A4AAE459F3D17474055C5B1ED5A40A31363EA0CA39F78CACA4324
|
||||
|
||||
j = 35
|
||||
MD = 15E49096C85A1735EB46669652D578FADDBD04A8A99411C5B7F42923B57ADED5
|
||||
|
||||
j = 36
|
||||
MD = F323C3D5E94744D8D8477678E45E411900E471FDBBED70E658F64A75A2587227
|
||||
|
||||
j = 37
|
||||
MD = 2844815C02F5D4B824D046309A2FD5E6F9DD25D156384814C7F170A7DBA57B61
|
||||
|
||||
j = 38
|
||||
MD = 11BB48FEB41B2F1535BADD793796E78F9C2411808BCBA7A9F22275B6BD2D0CAA
|
||||
|
||||
j = 39
|
||||
MD = 192C5453417889659403F088FDE551DA30602B281BE900371C05A7D7731BC7D8
|
||||
|
||||
j = 40
|
||||
MD = 9481AEB25D69B64E04569CAE441C4326B36B7E1667362C355669DAF34FFF85C5
|
||||
|
||||
j = 41
|
||||
MD = AEE02D52614735077821B24466194ACC12CB5E177A826C529E105F9C58E6BC40
|
||||
|
||||
j = 42
|
||||
MD = 9547EBE5A97B0B14D47097A147DCEF096903B342F1A1243940B8967D491C120C
|
||||
|
||||
j = 43
|
||||
MD = 7AD2AFFDE7C5C32B3827C992E7AE57583E58C8587B1AE252C647BF38A949BD96
|
||||
|
||||
j = 44
|
||||
MD = 11B8A04C94CCAB45CFE296F8F3A0A8D3DB5A81A6BFD68BA7EB0A9B9CDAD940A4
|
||||
|
||||
j = 45
|
||||
MD = 47BF36CD5BCE4D09DD758EA4343A32274C0AAC5D3CA3081D81FDBD3215667D3C
|
||||
|
||||
j = 46
|
||||
MD = D1B0E5A91F29C98CDFECEE5D6524E6DE60B4FFA3AAC32842025BDD9B6073E886
|
||||
|
||||
j = 47
|
||||
MD = 1FE7592B5ECA1870ABE1F015FD74D899F794849B7F05B29CB5A9E966CA0B870D
|
||||
|
||||
j = 48
|
||||
MD = C6BF02F34A8C52B2F540512BCF9128F68C5761F9C0D742187C00FFF41DCE219E
|
||||
|
||||
j = 49
|
||||
MD = 88BF5F70D522A9F99B0904C60D51727B26D3BB0AFA41E0A95547F6DC2DE2458A
|
||||
|
||||
j = 50
|
||||
MD = 9A9AB9E9F8E8533F5176D07897440C847446B525D81CAC2E930A6ED70641EAE4
|
||||
|
||||
j = 51
|
||||
MD = 56460F4D3DEFF583444BB4084363F575BCC1259D248F5E1CC7765458719D3D02
|
||||
|
||||
j = 52
|
||||
MD = 7454D9F9C5E8CCA084F69B9A12AC76D21CB6C99A66CDF175D05824082F6B5B9D
|
||||
|
||||
j = 53
|
||||
MD = 71349E4FB142CAC381541AC39E2A052F0E790372D23139F7A78EB127A33F6995
|
||||
|
||||
j = 54
|
||||
MD = 1CA09941509BCF1C2313AC80DEFBAB6B5095DFA809AFDD3715C351D06BB3CCF2
|
||||
|
||||
j = 55
|
||||
MD = CB9968B9A9A2F7D2DF9122C4FDE438839450DE01A947FDD686A7CC2DC85A59B2
|
||||
|
||||
j = 56
|
||||
MD = 971EAADFB29F4768670CB33994FC4082590BB3443E016B9E6C20219EB53C2B8C
|
||||
|
||||
j = 57
|
||||
MD = 7562A71CEBFD0A91A6ABF95A09EC4B33AACE7D7950B76CD165C6545F3BCCD7CA
|
||||
|
||||
j = 58
|
||||
MD = C20E9CB0718D331ED15A1C1F2A7DB85F9A8FEBA2DF9B645E9CE81B925F1403E3
|
||||
|
||||
j = 59
|
||||
MD = 26F529C778527FF8CFB15B9AA528C8B01825ABC9FB4F8CF8AA8C67194D882DD1
|
||||
|
||||
j = 60
|
||||
MD = D646460DD8DCCA675665663C01291FA178D8B928469B186EE013541FA961B7AE
|
||||
|
||||
j = 61
|
||||
MD = B8319D77F31F6DB675E71A386183E2E5AB8D4A8CAFAB66863F5BF32E2AAD93F0
|
||||
|
||||
j = 62
|
||||
MD = FE185E86D9B0DAD1A656766E68186321E835B47A53AD896041C87959C30A5CD7
|
||||
|
||||
j = 63
|
||||
MD = 63D3B4AD30ABC43282767DA427C6EF47B500874CEECAC33284FC84160ACC26AE
|
||||
|
||||
j = 64
|
||||
MD = 730D598E997F0EB2152568C924ABD0E035EA5776520FFECE44A273F90684DE45
|
||||
|
||||
j = 65
|
||||
MD = FC18AEE76926D91992BC98EEDA3805E6A163C07F33263305862FDF3187E4418F
|
||||
|
||||
j = 66
|
||||
MD = 81C37B5DFE527582245107E79EB1A7A3615093A9C356123CA2A6A094FCBC4058
|
||||
|
||||
j = 67
|
||||
MD = B7FB487E6BD08BB045295291438F8BB178F4B759F5B6CC07432A1BE995997E57
|
||||
|
||||
j = 68
|
||||
MD = 8BE8DAEBE95C6C4EC1292D243398631E2A571A11943215B10CF6BFD0153C42BE
|
||||
|
||||
j = 69
|
||||
MD = D096E01D6987405A62C9319D9E841969B0363C909CFEDFAE402DB794C2067D6D
|
||||
|
||||
j = 70
|
||||
MD = 31FD2EDAA0AE640AA91D0305760A6C0831AB6413CF175542AFB9481F3061763E
|
||||
|
||||
j = 71
|
||||
MD = 7163D5EF4FE9C76E61A890A5275F605DECCE249313E1DBE4A7D28E52021162FE
|
||||
|
||||
j = 72
|
||||
MD = 09DDF1E7AA589373FB1EBBE2AA65105661C71BEE6F6DBDA6344AB1D9723EE73D
|
||||
|
||||
j = 73
|
||||
MD = 60B385A2A85C0B2B474A818650019AFA5F8B6BAC7778CCB0DCEE41D23270B374
|
||||
|
||||
j = 74
|
||||
MD = 65F8100CBD7654EAC14EE57A3850648F3D6C627FA320AEEA42CE880B76D2C482
|
||||
|
||||
j = 75
|
||||
MD = A8E602D14BB5531CC4598622629CFC4BA6DC4D5E946305B8E0A02A84DFB3FEE8
|
||||
|
||||
j = 76
|
||||
MD = C35208EBEDCB3E5C4070716D2A0D10B5DF5CB7B7C6A1615385861C23919D821E
|
||||
|
||||
j = 77
|
||||
MD = 0AA1F3DE06AEB2B842776BE830F8B81E89F5E2BDF51B04E4762E8BB14FCB1DDD
|
||||
|
||||
j = 78
|
||||
MD = 980512AF309329AA5B1FD0962A3E81A5AE5AADF60AE58E2FCCF67BC49922AB61
|
||||
|
||||
j = 79
|
||||
MD = 9D925A98EDFEBEB72CD392146AC0F53F80D2F058BACF708B6D000FE7036CBB47
|
||||
|
||||
j = 80
|
||||
MD = E41BF873C5CA08F903A4C8EFF134DEA8C8E3E145CDF71713F992757898B85B05
|
||||
|
||||
j = 81
|
||||
MD = 260F1ED9D498F24D9952CE533ECBEC9134B345BD13F88A1B0BF02031CD678D43
|
||||
|
||||
j = 82
|
||||
MD = 9E08EF39AD868E8458460D93A219A0070A333ADDA63C6C8E9818D9F33ED530CE
|
||||
|
||||
j = 83
|
||||
MD = 43288B40739542442DC8A1F02301CA4D9E07E3B55E4D8C2A5019024CB82B9685
|
||||
|
||||
j = 84
|
||||
MD = F9DD14E7B8EF437FDF8E5F30D4AB89FB06D96C50BA7BAC2D2C0985B01D69DC19
|
||||
|
||||
j = 85
|
||||
MD = 267F358C790A651203ABBF2DEB3875CB6EFBFFED2ABFC5FA6EEB31E622E6F3B7
|
||||
|
||||
j = 86
|
||||
MD = 2BED0D75FA2E47C1DD089E3A36E8CBE43E5E28ABB36D54F0CDD31CB0D67D4D39
|
||||
|
||||
j = 87
|
||||
MD = D053E3C5F8B5CE0859101DE2339D6D8E178F51A5126B3A1310AE22BCCB1EDDBE
|
||||
|
||||
j = 88
|
||||
MD = ECEB9DF41F982A3820619E9752167103507D9C2B35A77EBB4D3C6FDAD8E081E3
|
||||
|
||||
j = 89
|
||||
MD = C59F1F6BE074C493FD206670D9D427F498B7F5F5C35126B94A4A7E9551643E21
|
||||
|
||||
j = 90
|
||||
MD = 8FCB1678F9FBD2449190E7DD7E8ABFF2D7EA6242C6E8C43EE3B71E810DD6D0BF
|
||||
|
||||
j = 91
|
||||
MD = AD753645888110536617299CD922E32840EF6AFA74207F4236D6B4FBB2F34344
|
||||
|
||||
j = 92
|
||||
MD = 10BCEFC29ECE270D6D7DCC60DF0465ECA9720014CFFAEBE0291DB84E290D7B99
|
||||
|
||||
j = 93
|
||||
MD = 2E58107735A0FE6D1D024F95209963BA508AD5364CA35CEC4452B2A5B235C5A0
|
||||
|
||||
j = 94
|
||||
MD = 577D89BFBD3ECFED813141630E18A7B4E311DC55ED58F2D20FBC25F625EB757D
|
||||
|
||||
j = 95
|
||||
MD = 7F26DAACFD56A32A157FF245704A76DC788FC033FE782C18345756F197649E5F
|
||||
|
||||
j = 96
|
||||
MD = 77EB253A4EE777BD1B4C1CC33DF421F21994FC68642076BE2F4B373619F67E99
|
||||
|
||||
j = 97
|
||||
MD = 5AE3819B90F47537E8404482C6E7EBC6FC56A49C51D1F18E9CE1C60A338ADE6A
|
||||
|
||||
j = 98
|
||||
MD = E85B7E1A2A9E699AC629BBC565FFB3C2FBF8FB2F9732AF5DE231B6D7E6945012
|
||||
|
||||
j = 99
|
||||
MD = 26ED8BE1993C600182381B30327352AE2D638BCDA547C87172BD1D5F650705FF
|
|
@ -0,0 +1,305 @@
|
|||
# MonteCarlo_384.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
|
||||
|
||||
j = 0
|
||||
MD = BE4ADB7645B3BC107EEE8C779630B49332C351A7109A61274C38C3F17CC5D15404F9B407685EADA7D2A3F529DCDBAAD1
|
||||
|
||||
j = 1
|
||||
MD = 880EAED7114DE6DE66FE26F8D2C047CD0FFCECEEB639703F597AE05F3757D95648F0C3D168912E8C55E216D2C8D391A7
|
||||
|
||||
j = 2
|
||||
MD = 6CCF7A3EF29F80125E59D5FE0CC6668E9CCF017A81566DA174B96739E5C337693449A0562091CA0C7E749A4AD9DA92E1
|
||||
|
||||
j = 3
|
||||
MD = 38E49F7064F089D90018C022BFDF21E187A592F21E8A529F69D05013C9AA6AD27427C4E100133463DA434B3775E7BCEE
|
||||
|
||||
j = 4
|
||||
MD = 1F8CD0CEB33B7CB29568E318046D01A620DA6D98C393EB12F1D98EA82DD66E69D1AA0734266BC67EEBD2A225021147C4
|
||||
|
||||
j = 5
|
||||
MD = F0028985D491105EB18ED812F30C91E231601D7393527A37C6D48BA7DDEA1B65DC7F44A044C3268DAF3C807C335E8AA1
|
||||
|
||||
j = 6
|
||||
MD = 82CFDC3D56967C70575CDCD6B999461F15EADDCFD28C25313109267BDF794AEBC5E2B97FD1F7C8FF3E1CDA3D45FCA9A7
|
||||
|
||||
j = 7
|
||||
MD = A0FC6013BCFB6016FDAAA54A1FEE23EDF0E5062C14C83625F1C7E9ED8062167A2134442280929E62A271B3C5ABDC530A
|
||||
|
||||
j = 8
|
||||
MD = 3C466BA3F2FA4E44B3F2E4A5B57E61E5C0FFACFC916E6368652E5E15C4D57EE0DAC4D3EDCAD9CE859F5726A37926169A
|
||||
|
||||
j = 9
|
||||
MD = B028FD26A421C33E35AA39F9922899E888705D1C4E78B95D17F040A305C73B8DDEAD16219CCCDFC54ED9DB55C66014BA
|
||||
|
||||
j = 10
|
||||
MD = 72A787CF72B74361D35DE74CE6B7DEE288DAA737D5FCF8F369B44F7F183A619E38065FA759C4F6E452969C8EA4AF33E2
|
||||
|
||||
j = 11
|
||||
MD = F6ABE15CC8AA6112A41C91E16124AA04FB0476739DDEA349B15AD3254F0EFF6BFF11B0BAF81B80987544EA9D4D57BE49
|
||||
|
||||
j = 12
|
||||
MD = 98116BA7F8295B44C31370F9E50E3F1A5EA2223DA1E8DA3046F7AB440C5F7A1B9FCBC1BF5FE6584327266EC2295AED14
|
||||
|
||||
j = 13
|
||||
MD = EA91D3D3E2C9FDBF5752674E6D80A980E9A959E849A3068314805F5267AC407269B8FEE4BBD76FEE774A9898CCC60785
|
||||
|
||||
j = 14
|
||||
MD = DD637E12CFED26E7176FB816CA7BEB07AEEF6D0D1EF2FE0C781F8E5E2010A108C43756B52CBCD9AF0A95D0AB116A9385
|
||||
|
||||
j = 15
|
||||
MD = C1FF993ABC2A36402D49F18923F65BFEB11554067A079737373260E4313B38CAA8EF1C5F24E35ED10E7281FD024BA2E4
|
||||
|
||||
j = 16
|
||||
MD = 4065AAF6009458CAF40E92484F5A1FF32FF0407531001F84452B2C6EE186F3EEE2AAC7850BA299A66C5C651ACC9483AF
|
||||
|
||||
j = 17
|
||||
MD = 805FEEE2B0C47BDEE787102EA5CD2DA92C95B9D43DB718F1BF1AA8B3D1E58D95749013341C6E500B28798A792E8EF385
|
||||
|
||||
j = 18
|
||||
MD = 68F6285B08DB3E188F34834F3D015E1AD6DA1FD9FA414A0CDFD3F7C056CE952B5E41EA5905582B5A8B77277752413E42
|
||||
|
||||
j = 19
|
||||
MD = 538D84CD845082CFD3D46A8B7D7493B905CB350FAC7563EFEDB5F8C49C80999DEB5566DBF7E3DA50FBCA8D59B27AED4A
|
||||
|
||||
j = 20
|
||||
MD = CC36BB3E99E086F1CD4E368F514FB7DB94A75B73CC4B3C75DC95D081D36035774100CF98FF47E776F7B4BCF5C9DB8717
|
||||
|
||||
j = 21
|
||||
MD = 6AFB2AEF4E8B9FCC0D7199A4F2FB55CBF801290341B8060989ECB88C926C9159D11ED5E0C2E97A15F1EA79C17650F093
|
||||
|
||||
j = 22
|
||||
MD = AE91C22CB02CEF6A6943557879BF6629EF3D79882F27D7F92C198B7CFC0E374536D110F580849A5DFBF1FD8DA7BE50F5
|
||||
|
||||
j = 23
|
||||
MD = 65FCB2AA74A4848F2E0AF4F2DDFD48B4624B74EB4D3396BC72D32C88EBE2825E008EC7A4D5E496458FE9904745CFE9B2
|
||||
|
||||
j = 24
|
||||
MD = 59A7308A66537F58A3118A7588731D4093D399AF1A4701CA235094E2DA52AEAD09A564093E9FDFD4E3C6842DD28DBF4F
|
||||
|
||||
j = 25
|
||||
MD = 5F3BAFE74E07F5B1B826B90BA8AD0A2094FA1459AFF0234F2D1256B363AB9D866D390A89F27D170769820493B4B2B0DC
|
||||
|
||||
j = 26
|
||||
MD = 19C32030BCB766B3D2C5863FD7A3BA3F7620C83D679BE919497624CB715ED0E497D81CF3D95CA6D530FF8DD52244B12C
|
||||
|
||||
j = 27
|
||||
MD = 94478F30701823E1774BD23D7E30050B8A0C5A461578D69279161A03AF7CFDC9A058409291BCE47BB6FE392F7D0D6610
|
||||
|
||||
j = 28
|
||||
MD = 1FFEFFDAAFF021180DE68091FBD0A8DE6358E7C73762AB0CC68C17E5DDD6F280F8AE921C8BF700BA3F0E0E7801E4895F
|
||||
|
||||
j = 29
|
||||
MD = E2064A781E2C52F8F4BD2BF2FA80219782CB24F611328840DE9019759027B25C905D7F6D0E42B65E5344A32A830398C4
|
||||
|
||||
j = 30
|
||||
MD = 5F31B732CF4613DB8F200A47E5535E511C37C0F2D20D3A788B4AB2C87B3DDDCF8AB3389BE782A599972D9CA3D02502B9
|
||||
|
||||
j = 31
|
||||
MD = 47F10A4176C5044560706B8728B7059FEB47BB6C89945BAABB462D4A0636807648B472BD848804F31EC5BA145F5FBF95
|
||||
|
||||
j = 32
|
||||
MD = EDDC79D77B161DC97B6E3111128161ECB6F36480034C2F9AB2549C32E86D2FFA89896B5F68D7834EAC45046FF273137B
|
||||
|
||||
j = 33
|
||||
MD = 6C2999BA8E41B6A50DF2DD7ACCAD56A0470AD45A2FE724F7D46AB9C02894BF4F3D278147ED475B71ABCEDF2A5149D8A3
|
||||
|
||||
j = 34
|
||||
MD = 70FE28F79452561A781780E04B9DA5AE8E92D7BA270BE95EF06830590E107EDA140465989C89DD23AF12371C17D94A60
|
||||
|
||||
j = 35
|
||||
MD = 5B96243AF873B59746634272172A1D267C662375D24E34C7E8D72384D119E180F76C65C0674DF088A7113E7A87270BAA
|
||||
|
||||
j = 36
|
||||
MD = 2097BCEC18AF06CCE543AF5BFDA6612FB6D6C1DB8F09D8B7627A944098925B3A6A5DAB332456EEE0BBF43244964363AE
|
||||
|
||||
j = 37
|
||||
MD = BC1441846D3C965EE46E4DD0E7AEA7BC21BA49532F28C1F9BA168808916B886748ECA9284217DDF94C096E60E4384DD5
|
||||
|
||||
j = 38
|
||||
MD = 3E3A9DFE14A009C76DEAD785ABDFDD0B5A4A0F6D044E5BBC8FD3966F158CAEB62A10E007F170E58F8BE392FC3D373285
|
||||
|
||||
j = 39
|
||||
MD = 1DBFA4614D7D64FD76CF1629A35806DB83E4DBE9224F05961B495639627704ECA2E734E6AEE0274002F962F19024AFA5
|
||||
|
||||
j = 40
|
||||
MD = F2B09D24C14AC5FA0AA5A5AFBC91826285A4FC22369DFFDC01C17564844C65B9B06728B0CCE620EB2D48BA19F6106070
|
||||
|
||||
j = 41
|
||||
MD = 283B6C8E5AF73D2F250696CAB1F287918CC6B9060E95434CE9E280EFF43F9FCD5508348B6439D4133F8FC67F26FDCD0E
|
||||
|
||||
j = 42
|
||||
MD = 932C665C7C4A2447DD818B8E04646920D22CF51D3C4C7BB2C4283F80D50CA0544383C2B8F907233E581FE45E39BC123B
|
||||
|
||||
j = 43
|
||||
MD = 02B49C6A8784B115EFE66EBC046BF231095E7296F12664C2CDE40F755D4D50324A951CA18AD9ADF2E734F3A8173A1531
|
||||
|
||||
j = 44
|
||||
MD = D14680B930CD3E6675D0CC714287BC4CB41CD6D62D1BE2EE9D02A3EF9FD47F53722413D9EDFE2E2027B9FDF4A63FF97F
|
||||
|
||||
j = 45
|
||||
MD = 9D67D907BA5F1ADE41483604FF9BB351E5AC1113F2F5A67C84203BD9A26C0ABBB36E00FBFD019C9917A7C3E97796BD4A
|
||||
|
||||
j = 46
|
||||
MD = C8A773911DA7C09A4974657CDC288393FD34FC6A57F16F6D33BCAA021AF054C6D0F8D2471C7E8BBD4908D43A5A2F0D1C
|
||||
|
||||
j = 47
|
||||
MD = B35EB336006511281D0447326329CD8C8DE72F0F40FEA651E00712EA6C8B7CC1FAC3CBB63CEBFEE25A36F4DF77EEEFEC
|
||||
|
||||
j = 48
|
||||
MD = F90868A210ACC7A84AFE15B2CB71B7BCAD48A33142E2D22C8E6AB7E9FF44577F8F2493B842D601FCD3695BD6F2EB5206
|
||||
|
||||
j = 49
|
||||
MD = 044973221D73E7005EC858545E9A03DC3CBF2D536120B6846630665E76B6485E7A95EE4D407030F1DB22E9E6AE175328
|
||||
|
||||
j = 50
|
||||
MD = A7DB815BF899A0FA6C910D7131299B6D3551BED097DCD2C43BE9F723F0B549305E6A696540CA70D5233D24258F0122E9
|
||||
|
||||
j = 51
|
||||
MD = 3E4336A3640AD8331C3BEFD1D7EC9CB82F4C924709BE2FE8264AAD25356E743CD5EC1AEBE56488576403ADDEF671E800
|
||||
|
||||
j = 52
|
||||
MD = 37D3C895C885374D73FCABB8C301F8108D2673F6082EE7A23EFFB4AA6EE9250F33F1BC303A19F291741EA1FB3AF0D279
|
||||
|
||||
j = 53
|
||||
MD = 6B730880DE7B2D89D340A410904A922B7F8FCF2AD3EA4449D31F4B2A49D2097294EA5AEDECFE0207852D19E4278223B6
|
||||
|
||||
j = 54
|
||||
MD = 37FD76837AE46B0BB53757A165FDCD75A0D56AA461080A0CFA74EBD6353C6F562C95E995650EEEC60928445A0A884004
|
||||
|
||||
j = 55
|
||||
MD = EF8F2755B6AD07A18717169E11BAE6650A15968A95C6869FBD743E2BBE6AF402C741AF5F6A0BD1CAC02460AE3FD8F6DE
|
||||
|
||||
j = 56
|
||||
MD = E2EDFC89EFEA5EFF57A8B29251165A593EE162A8B18516A216AD6420DE06032C0A7E759D0A3A6F44E7915700EA787B29
|
||||
|
||||
j = 57
|
||||
MD = ED7AABA9E68EF8CF0DCFF36E9109F9D458BE560192E93A44EFBA9DE1051A3A8E83A4B9A95B7A48BEFD51C2847D0DAF6C
|
||||
|
||||
j = 58
|
||||
MD = F54DE77761DB42CA908821E885E30C23D1BB114BC1AB7F80F79BAE33A2C4313532A90F46B430BDC2A3DB928377EE9B34
|
||||
|
||||
j = 59
|
||||
MD = A65214EEEE1E8B451969AF845083AC449DB518BF2037F368141A87451F9CB2FF2CBCABD60D636EE31F614C2888136FEA
|
||||
|
||||
j = 60
|
||||
MD = 2981BF6C629E24AE09CB3C65FF61F9CE12B189D03BD9522C6C2C9C953C36BBFC8405FE0752621A988C1CC96CBDA444AF
|
||||
|
||||
j = 61
|
||||
MD = B9FC750C0745CC2CEC8E81910584E876FFBFB7616FBBC99156D47CE8C2264BF26B3199CAC070190EA28A0370A1415526
|
||||
|
||||
j = 62
|
||||
MD = 357820BF97ED7133F4A2E1CA2D488E452C328CB12E9410377618F3AAB61885FAA9050D9E173B560F4F03500574E692E5
|
||||
|
||||
j = 63
|
||||
MD = 1D721855C5363F334FC3BC58009DB3D9388BBFBACC5A71B6EA226D66EFC3911635F8400D700F18CF92EBD97B6E2315A9
|
||||
|
||||
j = 64
|
||||
MD = 27DA7D6413F02D71DA5EEC129ED63F1893877C7C801D0286BAEB5AA58CD30683AD13BD030F701C67E92693BDDEA0698C
|
||||
|
||||
j = 65
|
||||
MD = 9D30CD001830FF11562233DE886419E1CFF49FC498E858AD0623FD21F938BB2EDF01E6F971E4A2A082F3783FD2D6C766
|
||||
|
||||
j = 66
|
||||
MD = 496BD38D665990860217ADFD8FC037AD3A66C8C8087CBC12CB4C3F4E610DC0A9AD216FD442729B5852F37DD39B0B66EF
|
||||
|
||||
j = 67
|
||||
MD = 9E04B03F24A6883365FA9959D392381943185B29A65F0303495853F0FF9DA225CC0C5426C5A5AD8EED7C917ED3DD835B
|
||||
|
||||
j = 68
|
||||
MD = 0D5C98DBC752C00A0D009A4A83F956D3B9B837EDDA055DBF0C162916241DDD18AC4D675A01A7D41EA7F24A68193FA498
|
||||
|
||||
j = 69
|
||||
MD = FF5FB80E26219F2E0FE5FCE71C348748C6568FE34D2C80956D4904186B27BDAAE39F67439D02983E2961A00BA5333D9A
|
||||
|
||||
j = 70
|
||||
MD = 3B3F97DD7E8CE7C494CD61174E56034DB2F75520B502E8161A9D6C2C9A363D1991FEDA17DAA0533CD41314C43CD44FF3
|
||||
|
||||
j = 71
|
||||
MD = 8A33767073EBB386391B75B744CBD7C4DDD49DB4F1A04F94EE9AE1FDACA449F116156D15A14F5F00BABC7BEC3436CC85
|
||||
|
||||
j = 72
|
||||
MD = F7558E0ED44085B13FB593665299FAB79700CE1EB9436E118A9996D6CFAFC60BE31094FD6EA42629EE979641C4DB8568
|
||||
|
||||
j = 73
|
||||
MD = FDB33254221D332EDD9A93C3B3741874054D89D98FA2A6CA8141762006959586ECFB3A5C2A1DD0408FC8FB9FE0A6BF08
|
||||
|
||||
j = 74
|
||||
MD = A678E7922FDE74D96059B87849B67A98DF8A65C1A4CECFE7EFA97F55024D138AF1B77B145EAF69FE4C2ED194D53E11AC
|
||||
|
||||
j = 75
|
||||
MD = 7086C7A03A24D9F651C5B31D96C89D38216FE451A45BCFCE2FA0F5EAA8B0C1516AB14D1850F29761E45C609B730A851B
|
||||
|
||||
j = 76
|
||||
MD = C7B543638FE797BA17BFE3229084CC16589614107E8F112AFE4332CDD690A4DA7C89A3BA71F4220A3B3B7DC2099366C0
|
||||
|
||||
j = 77
|
||||
MD = C59A884EF771A44AEE88AD3AFE344744E3291BA1E30627794E6DB05DF447D9889161C5E1ABB2673CCF90A9FB1B0C8633
|
||||
|
||||
j = 78
|
||||
MD = BB0FE0323E6C8ACDA27F69B968659E0082C515B43A60A67513C8210CB3B7E343A3F320123CD8A2ABD317D8ADCD2A6D85
|
||||
|
||||
j = 79
|
||||
MD = EB6C5406AAF48A2B8F5473C3A665C839640B0EDEC0EE14AE793F82539202D58EBEEFAAE8A70BE27355BB0A34EEF88F6E
|
||||
|
||||
j = 80
|
||||
MD = 9285CE4F885FA5B9F76DE838C75B44533883FFD679F5C4471E20155E15856FB9BBB08E6C1098FFF8AB6CC43B015A6007
|
||||
|
||||
j = 81
|
||||
MD = 50AE0DF79C8EF2344FDA59B2E5D6622466F9894A7A6560A4DC435AC2051F9E282CF96F334FD603CB9D6C5B5CBD9B1ECD
|
||||
|
||||
j = 82
|
||||
MD = AB326FBE7B982C0F0CEC2C68178F2C6230055DA400EF5363C2EA8FE041CC6887BD8F4D159334D70FA69909841C0A0138
|
||||
|
||||
j = 83
|
||||
MD = AF439D0BE6ABC19E6194C7913414CAF66A7956A3C45E8E7FDCD7830726C4DFF91C5547D2F3182CB09B59BDFC10046234
|
||||
|
||||
j = 84
|
||||
MD = A90BB663D3BDCF096610EE9393678960D1EB5FAAAFC7BA71238C723EA44D4D114ADC33D576A62F94EA332272CCB0FE97
|
||||
|
||||
j = 85
|
||||
MD = 046723B80E5AEA59C1EF48B668272ECF00AE3538E0F38A50657941159C4E81205380BA12AA5D1E6730841871BD560216
|
||||
|
||||
j = 86
|
||||
MD = 5B84596CF101591C0C19B1475D87CB3939683C1E7EB2F88B0FD5849693F91F7A08BC99F700B54F524E8EB74476DDD88B
|
||||
|
||||
j = 87
|
||||
MD = A4935A9D5C6487AE8D217B0A26E049C14BCC7FDCECC6EB91B281462525BE031972106E9A28A1704028D98EAFCBA8B4A8
|
||||
|
||||
j = 88
|
||||
MD = 6D873F3CEEDE6E757E3CE348353DB31E38DDC972B38BAFBDAEECC5912306AFF8C625F8FB19B9A974BF06A87E39327A70
|
||||
|
||||
j = 89
|
||||
MD = 1A06D8FF07E0C07DD702724D6F9D6D393043442CF31C1887E0D97DDACF6853DAF9A7D3AC9ACD5F4D4B2B11E3D2D5E074
|
||||
|
||||
j = 90
|
||||
MD = 382F8645E5191C5052DA02E7B3C53E4641924CC25F0D3775E550DA50F850823449AC9959F6F745E1600BF36BB6D61AE5
|
||||
|
||||
j = 91
|
||||
MD = E731C390E93053CFD1759CAAA2AE2EB325B44DF6A4326905FC03AB1AB4F75C2DBD2F56A20316FFA3DBEADA0EA1E76D18
|
||||
|
||||
j = 92
|
||||
MD = 4A21CDFBFC15917E6058A3C995F9ABDA913C0EE0EB4613D4A6D73C2FBF60E3907BD20532744FFC67EDA32A56387AA161
|
||||
|
||||
j = 93
|
||||
MD = 8139D8568ECECC62B77A320C14B78955AA25C780DF3FE3C1AEF25805980C797E1CBFEA876DB80A25AB2626189F795A1B
|
||||
|
||||
j = 94
|
||||
MD = DC1EAC77D40E0BCA1635D17B002065574431C0E3D055C462C5CD8DB31773BD11C07C3582161185C16E3AC4B016B4C10A
|
||||
|
||||
j = 95
|
||||
MD = 8A6019479CECEC96069040708224F571E83F019D8EC151DF904FB8FE9FF1E3BB5F3CE9914FC08D0A472D5336BE428F1E
|
||||
|
||||
j = 96
|
||||
MD = 0292EDEDF883EE3AD36378A7C82A43509E27618D1AB181E5983251C22DAA9F19CF2206DD28DFDB46EDB6D5092158DC5C
|
||||
|
||||
j = 97
|
||||
MD = E75094C523FC35B422942844092C77C24B83BBA8DE4D8C36AAA99ECF8DADA85AA08DC2B696E97F450BD56973A45E5FFB
|
||||
|
||||
j = 98
|
||||
MD = 64F7EDC9AE6EC8F278B19F0ACF810CF4D87D7C168879D07562E177EBE53FE530AAB71B636DF39BF4B0EB224123F670B0
|
||||
|
||||
j = 99
|
||||
MD = B8B82E489C963D2EADB7819089D25EAD67C9CE07C3F7A7B0B052BBB6BAD47E1E319485A8EF914A48FFB1E31AF1EBA2B3
|
|
@ -0,0 +1,305 @@
|
|||
# MonteCarlo_512.txt
|
||||
# Algorithm Name: Blue Midnight Wish
|
||||
# Principal Submitter: Svein Johan Knapskog
|
||||
|
||||
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
|
||||
|
||||
j = 0
|
||||
MD = 05B6631C0D75E1C0B7972BA36985EC15CB3742FF892EDEC4DB6CBA0D7878DAE2D526A9FD1286A81FB2C10DD853F05BE0A546472D2C0BFF070224CB465EC671A8
|
||||
|
||||
j = 1
|
||||
MD = 514A3B886006464CECF6E4639F93109BBF56D2D9A889D1E031DBB867B0BA3516E7565327DB008B8F362FF6D5C1A8BE76D037D273DAE071C716A8F68BD94E61C6
|
||||
|
||||
j = 2
|
||||
MD = B818FC3647B1B72951A3F540222DBCF6AC6BE2D96252F4AF3E064D1A8493A200CC4B2E535CCF0760AA423C1C23B932A630D06C2585129D4960D17D999F62BB3B
|
||||
|
||||
j = 3
|
||||
MD = B479BFDAE8D0A2A87144BBC4579747DAE441ACA5B413025B2C28B3516ED5BAE87E3266C0E24F05D1E71A78B52BBA1618C5267344DCB3122A09D78E4E33733D9E
|
||||
|
||||
j = 4
|
||||
MD = 22A81EC95E6C78D66A9FA6D63D858A302DC6CDF6B8956236DEB81B4B6CD831B23E9CC6B977B7F0863CDC5D69B834E91C663191BDA3B62A26F29AF99224BC1366
|
||||
|
||||
j = 5
|
||||
MD = 5C7612311EA8F1EEC8A432A2F3891961D809601C876A3EECFE266FFA0052844C7F1027132BC7C775D862A3E9E849D5347546A13761D7EE0EB5C953E7388E3AB4
|
||||
|
||||
j = 6
|
||||
MD = FAD797B74F7B64852B7D79049628D2204D478D68B271DEC4964C2849BD87FB980DD4EC98C0BF488081156E7CF2C26E22CBDE7800A1CABC5E232FC5FFBA61967B
|
||||
|
||||
j = 7
|
||||
MD = 80379851AE68EF0E51B77DBA94B164E308E969E633613CBC45CA5DCBC604884F2083159C4EF234DC5D8F38A2C49948CCC15F2AAA7C24D969008DE945661AF04C
|
||||
|
||||
j = 8
|
||||
MD = 7EA654880313117958E4DF2CF59DE1AD2180CA01A852512A2DCB915D9B3DA104BCABE9139C11D3947606A3B4FA349725CBFF9DEC34DE84797EF61E406D98DFD3
|
||||
|
||||
j = 9
|
||||
MD = 08E99551ADFDD1962BAE94E161C7F65EB277953E90A422751118818084519EDE60D7320882EFE8B41CAB482FDA620CF2A22FEEAFF890FCDB2724F08096B73DD5
|
||||
|
||||
j = 10
|
||||
MD = 1FBF73E7D1001F14947758E617E636A410AFC0E0D7CB449B6796D1EDCE9A3C91B2E6150853D76537232448F2CA2F3395B8EE13DE3163D82ABBCEFC1F18EFCC86
|
||||
|
||||
j = 11
|
||||
MD = 4DA6A3D3823E58E837BFA93E099708D1F21F69B38DD68F5C79D4F07F9EE588B0B14AFD690705A7CD54626BBB18316FD5A465A54E8F9C4E5E82579CD859DDF833
|
||||
|
||||
j = 12
|
||||
MD = 5E4337E938F09925A6E395488FD065DA5ADB2390F9B1C44370D976485237D4E406CF27030FC048CA784023119FFC7BC1875901DD31AD3AC486A428F6FCF6AC9F
|
||||
|
||||
j = 13
|
||||
MD = BB6CAF20632143F980BBFED65A2D3CBBA7315AA2C36B41BBAE48C2712D08FF3AC394FBB375C75DE8BE9B4D2AAFA32D0BAC7F8E72C844A94632B5F176227DD365
|
||||
|
||||
j = 14
|
||||
MD = DB5A50D13ABB3F3784F65BF81368AADC1F61531642E64ACBFCD6434E667518613A83B72791B61AB99C78EC957428619B0322CB54ACF8B3E4449C6072F2E2F8E9
|
||||
|
||||
j = 15
|
||||
MD = 27C4660419EBB7D189200DABF6CA2585F28DC20DC8E5190885A0E19F24E90ED742E797D4D897C3AC412C3B957E06A46C27F3E0058C52B476CF8B56729F9A08A5
|
||||
|
||||
j = 16
|
||||
MD = AF649676D170FBD6F7757A5DDAB654CE267312A1984C47E373686E5DB02C8C3ACE997103076A5C14EB97FEBE62610FF0CB9F7778977379100DDD7EEF244D45BD
|
||||
|
||||
j = 17
|
||||
MD = A5A527BD5BD6634D9EF4EE6B4E9AA3268BDE3A982C82778FB05605555DE7341483A0C7D6F09062F71BF772590688F0C142CDE3DCAD9920E88F88367327A47A26
|
||||
|
||||
j = 18
|
||||
MD = D4B2656E1300B28CDE91741100D3DECBAF3D0B88459239CB2A98C438C2229A0BFEC0E573FBE936FDCD3EEC5AC449462BBDB5C9D16D37E8DC5D65F3865E03C993
|
||||
|
||||
j = 19
|
||||
MD = 201EFC2A07D1E497ECABAAF70FFAF1CEC8298B7FDF8CA2AE43CB9ABC0B93C6C5741C2174513B72597B842D729459812BEFFA8387E75AB4A1F18CE4F7E756117E
|
||||
|
||||
j = 20
|
||||
MD = A0ECF3DEACA4F2F0EC1D3EF69DBC1FD4A3B66941562171B4AFB915147BCEDEB6FA8DDAA4E14E8A595D8C3293F89586C347C098D2BACBD6EBE193F22B9EF64C0C
|
||||
|
||||
j = 21
|
||||
MD = 63134726E843E8D9B276E6C9718B3B236622152CC6C0326C921C0FDB5DCBD3B41AFEC0536FE970D5B5D2961208E8FA3B1EA1597305DA62EA6C42610BF49F2608
|
||||
|
||||
j = 22
|
||||
MD = 322441BDFB5E68712EDECBE6E9FBF428A2DFF02B27CA840A9F33445A29DE063627FC138CB7773209553969211225B9463AF4661ED5C067CAB025576546719804
|
||||
|
||||
j = 23
|
||||
MD = CC51D58EF17268438044CE4567BCEBA248E41F136CC32BCA5B62674790365A36E28CF29ED9A596EF66115CD5C0CA0DB9C2CC04CB504E9135C65E3CCAFD41742D
|
||||
|
||||
j = 24
|
||||
MD = 4B59EDDE9C58D71AB08A0FBEF064DDBF7EC372D8916C7E557C13B12235B6A95E256290682BA241666BBDC13FCC7731F308D219F31DF1C5EC36DE5FF065740D5C
|
||||
|
||||
j = 25
|
||||
MD = 7F3BEBF284B998CBE8D002B0D65B3743CA831B79543CE2ABA8939D97D9430DE1DFA6B531E677CE15038659F27903279A4A126B89DB237C9C9B69854E03F96D14
|
||||
|
||||
j = 26
|
||||
MD = 9E3C13E4F378A933327CA0F10DB679436D49EA7872717FA0C49B7D00521800ADF714DADAE68E1DDDA97471EA7FE4E6678935B1B75498481FFED918A98CBCA251
|
||||
|
||||
j = 27
|
||||
MD = D14822BF9BD1A4F14622C0331F70EEF0D026745A666905E60188ADACC7C6B3FA9E2C5A528A5155EBE5A2E92564B49600A62CFB3CBDA6F370F44955D43A6973CC
|
||||
|
||||
j = 28
|
||||
MD = 6AC8C97905F1F149DE5EB5FC639CD67776548EE448A8D8FFB0F72FEEF02C077E7F01634741FD46FD4066E6F5437CDDFB58DCEA2F4284DA2275BD631ED5A19432
|
||||
|
||||
j = 29
|
||||
MD = 08DB5BC90F8F3ADF9E5F28489EC091FB1DFBA9C8AE5088D66DA7FE9663EE5571DC59701BEE85321DAEA15A72FC089CDD4D84BC62AEC62EC988CFE4101B95B814
|
||||
|
||||
j = 30
|
||||
MD = F2366548FE0EE0702356E19D95E88E793734D33D3275AF526594B5A4B720FC6673554A6C1816295B4AA0276D8DC948D2F74EF71CD838A2A74A717CE50C395700
|
||||
|
||||
j = 31
|
||||
MD = 596EF4DE3C2987D396B22962F9548BD865D75B3A6A065792BA40498EE994FCA2B34724FED131548404BBF47A02387F237E5E5969E066A22F13EFE079AE24CB55
|
||||
|
||||
j = 32
|
||||
MD = 54B07BE618E31A361495AB25F6447F8672B7F5341EACAD515A685CF7788E81D09E11B55776E49066B84A678B6F1FE80EED76B8A6A4020255289CBB5927FB93BD
|
||||
|
||||
j = 33
|
||||
MD = 19D6E9E68DD1BDC91AC222158B92371537E631FB3BADEA2C3BA138EA01CC57A5CCB8E8888C62DC5AE0335F24A8BE55E270E81608E4BB6AD72980E0260FF507B7
|
||||
|
||||
j = 34
|
||||
MD = 09CF301FFF18F02E5073C01FFA82D049991F4C37C32AFAB366E9C41706D3BB277C947BA64B2817682E932F9F9CCB2B714167AA06BB56191356C100E009BF5312
|
||||
|
||||
j = 35
|
||||
MD = E43041577C99BA91287802B426CFCB5F03EC911E4010E79717700CE1DB329B025D74031D7963425B8E1FA3466F8032B6E8898A9D8278650CA0ED210CE9B7943E
|
||||
|
||||
j = 36
|
||||
MD = 869F3D4B71BACE257ED6A50EF603696CBE83CC5F8A5AD3B25761778EEEC95FD15A56E366F7E2FC1CD639CB3C04893E1C827F8257209B87582CC59059BC397414
|
||||
|
||||
j = 37
|
||||
MD = 98E8C0173BE0F52EC5E02C5F88DA30AB8B34423896415D4875222133D59DAF6EC0D9A423FACE677E16DA9677F677F5E56B935950EBC7BAD05CD6F4905D50BF7F
|
||||
|
||||
j = 38
|
||||
MD = C26D08218B319209B3B71596678692BB4FF0FFC7B34A5968DE41F14BA2F3CB5F14BB815A55D50654204BD7F883D0906C4B970D4711523A92DFF938FC7B9DEF44
|
||||
|
||||
j = 39
|
||||
MD = 47587B560D52A42CCB1C0F0832709C583A81BF201FEC50FB7FDE9F5F59863F9949E867C06476E485B2804DB6CDA776F723F5AD7845FA1D1C99DE593871D54EAC
|
||||
|
||||
j = 40
|
||||
MD = F2B23140F8B987E43BE2DA2286C61B95937AD4F677FA28F6AFFDA55B9E17C862898BB1EFAA6A8954332464B59469C532FDE53F4042EA2F69D75ED513F1A71A5E
|
||||
|
||||
j = 41
|
||||
MD = D77E2302970E031D4ACEAE328ACC9DC34E313E7F45A45CC27E816F7D6572CC6F73C6BB915A7AAF397BF616AABCB107306299B190531FFCE1E9E050D3C888763B
|
||||
|
||||
j = 42
|
||||
MD = A4DC5440874E6928A94ED98A4060A7505437A4A42F5B8A3A9A417E7268C52006B5A73E2094D0EF07DBE2A2916B5443CED1849BD14D94918EAEB1575E8FC60E03
|
||||
|
||||
j = 43
|
||||
MD = 45169847FF07271A642139860FCEDD5CF31E01703796328E6ADE09708129ED0EABFC4D0100A14851BDC825E66ADD9554A116036FE2B2E96580D53C145B1E31B9
|
||||
|
||||
j = 44
|
||||
MD = 28A16789C6D20B04D72F97F454672A931512796A2E86503B2ADA766EE51D14DB3D9C8F57ED693ED579193BA33C37464BEE80606F14D9C72967B143B7245C50F5
|
||||
|
||||
j = 45
|
||||
MD = BEBF4BABBFE6ED87B3237D3472A000733D021736844BD9CDD2F20BC8AFE8DBB0AF34FB0C79434C977C72A040389AD54D3D534A0F949A3745A0DAE67CF4B4C8DB
|
||||
|
||||
j = 46
|
||||
MD = 305634F12468AE8FD8700A50B844338EE88D91B5E4C40E49D921F889D62B73060F9A8FF0C47D3858F1CFFFD2B19BCDF06420AAEC20DFB92916B19FCD3F6F143B
|
||||
|
||||
j = 47
|
||||
MD = 1C65418C8C01547BD229BE662F397E66D3AD803F51C546986F57C37BC0DF3B3AC661BAE906C10A400CAF36E9D477035839609DBFBB72A93009A2E53CA4DABE68
|
||||
|
||||
j = 48
|
||||
MD = 366EFC559A39C59226A20631A098886178FA2073249AFFF8E3DCD45D06014D94CEA6ABEE329B12CF91CC98C7EF1DC5FB11983C7E1DEF894E0CEB4BDA816596DC
|
||||
|
||||
j = 49
|
||||
MD = 4A35A3D68E0668DF7A2FE708A3F3E3EF1B9B79FF35FF9CA366502C37EDAD46BA3C73B29E5F0056E6638D2C14887ECC6EAE479816350552CFA9F9E9B4901F2CE0
|
||||
|
||||
j = 50
|
||||
MD = D50942B4D92302578639CA6B57B4B575345B61EC41BD79D75D5D4C03DE491728B0AA3F4B5075B8E0862EA647430432FF6A2662418096228CC6489BC0785F4D7E
|
||||
|
||||
j = 51
|
||||
MD = EE12B0851E655CCFF3C305D9832E28887328449DE7F03CE0E43847BECA1046E3AA3F8418D30D18D21F2D1427046A0AB27EACCDA6DA75CA94E5C2EB4AB619F6DA
|
||||
|
||||
j = 52
|
||||
MD = 4547EA5018592CCCEAA7B1D304AAD78BEB4DC9F23B1E2238FC2D89D879E6EBD8D4CE84630C5BC0D2E154D14A3EC925348059D787571CB36839C9F5C17D99F5C0
|
||||
|
||||
j = 53
|
||||
MD = 95A69875AEBC671C6536F0257C84CC2E5BCE30AFE9D763F35D1ADF9ADA233E8F7F310DFC0DA85778C2B7F533F5053CEB49E8FC474BB6CEB18094C73B9D3059D8
|
||||
|
||||
j = 54
|
||||
MD = E0F3336FB3F1478FDFEB8C9F9B3E5CDF01D98FE523E8D6F379BC89971FB4AC1005A338AE822662241F541D54881672B6E9675D390E1978FC0EE4051039949F5C
|
||||
|
||||
j = 55
|
||||
MD = 7A8FA19FCF51338F38F4250607C99EA854479A995A91D00D7A7B80BDA6F5DF0E210A29DFA8932B8EDBECCC25A2423E0E2269506A7E871ABEEF99DCF7B96706FE
|
||||
|
||||
j = 56
|
||||
MD = 2133B2AB833553A16D3CFB3C9312FC8F3CBB2B8AFEDE54B27265FE42E6F952FC3CB6E5469D4FEB10414C65606F75CBB02D8BB564B1654576A325C2C5BA63F4FC
|
||||
|
||||
j = 57
|
||||
MD = 258D6CC04E178AF12C43C575E3DE24E619FDB168E35E43C4165216D5905778F0F005C44652E57BC222BA607A7EE8471109488C66A166ACA7C9296BAC45E4CDE7
|
||||
|
||||
j = 58
|
||||
MD = 5F0E7F47D115943F7C63A1A43DDAD2BEF20B6855B37D0D81A74B30FE8C56E2DEF3F82FFE89338361E87A7C0FE980475A2E98A24E98A81B866014EA11EED3857D
|
||||
|
||||
j = 59
|
||||
MD = 5AD14C6BE2F3DBB1E9B71A07EB82A18716F84F79E6BA13EBA2894B4BA4CB83E898BBF07F971E497A6EC746D1A3D9D5E496B06EF4D9F12AA6E67874C192DDD6F6
|
||||
|
||||
j = 60
|
||||
MD = E830C9ECC7CE91B0BE530B79770C820593EF1207A801F654F917CAC2CE0C71C3C0E393EA1360EB076C49A615CB3DF6099D07DFCD9EE01CFF167BA720B328BFBA
|
||||
|
||||
j = 61
|
||||
MD = 3CEE9756560341BDA1D9EB480FB9FA56B10A2330265225E6EB320FBB450DE9BB7A519EF8DD750578AAEBF0D736A3D09748C294A0F15A4DA891A70C3E132831D8
|
||||
|
||||
j = 62
|
||||
MD = 3FA113192771C2D8698A434C29BB19B4377684D32D7C1A11CD0648F845157B5E8FEE8DC0BF68CAA06C3BCBD27568C627B39AD7E35B95D5F35725D8D7158C6B71
|
||||
|
||||
j = 63
|
||||
MD = 22249064D45195231511124B05D3B0CEC95188952ADC4AA6C116907EC737DE7DDA92800FFA1A9C48600F6EAC810354DE908B3FA60EA057739FACD636923DCAD6
|
||||
|
||||
j = 64
|
||||
MD = 2741B81C5E3CF56599F29B32F918B71DF3E8FA57DC2937F019824CC30C73BDFBF3951902D11B761DDC80649ACDEA3A06DD134AC1C4A39BB0F568ECA986287ECB
|
||||
|
||||
j = 65
|
||||
MD = 73598640FD5C557CE7FEEF2E79651B9FC49041BB60C0E00CC546036239D08C447983A851A53C284DFDEA87EA4A12AF465AA0258EF9C947E5A3597433A9FC8F8D
|
||||
|
||||
j = 66
|
||||
MD = EFD769ECC5A46D71CEA7CFC1E69977E4C4A0D1D6F448713643B2B089BCE9BAF38BDC66A3297C86822C473D368BCEF58DAE355074465D17C4E12A51C8E439A4E9
|
||||
|
||||
j = 67
|
||||
MD = 78099BF328137D3D84A339D948F078BEBE8CC1D0992E3B5BC5D6AF98DA1F3C9BDB10435AB6860819E1ACA7CC5E93879545536239E178FB8BFDCAF63804CA12AF
|
||||
|
||||
j = 68
|
||||
MD = FB9007B0EF758C9C3BB3981C29794F4D5793A9352EF314CDBFD560956B5BAAFC6F02DB25155EFB4498607EEF7BFA9D6BF6E6FF49FB02D60CFA9B11310FEA1A56
|
||||
|
||||
j = 69
|
||||
MD = C3AE0D7F1CF9C31D351F07B809814F62D566907D572D7E645B0EBF527122F5B2DE5FBF2B3B25D16EB1862DD804FD65976F8DA4E9E91C4CFAF326BA954D55D22E
|
||||
|
||||
j = 70
|
||||
MD = C85627B04E075D7296257D30168B74C9F60EBE7673EC9DCE29A91B38B80020371193F2EEC1A01E964DF637FF09CCA7642843B7254976850B5AE0FE2C734A4A61
|
||||
|
||||
j = 71
|
||||
MD = 72F9030BB3B8DFA6DB34D28BC981B5B3050F436604E1D4F93AAF3D4422E08FCB65AB89AAC710E4797EE70B7170422BA0426C3F99F5EB6004225D3EC835E047A0
|
||||
|
||||
j = 72
|
||||
MD = 45BEF78915C109B34746B2878036A2D7BDFD3A758F68C5C511C25F8C4857697EE6265D2729CFDAFA05C6915D6618CBC76FB1950F0DD063AF4AD0270A81CACDF9
|
||||
|
||||
j = 73
|
||||
MD = 79551349B08B60A27BA8DC6455AA80B7755AED5214D99F0B099A9B8271E53119AE1645CA87A8FAB8C753A9BF8BFF80DAE53F251C13E6AA11435D80CE21BEDBD8
|
||||
|
||||
j = 74
|
||||
MD = EFC9EE529414410CC9A4F27DE806D46650098342DE3D017609FC598B83596F50D36B7B46BBC5F0A9A5622E8F0E8D24FE25F7006CE9971FD4E9649990E021D5E5
|
||||
|
||||
j = 75
|
||||
MD = FE320057F66431FB97C259A5C066292DFC6701921B23AF3DB98C8A04013D138C814CF2935A708EAD900F77911D1C0B73177B851241E7DC94E4900068630FC3CF
|
||||
|
||||
j = 76
|
||||
MD = 3CBC5D93C240B173E7A89927180183CA92388886FFE3068D366F95D17D9F603FCC168DA81EDD5F28944AB65D97241B5BDD0D29772EE9A79EABC546D2B43AB543
|
||||
|
||||
j = 77
|
||||
MD = CF9533350635BE8EED31D92550EF69B66EE03022FFD96219699DB3CAC406FB4B1E998AC4FC60EB22D8D6FAAD316C858A2E5D38DC2359977AB01AF843C61FB34A
|
||||
|
||||
j = 78
|
||||
MD = D9779BF8526A0B04F754B45C09C05115DB8496B46C92C4BB0EC7A7D03D3F87D9CBF25B8A581C588795E80BBAC2644AC9B13AF6E0107239DF39A551B180FAC4E0
|
||||
|
||||
j = 79
|
||||
MD = D582C7E6081E6BDD333AC051F45384B983147D595B7A85B6AC86BD46DD3034DC39710BB756CC7B4D4E6BB77C6F12F011CA63028A111B95751B9EA9B347BAFECC
|
||||
|
||||
j = 80
|
||||
MD = A7E9CCD59C4E99CA912DABDD51EDDAF7A630305339B506D30A14AFE9CD4EDA440D22CEF637FCDDB9E7B77C42EBF75E7029747B411B1F4DAD8B722C1740324D78
|
||||
|
||||
j = 81
|
||||
MD = 916E1F434530422AF87FA957B4D8D6E88812C10D0AADD801DFC8C93F41016FF02D909DFA8A38812E9039255246A34201C2D5785ED11BFA1B4C3C5FB7115B4103
|
||||
|
||||
j = 82
|
||||
MD = 634DD6EBC27F53C37E7DF31EE457578CAF25B64078D91B900C216D0BCBECE1B39BB7D900244ADDD7B52B891F9EA3A22D71116DC81D65A70BB312B7E39778160A
|
||||
|
||||
j = 83
|
||||
MD = 49553B556AD192FF9870534701B458210AE22D4BB7BE79EA23C24436A1B57CBC387B124B2C319439316E26C31F39BBCB6503E011D50B6961BB960683F7EECE5C
|
||||
|
||||
j = 84
|
||||
MD = 5EA5AFCD9EA6749CCF241D1E59A34FA84949A983B9A1ABEFD50159FD73DB116EBCD80C54BD2EE33A19C9012584FC1CA5ECFFD9A3F2A5B48E98817B31D431095F
|
||||
|
||||
j = 85
|
||||
MD = 4EA0791401E333E110D7033FF8EE7E28CF0F863E8C974245D2D1CA2AFA367E696A59991ABE68594915981CB3457AAE8F902A3A7D918824C8046268ADCB088E56
|
||||
|
||||
j = 86
|
||||
MD = D2E7468B631F44E836F43A729F1183A343B8CBD278749440B4A4CAA245E6F9E7E28916C4EDFB304B771D776E28117BA731B97EFD9CB376B766C390F10457BDA1
|
||||
|
||||
j = 87
|
||||
MD = B21CA882F88041CD925F1F905F4AD977D847D777C40602C596BB67087E2574F103C4947A94547445203CC36FEB1336BD908214A613146525A13E9B977DE81FD4
|
||||
|
||||
j = 88
|
||||
MD = 7C9652096489A5E71A8B9716B57BE4A536F9158C9844725EFD956F47ED178C9BEBD5BDF12A0FCA6C67CAEA267C4578D93F44A743F0FA0250E8AFA2EC8F920A5C
|
||||
|
||||
j = 89
|
||||
MD = 05768395D1836E2311DD25D68EF9C12BC6B1586804A4DC10A20827E70C59572B18FBF13B16849D2B9AC50F3352AE800F0C90D15FE0F9E5241D7A50AB83D9DCA6
|
||||
|
||||
j = 90
|
||||
MD = A956F6A8EBCA6F4293FEC1D6CDFEB83666D2EA77BCAF597F5939ED574BC03504B95C177C06503B622CB6F8604D5873CB67F69EF7C051F6D817C15FBC760FA329
|
||||
|
||||
j = 91
|
||||
MD = 175CB23B223F34542ADBB5DBCC208575EEDCA46EBF88BF3D60E642094E6E6F0E1D204632D2CE80172AC851B057BD14712C0C6DDEDCA6316BE7E93EA432B006CC
|
||||
|
||||
j = 92
|
||||
MD = 08E3756BC8E2A0CEF83C83549DB7C771B0FC6401C8515114E5893A3500A70DF0206DC8E08CF69C6CDC89045C4ECC3364DB4354C33A48174DA91299EF1FAD30FA
|
||||
|
||||
j = 93
|
||||
MD = DB323177B76F5871B03C11E10F3B8E80ECBFC6227DF9AAA943E1BA82F51D6DE9C4D177BDB9C0ED490D2FE808B641A623EBC945D7830862B2C544CA426CC9A59B
|
||||
|
||||
j = 94
|
||||
MD = DC4C7086656796EB73C9E54CB1047AB830BD2B7171F5BB9A9AA209BC5DCB5A367822B3D1ED747C2494721C471145A56CFC2CA0090F1C34219A1014661B3794DC
|
||||
|
||||
j = 95
|
||||
MD = F922ECC099B523EB9043A89C74FE97EF4299FD74A102EF6A877E8F8D366B57F7DB45BD618566866253C6771FB6D2DF0E128C69FE7014C0E7DD4F2915570F5BC0
|
||||
|
||||
j = 96
|
||||
MD = 2F2BEB1E2F5271A134235AC36C1331B3B01B820C006E6C9B8017D57E954E751F75D2E259C795D3DF62DE1474A268C3C9F1A6711BB48E037CE13526CF12F90BA9
|
||||
|
||||
j = 97
|
||||
MD = F9CF13A50ED8BF05DF151E29E303A7EC0CDB03245566CDB549DB6D00349F781E5918136978220C21CED63FA3E9B1D1D2A698DFA9FCEBA502AFF2CB6E573B0346
|
||||
|
||||
j = 98
|
||||
MD = C291482F994AF075E91AF44D2A333442BF75B0F5995DFCCE298E24B83D3CD6A8CF0AE6516BEABD8C330E479572BFD0AC725DBBF507CEDF337AE790D004CCA91C
|
||||
|
||||
j = 99
|
||||
MD = FF0CE0247E9F1B08FCC874EC8950A587336360FAB124C5BC3028035396DCB141561EF3D9A75F4633C27D75131EA1492B1F19FA4929BD1697234636AAAACCD876
|
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
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue