adding JH
This commit is contained in:
parent
b8d6b2bd3d
commit
bd740a03aa
|
@ -0,0 +1,99 @@
|
|||
/* hfal_jh.c */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/**
|
||||
* \file hfal_jh.c
|
||||
* \email daniel.otte@rub.de
|
||||
* \author Daniel Otte
|
||||
* \date 2010-12-16
|
||||
* \license GPLv3 or later
|
||||
*
|
||||
*/
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include <stdlib.h>
|
||||
#include "hashfunction_descriptor.h"
|
||||
#include "jh_simple.h"
|
||||
|
||||
|
||||
static const char jh224_str[] PROGMEM = "JH-224";
|
||||
static const char jh256_str[] PROGMEM = "JH-256";
|
||||
static const char jh384_str[] PROGMEM = "JH-384";
|
||||
static const char jh512_str[] PROGMEM = "JH-512";
|
||||
|
||||
const hfdesc_t jh224_desc PROGMEM = {
|
||||
HFDESC_TYPE_HASHFUNCTION,
|
||||
0,
|
||||
jh224_str,
|
||||
sizeof(jh_ctx_t),
|
||||
JH224_BLOCKSIZE,
|
||||
224,
|
||||
(hf_init_fpt)jh224_init,
|
||||
(hf_nextBlock_fpt)jh_nextBlock,
|
||||
(hf_lastBlock_fpt)jh_lastBlock,
|
||||
(hf_ctx2hash_fpt)jh224_ctx2hash,
|
||||
(hf_free_fpt)NULL,
|
||||
(hf_mem_fpt)NULL
|
||||
};
|
||||
|
||||
const hfdesc_t jh256_desc PROGMEM = {
|
||||
HFDESC_TYPE_HASHFUNCTION,
|
||||
0,
|
||||
jh256_str,
|
||||
sizeof(jh_ctx_t),
|
||||
JH256_BLOCKSIZE,
|
||||
256,
|
||||
(hf_init_fpt)jh256_init,
|
||||
(hf_nextBlock_fpt)jh_nextBlock,
|
||||
(hf_lastBlock_fpt)jh_lastBlock,
|
||||
(hf_ctx2hash_fpt)jh256_ctx2hash,
|
||||
(hf_free_fpt)NULL,
|
||||
(hf_mem_fpt)NULL
|
||||
};
|
||||
|
||||
const hfdesc_t jh384_desc PROGMEM = {
|
||||
HFDESC_TYPE_HASHFUNCTION,
|
||||
0,
|
||||
jh384_str,
|
||||
sizeof(jh_ctx_t),
|
||||
JH384_BLOCKSIZE,
|
||||
384,
|
||||
(hf_init_fpt)jh384_init,
|
||||
(hf_nextBlock_fpt)jh_nextBlock,
|
||||
(hf_lastBlock_fpt)jh_lastBlock,
|
||||
(hf_ctx2hash_fpt)jh384_ctx2hash,
|
||||
(hf_free_fpt)NULL,
|
||||
(hf_mem_fpt)NULL
|
||||
};
|
||||
|
||||
const hfdesc_t jh512_desc PROGMEM = {
|
||||
HFDESC_TYPE_HASHFUNCTION,
|
||||
0,
|
||||
jh512_str,
|
||||
sizeof(jh_ctx_t),
|
||||
JH512_BLOCKSIZE,
|
||||
512,
|
||||
(hf_init_fpt)jh512_init,
|
||||
(hf_nextBlock_fpt)jh_nextBlock,
|
||||
(hf_lastBlock_fpt)jh_lastBlock,
|
||||
(hf_ctx2hash_fpt)jh512_ctx2hash,
|
||||
(hf_free_fpt)NULL,
|
||||
(hf_mem_fpt)NULL
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
/* hfal_jh.h */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef HFAL_JH_H_
|
||||
#define HFAL_JH_H_
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
#include "hashfunction_descriptor.h"
|
||||
|
||||
extern const hfdesc_t jh224_desc;
|
||||
extern const hfdesc_t jh256_desc;
|
||||
extern const hfdesc_t jh384_desc;
|
||||
extern const hfdesc_t jh512_desc;
|
||||
|
||||
|
||||
#endif /* HFAL_JH_H_ */
|
|
@ -0,0 +1,62 @@
|
|||
/* jh_simple.h */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef JH_SIMPLE_H_
|
||||
#define JH_SIMPLE_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define JH224_BLOCKSIZE 512
|
||||
#define JH224_BLOCKSIZE_B ((JH224_BLOCKSIZE+7)/8)
|
||||
#define JH256_BLOCKSIZE 512
|
||||
#define JH256_BLOCKSIZE_B ((JH256_BLOCKSIZE+7)/8)
|
||||
#define JH384_BLOCKSIZE 512
|
||||
#define JH384_BLOCKSIZE_B ((JH284_BLOCKSIZE+7)/8)
|
||||
#define JH512_BLOCKSIZE 512
|
||||
#define JH512_BLOCKSIZE_B ((JH512_BLOCKSIZE+7)/8)
|
||||
|
||||
typedef struct {
|
||||
uint8_t a[128];
|
||||
uint32_t block_hashed;
|
||||
} jh_ctx_t;
|
||||
|
||||
void jh_round(uint8_t* a, uint8_t roundno);
|
||||
void jh_encrypt(uint8_t* a);
|
||||
|
||||
|
||||
|
||||
void jh_init(uint16_t hashlen_b, jh_ctx_t* ctx);
|
||||
void jh_nextBlock(jh_ctx_t* ctx, void* block);
|
||||
void jh_lastBlock(jh_ctx_t* ctx, void* block, uint16_t length_b);
|
||||
void jh_ctx2hash(void* dest, uint16_t length_b, jh_ctx_t* ctx);
|
||||
|
||||
void jh224_init(jh_ctx_t* ctx);
|
||||
void jh224_ctx2hash(void* dest, jh_ctx_t* ctx);
|
||||
|
||||
void jh256_init(jh_ctx_t* ctx);
|
||||
void jh256_ctx2hash(void* dest, jh_ctx_t* ctx);
|
||||
|
||||
void jh384_init(jh_ctx_t* ctx);
|
||||
void jh384_ctx2hash(void* dest, jh_ctx_t* ctx);
|
||||
|
||||
void jh512_init(jh_ctx_t* ctx);
|
||||
void jh512_ctx2hash(void* dest, jh_ctx_t* ctx);
|
||||
|
||||
|
||||
#endif /* JH_SIMPLE_H_ */
|
|
@ -0,0 +1,224 @@
|
|||
/* jh_simple_speed.c */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2006-2010 Daniel Otte (daniel.otte@rub.de)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <avr/pgmspace.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "memxor.h"
|
||||
#include "jh_simple.h"
|
||||
#include "jh_tables.h"
|
||||
|
||||
#define DEBUG 0
|
||||
|
||||
#if DEBUG
|
||||
#include "cli.h"
|
||||
#endif
|
||||
|
||||
void jh_round(uint8_t* a, uint8_t roundno){
|
||||
uint8_t b[128];
|
||||
uint8_t i,r,u,v,x,y;
|
||||
uint8_t *pr;
|
||||
pr = jh_round_const + 32*roundno;
|
||||
for(i=0; i<128; ++i){
|
||||
if(i%4==0){
|
||||
r = pgm_read_byte(pr++);
|
||||
}
|
||||
b[i]=pgm_read_byte(&(jh_lutbox[((r&0xC0)<<2)|a[i]]));
|
||||
r<<=2;
|
||||
}
|
||||
for(i=0;i<128;++i){
|
||||
u = pgm_read_byte(jh_permutation_table+2*i);
|
||||
v = pgm_read_byte(jh_permutation_table+2*i+1);
|
||||
x = b[u>>1];
|
||||
y = b[v>>1];
|
||||
if(u&1){
|
||||
x <<= 4;
|
||||
}else{
|
||||
x &= 0xf0;
|
||||
}
|
||||
if(v&1){
|
||||
y &= 0x0f;
|
||||
}else{
|
||||
y >>= 4;
|
||||
}
|
||||
a[i] = x|y;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t jh_l_inv(uint8_t a){
|
||||
uint8_t v,w;
|
||||
v = a>>4;
|
||||
w = a&0xf;
|
||||
v ^= ((w<<1)^(w>>3)^((w>>2)&2))&0xf;
|
||||
w ^= ((v<<1)^(v>>3)^((v>>2)&2))&0xf;
|
||||
return w|(v<<4);
|
||||
}
|
||||
|
||||
void group(uint8_t *a){
|
||||
uint8_t b[128];
|
||||
uint8_t i,x,y;
|
||||
for(i=0; i<128; ++i){
|
||||
x = (((a[i/8+ 0])>>4)&0x8)
|
||||
| (((a[i/8+ 32])>>5)&0x4)
|
||||
| (((a[i/8+ 64])>>6)&0x2)
|
||||
| (((a[i/8+ 96])>>7)&0x1);
|
||||
a[i/8] <<= 1; a[i/8+32]<<=1; a[i/8+64]<<=1; a[i/8+96]<<=1;
|
||||
y = (((a[i/8+ 16])>>4)&0x8)
|
||||
| (((a[i/8+ 48])>>5)&0x4)
|
||||
| (((a[i/8+ 80])>>6)&0x2)
|
||||
| (((a[i/8+112])>>7)&0x1);
|
||||
a[i/8+16] <<= 1; a[i/8+48]<<=1; a[i/8+80]<<=1; a[i/8+112]<<=1;
|
||||
b[i]= (x<<4)|y;
|
||||
}
|
||||
memcpy(a,b,128);
|
||||
}
|
||||
|
||||
void degroup(uint8_t *a){
|
||||
uint8_t b[128];
|
||||
uint8_t i,j;
|
||||
for(i=0;i<128;++i){
|
||||
j=i/8;
|
||||
b[j+ 0]<<=1; b[j+ 0] |= ((a[i])>>7)&1;
|
||||
b[j+ 32]<<=1; b[j+ 32] |= ((a[i])>>6)&1;
|
||||
b[j+ 64]<<=1; b[j+ 64] |= ((a[i])>>5)&1;
|
||||
b[j+ 96]<<=1; b[j+ 96] |= ((a[i])>>4)&1;
|
||||
b[j+ 16]<<=1; b[j+ 16] |= ((a[i])>>3)&1;
|
||||
b[j+ 48]<<=1; b[j+ 48] |= ((a[i])>>2)&1;
|
||||
b[j+ 80]<<=1; b[j+ 80] |= ((a[i])>>1)&1;
|
||||
b[j+112]<<=1; b[j+112] |= ((a[i])>>0)&1;
|
||||
}
|
||||
memcpy(a,b,128);
|
||||
}
|
||||
|
||||
void jh_encrypt(uint8_t* a){
|
||||
uint8_t i;
|
||||
/* grouping */
|
||||
#if DEBUG
|
||||
cli_putstr_P(PSTR("\r\n== pre group ==\r\n"));
|
||||
cli_hexdump_block(a, 128, 4, 16);
|
||||
#endif
|
||||
group(a);
|
||||
for(i=0;i<35;++i){
|
||||
jh_round(a, i);
|
||||
}
|
||||
uint8_t r;
|
||||
uint8_t *pr;
|
||||
|
||||
pr = jh_round_const + 32*35;
|
||||
for(i=0; i<128; ++i){
|
||||
if(i%4==0){
|
||||
r = pgm_read_byte(pr++);
|
||||
}
|
||||
a[i]=jh_l_inv(pgm_read_byte(&(jh_lutbox[((r&0xC0)<<2)|a[i]])));
|
||||
r<<=2;
|
||||
}
|
||||
/* degrouping */
|
||||
#if DEBUG
|
||||
cli_putstr_P(PSTR("\r\n== pre degroup ==\r\n"));
|
||||
cli_hexdump_block(a, 128, 4, 16);
|
||||
#endif
|
||||
degroup(a);
|
||||
#if DEBUG
|
||||
cli_putstr_P(PSTR("\r\n== post degroup ==\r\n"));
|
||||
cli_hexdump_block(a, 128, 4, 16);
|
||||
#endif
|
||||
}
|
||||
|
||||
void jh_init(uint16_t hashlen_b, jh_ctx_t* ctx){
|
||||
memset(ctx->a, 0, 128);
|
||||
ctx->a[0] = hashlen_b>>8;
|
||||
ctx->a[1] = hashlen_b&0xff;
|
||||
jh_encrypt(ctx->a);
|
||||
ctx->block_hashed=0;
|
||||
}
|
||||
|
||||
void jh_nextBlock(jh_ctx_t* ctx, void* block){
|
||||
memxor(ctx->a, block, 64);
|
||||
jh_encrypt(ctx->a);
|
||||
memxor(ctx->a+64, block, 64);
|
||||
ctx->block_hashed++;
|
||||
}
|
||||
|
||||
void jh_lastBlock(jh_ctx_t* ctx, void* block, uint16_t length_b){
|
||||
while(length_b>=64*8){
|
||||
jh_nextBlock(ctx, block);
|
||||
block = (uint8_t*)block + 64;
|
||||
length_b -= 64*8;
|
||||
}
|
||||
uint8_t buffer[64];
|
||||
uint64_t total_length;
|
||||
memset(buffer, 0, 64);
|
||||
memcpy(buffer, block, (length_b+7)/8);
|
||||
buffer[length_b/8] |= 0x80>>(length_b%8);
|
||||
total_length=ctx->block_hashed*512+length_b;
|
||||
if(length_b==0){
|
||||
|
||||
}else{
|
||||
jh_nextBlock(ctx, buffer);
|
||||
buffer[0]=0;
|
||||
}
|
||||
memset(buffer+1, 0, 64-8-1);
|
||||
buffer[63] = total_length&0xff;
|
||||
buffer[62] = (total_length>> 8)&0xff;
|
||||
buffer[61] = (total_length>>16)&0xff;
|
||||
buffer[60] = (total_length>>24)&0xff;
|
||||
buffer[59] = (total_length>>32)&0xff;
|
||||
buffer[58] = (total_length>>40)&0xff;
|
||||
buffer[57] = (total_length>>48)&0xff;
|
||||
buffer[56] = (total_length>>56)&0xff;
|
||||
jh_nextBlock(ctx, buffer);
|
||||
}
|
||||
|
||||
void jh_ctx2hash(void* dest, uint16_t length_b, jh_ctx_t* ctx){
|
||||
memcpy(dest, ctx->a+128-(length_b+7)/8, (length_b+7)/8);
|
||||
}
|
||||
|
||||
|
||||
void jh224_init(jh_ctx_t* ctx){
|
||||
jh_init(224, ctx);
|
||||
}
|
||||
|
||||
void jh224_ctx2hash(void* dest, jh_ctx_t* ctx){
|
||||
jh_ctx2hash(dest, 224, ctx);
|
||||
}
|
||||
|
||||
void jh256_init(jh_ctx_t* ctx){
|
||||
jh_init(256, ctx);
|
||||
}
|
||||
|
||||
void jh256_ctx2hash(void* dest, jh_ctx_t* ctx){
|
||||
jh_ctx2hash(dest, 256, ctx);
|
||||
}
|
||||
|
||||
void jh384_init(jh_ctx_t* ctx){
|
||||
jh_init(384, ctx);
|
||||
}
|
||||
|
||||
void jh384_ctx2hash(void* dest, jh_ctx_t* ctx){
|
||||
jh_ctx2hash(dest, 384, ctx);
|
||||
}
|
||||
|
||||
void jh512_init(jh_ctx_t* ctx){
|
||||
jh_init(512, ctx);
|
||||
}
|
||||
|
||||
void jh512_ctx2hash(void* dest, jh_ctx_t* ctx){
|
||||
jh_ctx2hash(dest, 512, ctx);
|
||||
}
|
|
@ -0,0 +1,347 @@
|
|||
#!/usr/bin/ruby
|
||||
# jh_tablegen.rb
|
||||
=begin
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
=end
|
||||
|
||||
$sbox0 = [ 9, 0, 4, 11, 13, 12, 3, 15, 1, 10, 2, 6, 7, 5, 8, 14]
|
||||
$sbox1 = [ 3, 12, 6, 13, 5, 7, 1, 9, 15, 2, 0, 4, 11, 10, 14, 8]
|
||||
|
||||
# (b) ^= ( ( (a) << 1) ^ ( (a) >> 3) ^ (( (a) >> 2) & 2) ) & 0xf;
|
||||
# (a) ^= ( ( (b) << 1) ^ ( (b) >> 3) ^ (( (b) >> 2) & 2) ) & 0xf;
|
||||
|
||||
def L_transform(v,w)
|
||||
v = v&0x0f; w = w&0x0f
|
||||
# a = ((v<<1)|(v>>3))&0xf
|
||||
# d = a^w^((v>>2)&2)
|
||||
# d_ = ((d<<1)|(d>>3))&0xf
|
||||
# c = v^d_^((d>>2)&2)
|
||||
# return c, d
|
||||
w ^= ((v<<1)^(v>>3)^((v>>2)&2))&0x0f
|
||||
v ^= ((w<<1)^(w>>3)^((w>>2)&2))&0x0f
|
||||
return v,w
|
||||
end
|
||||
|
||||
def L_transform_inv(v,w)
|
||||
a,b = L_transform(w,v)
|
||||
return b,a
|
||||
end
|
||||
|
||||
|
||||
def pi_permute(a, d=8)
|
||||
b=Array.new
|
||||
(2**(d-2)).times{ |i| b[4*i+0] = a[4*i+0]}
|
||||
(2**(d-2)).times{ |i| b[4*i+1] = a[4*i+1]}
|
||||
(2**(d-2)).times{ |i| b[4*i+2] = a[4*i+3]}
|
||||
(2**(d-2)).times{ |i| b[4*i+3] = a[4*i+2]}
|
||||
return b
|
||||
end
|
||||
|
||||
def p_permute(a, d=8)
|
||||
b=Array.new
|
||||
(2**(d-1)).times{ |i| b[i] = a[2*i]}
|
||||
(2**(d-1)).times{ |i| b[i+2**(d-1)] = a[2*i+1]}
|
||||
return b
|
||||
end
|
||||
|
||||
def phi_permute(a, d=8)
|
||||
b=Array.new
|
||||
(2**(d-1)).times{ |i| b[i] = a[i]}
|
||||
(2**(d-2)).times{ |i| b[2**(d-1)+2*i+0] = a[2**(d-1)+2*i+1]}
|
||||
(2**(d-2)).times{ |i| b[2**(d-1)+2*i+1] = a[2**(d-1)+2*i+0]}
|
||||
return b
|
||||
end
|
||||
|
||||
def test_permutations
|
||||
a = Array.new
|
||||
16.times{|i| a[i]=i}
|
||||
puts a.inspect
|
||||
b = pi_permute(a,4)
|
||||
puts b.inspect
|
||||
b = p_permute(a,4)
|
||||
puts b.inspect
|
||||
b = phi_permute(a,4)
|
||||
puts b.inspect
|
||||
end
|
||||
|
||||
def permutation(a, d=8)
|
||||
return phi_permute(p_permute(pi_permute(a,d),d),d)
|
||||
end
|
||||
|
||||
$permutation_table=Array.new
|
||||
|
||||
def gen_permutation_table
|
||||
a = Array.new
|
||||
256.times {|i| a<<i}
|
||||
$permutation_table=permutation(a,8)
|
||||
end
|
||||
|
||||
def print_permute_table
|
||||
printf("\npermutation table:\n\t")
|
||||
16.times do |y|
|
||||
16.times do |x|
|
||||
printf("0x%02X, ", $permutation_table[y*16+x])
|
||||
end
|
||||
printf("\n\t")
|
||||
end
|
||||
puts("")
|
||||
end
|
||||
|
||||
$nibble_invert=false
|
||||
|
||||
|
||||
def split_byte(v)
|
||||
a = (v>>4)&0xf
|
||||
b = v&0xf
|
||||
return b,a if $nibble_invert
|
||||
return a,b
|
||||
end
|
||||
|
||||
def join_nibbles(a,b)
|
||||
if($nibble_invert)
|
||||
v = ((b<<4)|(a&0xf))&0xff
|
||||
else
|
||||
v = ((a<<4)|(b&0xf))&0xff
|
||||
end
|
||||
return v
|
||||
end
|
||||
|
||||
$lutbox=Array.new
|
||||
|
||||
def gen_lutboxes
|
||||
4.times do |box|
|
||||
$lutbox[box]=Array.new
|
||||
256.times do |i|
|
||||
a,b = split_byte(i)
|
||||
a = ((box&2)==2)?$sbox1[a]:$sbox0[a]
|
||||
b = ((box&1)==1)?$sbox1[b]:$sbox0[b]
|
||||
c,d = L_transform(a,b)
|
||||
$lutbox[box]<<join_nibbles(c,d)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def print_lutbox(n)
|
||||
printf("\nSBOX%d:\n\t",n)
|
||||
256.times do |i|
|
||||
printf("0x%02X, ",$lutbox[n][i])
|
||||
print("\n\t") if(i%16==15)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
$round_const = [
|
||||
0x6a09e667f3bcc908b2fb1366ea957d3e3adec17512775099da2f590b0667322a,
|
||||
0xbb896bf05955abcd5281828d66e7d99ac4203494f89bf12817deb43288712231,
|
||||
0x1836e76b12d79c55118a1139d2417df52a2021225ff6350063d88e5f1f91631c,
|
||||
0x263085a7000fa9c3317c6ca8ab65f7a7713cf4201060ce886af855a90d6a4eed,
|
||||
0x1cebafd51a156aeb62a11fb3be2e14f60b7e48de85814270fd62e97614d7b441,
|
||||
0xe5564cb574f7e09c75e2e244929e9549279ab224a28e445d57185e7d7a09fdc1,
|
||||
0x5820f0f0d764cff3a5552a5e41a82b9eff6ee0aa615773bb07e8603424c3cf8a,
|
||||
0xb126fb741733c5bfcef6f43a62e8e5706a26656028aa897ec1ea4616ce8fd510,
|
||||
0xdbf0de32bca77254bb4f562581a3bc991cf94f225652c27f14eae958ae6aa616,
|
||||
0xe6113be617f45f3de53cff03919a94c32c927b093ac8f23b47f7189aadb9bc67,
|
||||
0x80d0d26052ca45d593ab5fb3102506390083afb5ffe107dacfcba7dbe601a12b,
|
||||
0x43af1c76126714dfa950c368787c81ae3beecf956c85c962086ae16e40ebb0b4,
|
||||
0x9aee8994d2d74a5cdb7b1ef294eed5c1520724dd8ed58c92d3f0e174b0c32045,
|
||||
0x0b2aa58ceb3bdb9e1eef66b376e0c565d5d8fe7bacb8da866f859ac521f3d571,
|
||||
0x7a1523ef3d970a3a9b0b4d610e02749d37b8d57c1885fe4206a7f338e8356866,
|
||||
0x2c2db8f7876685f2cd9a2e0ddb64c9d5bf13905371fc39e0fa86e1477234a297,
|
||||
0x9df085eb2544ebf62b50686a71e6e828dfed9dbe0b106c9452ceddff3d138990,
|
||||
0xe6e5c42cb2d460c9d6e4791a1681bb2e222e54558eb78d5244e217d1bfcf5058,
|
||||
0x8f1f57e44e126210f00763ff57da208a5093b8ff7947534a4c260a17642f72b2,
|
||||
0xae4ef4792ea148608cf116cb2bff66e8fc74811266cd641112cd17801ed38b59,
|
||||
0x91a744efbf68b192d0549b608bdb3191fc12a0e83543cec5f882250b244f78e4,
|
||||
0x4b5d27d3368f9c17d4b2a2b216c7e74e7714d2cc03e1e44588cd9936de74357c,
|
||||
0x0ea17cafb8286131bda9e3757b3610aa3f77a6d0575053fc926eea7e237df289,
|
||||
0x848af9f57eb1a616e2c342c8cea528b8a95a5d16d9d87be9bb3784d0c351c32b,
|
||||
0xc0435cc3654fb85dd9335ba91ac3dbde1f85d567d7ad16f9de6e009bca3f95b5,
|
||||
0x927547fe5e5e45e2fe99f1651ea1cbf097dc3a3d40ddd21cee260543c288ec6b,
|
||||
0xc117a3770d3a34469d50dfa7db020300d306a365374fa828c8b780ee1b9d7a34,
|
||||
0x8ff2178ae2dbe5e872fac789a34bc228debf54a882743caad14f3a550fdbe68f,
|
||||
0xabd06c52ed58ff091205d0f627574c8cbc1fe7cf79210f5a2286f6e23a27efa0,
|
||||
0x631f4acb8d3ca4253e301849f157571d3211b6c1045347befb7c77df3c6ca7bd,
|
||||
0xae88f2342c23344590be2014fab4f179fd4bf7c90db14fa4018fcce689d2127b,
|
||||
0x93b89385546d71379fe41c39bc602e8b7c8b2f78ee914d1f0af0d437a189a8a4,
|
||||
0x1d1e036abeef3f44848cd76ef6baa889fcec56cd7967eb909a464bfc23c72435,
|
||||
0xa8e4ede4c5fe5e88d4fb192e0a0821e935ba145bbfc59c2508282755a5df53a5,
|
||||
0x8e4e37a3b970f079ae9d22a499a714c875760273f74a9398995d32c05027d810,
|
||||
0x61cfa42792f93b9fde36eb163e978709fafa7616ec3c7dad0135806c3d91a21b
|
||||
]
|
||||
|
||||
def group(a)
|
||||
q = Array.new
|
||||
128.times do |i|
|
||||
q[2*i] = ((a[i/8])>>4)&0x8 | ((a[i/8+32])>>5)&0x4 | ((a[i/8+64])>>6)&0x2 | ((a[i/8+96])>>7)&0x1
|
||||
a[i/8] <<= 1; a[i/8+32]<<=1; a[i/8+64]<<=1; a[i/8+96]<<=1;
|
||||
q[2*i+1] = ((a[i/8+16])>>4)&0x8 | ((a[i/8+48])>>5)&0x4 | ((a[i/8+80])>>6)&0x2 | ((a[i/8+112])>>7)&0x1
|
||||
a[i/8+16] <<= 1; a[i/8+48]<<=1; a[i/8+80]<<=1; a[i/8+112]<<=1;
|
||||
end
|
||||
b = Array.new
|
||||
128.times {|i| b<<join_nibbles(q[2*i], q[2*i+1])}
|
||||
return b
|
||||
end
|
||||
|
||||
def degroup(a)
|
||||
b = Array.new
|
||||
128.times {|i| b[i]=0}
|
||||
128.times do |i|
|
||||
b[i/8+ 0]<<=1; b[i/8+ 0] |= (a[i]>>7)&1; a[i]<<=1
|
||||
b[i/8+ 32]<<=1; b[i/8+ 32] |= (a[i]>>7)&1; a[i]<<=1
|
||||
b[i/8+ 64]<<=1; b[i/8+ 64] |= (a[i]>>7)&1; a[i]<<=1
|
||||
b[i/8+ 96]<<=1; b[i/8+ 96] |= (a[i]>>7)&1; a[i]<<=1
|
||||
b[i/8+ 16]<<=1; b[i/8+ 16] |= (a[i]>>7)&1; a[i]<<=1
|
||||
b[i/8+ 48]<<=1; b[i/8+ 48] |= (a[i]>>7)&1; a[i]<<=1
|
||||
b[i/8+ 80]<<=1; b[i/8+ 80] |= (a[i]>>7)&1; a[i]<<=1
|
||||
b[i/8+112]<<=1; b[i/8+112] |= (a[i]>>7)&1; a[i]<<=1
|
||||
end
|
||||
return b
|
||||
end
|
||||
|
||||
# data is an array of bytes
|
||||
#
|
||||
def single_round(data, round)
|
||||
a = Array.new
|
||||
rc = $round_const[round]
|
||||
=begin
|
||||
printf("\n== round %2d==\n\t", round)
|
||||
16.times do |y|
|
||||
8.times do |x|
|
||||
printf("%02X ", data[8*y+x])
|
||||
end
|
||||
print("\n\t")
|
||||
end
|
||||
=end
|
||||
128.times do |idx|
|
||||
x,y=split_byte($lutbox[((rc)>>(254))&0x3][data[idx]])
|
||||
rc <<= 2
|
||||
a << x << y
|
||||
end
|
||||
a = permutation(a)
|
||||
b = Array.new
|
||||
128.times {|idx| b << join_nibbles(a[2*idx],a[2*idx+1])}
|
||||
return b
|
||||
end
|
||||
|
||||
def encrypt(data)
|
||||
=begin
|
||||
print("\n== ENCRYPT ==\n")
|
||||
print("=== pre group: ===\n\t")
|
||||
16.times do |y|
|
||||
8.times do |x|
|
||||
printf("%02X ", data[8*y+x])
|
||||
end
|
||||
print("\n\t")
|
||||
end
|
||||
puts("")
|
||||
=end
|
||||
data = group(data)
|
||||
=begin
|
||||
print("=== post group: ===\n\t")
|
||||
16.times do |y|
|
||||
8.times do |x|
|
||||
printf("%02X ", data[8*y+x])
|
||||
end
|
||||
print("\n\t")
|
||||
end
|
||||
puts("")
|
||||
=end
|
||||
35.times do |round|
|
||||
data = single_round(data, round)
|
||||
end
|
||||
a = Array.new
|
||||
rc = $round_const[35]
|
||||
data.length.times do |idx|
|
||||
x, y = split_byte($lutbox[(rc>>254)&3][data[idx]])
|
||||
rc <<= 2
|
||||
v, w = L_transform_inv(x, y)
|
||||
a << join_nibbles(v,w)
|
||||
end
|
||||
a = degroup(a)
|
||||
=begin
|
||||
print("\n=== post enc: ===\n\t")
|
||||
16.times do |y|
|
||||
8.times do |x|
|
||||
printf("%02X ", a[8*y+x])
|
||||
end
|
||||
print("\n\t")
|
||||
end
|
||||
puts("")
|
||||
=end
|
||||
return a
|
||||
end
|
||||
|
||||
def hash_block(state_a, block)
|
||||
64.times { |i| state_a[i] ^= block[i]}
|
||||
state_a = encrypt(state_a)
|
||||
64.times { |i| state_a[64+i] ^= block[i]}
|
||||
return state_a
|
||||
end
|
||||
|
||||
def test_L_inverse
|
||||
print("\nL_inv_test:\n\t")
|
||||
256.times do |i|
|
||||
a,b = split_byte(i)
|
||||
c,d = L_transform(a, b)
|
||||
a,b = L_transform_inv(c, d)
|
||||
if join_nibbles(a,b)==i
|
||||
print('*')
|
||||
else
|
||||
print('!')
|
||||
end
|
||||
print("\n\t") if(i%16==15)
|
||||
end
|
||||
end
|
||||
#test_permutations
|
||||
|
||||
gen_lutboxes
|
||||
gen_permutation_table
|
||||
print_permute_table
|
||||
4.times{ |i| print_lutbox(i) }
|
||||
test_L_inverse
|
||||
print("\nsingle round:\n\t")
|
||||
h = single_round([0,0,0,0,0,0,0,0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],0)
|
||||
16.times do |y|
|
||||
8.times do |x|
|
||||
printf("%02X, ",h[y*8+x])
|
||||
end
|
||||
print("\n\t")
|
||||
end
|
||||
#=begin
|
||||
print("\nH(0):\n\t")
|
||||
h = hash_block([0x01,0,0,0,0,0,0,0x0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
|
||||
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
|
||||
h = hash_block(h,
|
||||
[0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
|
||||
16.times do |y|
|
||||
8.times do |x|
|
||||
printf("%02X, ",h[y*8+x])
|
||||
end
|
||||
print("\n\t")
|
||||
end
|
||||
#=end
|
||||
puts("")
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
/* jh_tables.c */
|
||||
/*
|
||||
This file is part of the ARM-Crypto-Lib.
|
||||
Copyright (C) 2006-2010 Daniel Otte (daniel.otte@rub.de)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
uint8_t jh_permutation_table[] PROGMEM = {
|
||||
0x00, 0x03, 0x04, 0x07, 0x08, 0x0B, 0x0C, 0x0F, 0x10, 0x13, 0x14, 0x17, 0x18, 0x1B, 0x1C, 0x1F,
|
||||
0x20, 0x23, 0x24, 0x27, 0x28, 0x2B, 0x2C, 0x2F, 0x30, 0x33, 0x34, 0x37, 0x38, 0x3B, 0x3C, 0x3F,
|
||||
0x40, 0x43, 0x44, 0x47, 0x48, 0x4B, 0x4C, 0x4F, 0x50, 0x53, 0x54, 0x57, 0x58, 0x5B, 0x5C, 0x5F,
|
||||
0x60, 0x63, 0x64, 0x67, 0x68, 0x6B, 0x6C, 0x6F, 0x70, 0x73, 0x74, 0x77, 0x78, 0x7B, 0x7C, 0x7F,
|
||||
0x80, 0x83, 0x84, 0x87, 0x88, 0x8B, 0x8C, 0x8F, 0x90, 0x93, 0x94, 0x97, 0x98, 0x9B, 0x9C, 0x9F,
|
||||
0xA0, 0xA3, 0xA4, 0xA7, 0xA8, 0xAB, 0xAC, 0xAF, 0xB0, 0xB3, 0xB4, 0xB7, 0xB8, 0xBB, 0xBC, 0xBF,
|
||||
0xC0, 0xC3, 0xC4, 0xC7, 0xC8, 0xCB, 0xCC, 0xCF, 0xD0, 0xD3, 0xD4, 0xD7, 0xD8, 0xDB, 0xDC, 0xDF,
|
||||
0xE0, 0xE3, 0xE4, 0xE7, 0xE8, 0xEB, 0xEC, 0xEF, 0xF0, 0xF3, 0xF4, 0xF7, 0xF8, 0xFB, 0xFC, 0xFF,
|
||||
0x02, 0x01, 0x06, 0x05, 0x0A, 0x09, 0x0E, 0x0D, 0x12, 0x11, 0x16, 0x15, 0x1A, 0x19, 0x1E, 0x1D,
|
||||
0x22, 0x21, 0x26, 0x25, 0x2A, 0x29, 0x2E, 0x2D, 0x32, 0x31, 0x36, 0x35, 0x3A, 0x39, 0x3E, 0x3D,
|
||||
0x42, 0x41, 0x46, 0x45, 0x4A, 0x49, 0x4E, 0x4D, 0x52, 0x51, 0x56, 0x55, 0x5A, 0x59, 0x5E, 0x5D,
|
||||
0x62, 0x61, 0x66, 0x65, 0x6A, 0x69, 0x6E, 0x6D, 0x72, 0x71, 0x76, 0x75, 0x7A, 0x79, 0x7E, 0x7D,
|
||||
0x82, 0x81, 0x86, 0x85, 0x8A, 0x89, 0x8E, 0x8D, 0x92, 0x91, 0x96, 0x95, 0x9A, 0x99, 0x9E, 0x9D,
|
||||
0xA2, 0xA1, 0xA6, 0xA5, 0xAA, 0xA9, 0xAE, 0xAD, 0xB2, 0xB1, 0xB6, 0xB5, 0xBA, 0xB9, 0xBE, 0xBD,
|
||||
0xC2, 0xC1, 0xC6, 0xC5, 0xCA, 0xC9, 0xCE, 0xCD, 0xD2, 0xD1, 0xD6, 0xD5, 0xDA, 0xD9, 0xDE, 0xDD,
|
||||
0xE2, 0xE1, 0xE6, 0xE5, 0xEA, 0xE9, 0xEE, 0xED, 0xF2, 0xF1, 0xF6, 0xF5, 0xFA, 0xF9, 0xFE, 0xFD
|
||||
};
|
||||
|
||||
uint8_t jh_lutbox[] PROGMEM = {
|
||||
0xA8, 0xB1, 0x35, 0xEA, 0x2C, 0x0D, 0xD2, 0x6E, 0x90, 0xCB, 0xF3, 0x77, 0x56, 0x14, 0x89, 0x4F,
|
||||
0x19, 0x00, 0x84, 0x5B, 0x9D, 0xBC, 0x63, 0xDF, 0x21, 0x7A, 0x42, 0xC6, 0xE7, 0xA5, 0x38, 0xFE,
|
||||
0x61, 0x78, 0xFC, 0x23, 0xE5, 0xC4, 0x1B, 0xA7, 0x59, 0x02, 0x3A, 0xBE, 0x9F, 0xDD, 0x40, 0x86,
|
||||
0x0C, 0x15, 0x91, 0x4E, 0x88, 0xA9, 0x76, 0xCA, 0x34, 0x6F, 0x57, 0xD3, 0xF2, 0xB0, 0x2D, 0xEB,
|
||||
0xD0, 0xC9, 0x4D, 0x92, 0x54, 0x75, 0xAA, 0x16, 0xE8, 0xB3, 0x8B, 0x0F, 0x2E, 0x6C, 0xF1, 0x37,
|
||||
0x82, 0x9B, 0x1F, 0xC0, 0x06, 0x27, 0xF8, 0x44, 0xBA, 0xE1, 0xD9, 0x5D, 0x7C, 0x3E, 0xA3, 0x65,
|
||||
0xEF, 0xF6, 0x72, 0xAD, 0x6B, 0x4A, 0x95, 0x29, 0xD7, 0x8C, 0xB4, 0x30, 0x11, 0x53, 0xCE, 0x08,
|
||||
0x74, 0x6D, 0xE9, 0x36, 0xF0, 0xD1, 0x0E, 0xB2, 0x4C, 0x17, 0x2F, 0xAB, 0x8A, 0xC8, 0x55, 0x93,
|
||||
0x4B, 0x52, 0xD6, 0x09, 0xCF, 0xEE, 0x31, 0x8D, 0x73, 0x28, 0x10, 0x94, 0xB5, 0xF7, 0x6A, 0xAC,
|
||||
0x5E, 0x47, 0xC3, 0x1C, 0xDA, 0xFB, 0x24, 0x98, 0x66, 0x3D, 0x05, 0x81, 0xA0, 0xE2, 0x7F, 0xB9,
|
||||
0xBD, 0xA4, 0x20, 0xFF, 0x39, 0x18, 0xC7, 0x7B, 0x85, 0xDE, 0xE6, 0x62, 0x43, 0x01, 0x9C, 0x5A,
|
||||
0xC5, 0xDC, 0x58, 0x87, 0x41, 0x60, 0xBF, 0x03, 0xFD, 0xA6, 0x9E, 0x1A, 0x3B, 0x79, 0xE4, 0x22,
|
||||
0x97, 0x8E, 0x0A, 0xD5, 0x13, 0x32, 0xED, 0x51, 0xAF, 0xF4, 0xCC, 0x48, 0x69, 0x2B, 0xB6, 0x70,
|
||||
0x33, 0x2A, 0xAE, 0x71, 0xB7, 0x96, 0x49, 0xF5, 0x0B, 0x50, 0x68, 0xEC, 0xCD, 0x8F, 0x12, 0xD4,
|
||||
0xFA, 0xE3, 0x67, 0xB8, 0x7E, 0x5F, 0x80, 0x3C, 0xC2, 0x99, 0xA1, 0x25, 0x04, 0x46, 0xDB, 0x1D,
|
||||
0x26, 0x3F, 0xBB, 0x64, 0xA2, 0x83, 0x5C, 0xE0, 0x1E, 0x45, 0x7D, 0xF9, 0xD8, 0x9A, 0x07, 0xC1,
|
||||
|
||||
/* SBOX1: */
|
||||
0xD2, 0x0D, 0x77, 0x2C, 0x14, 0x56, 0x90, 0xA8, 0x6E, 0xF3, 0xB1, 0x35, 0xEA, 0xCB, 0x4F, 0x89,
|
||||
0x63, 0xBC, 0xC6, 0x9D, 0xA5, 0xE7, 0x21, 0x19, 0xDF, 0x42, 0x00, 0x84, 0x5B, 0x7A, 0xFE, 0x38,
|
||||
0x1B, 0xC4, 0xBE, 0xE5, 0xDD, 0x9F, 0x59, 0x61, 0xA7, 0x3A, 0x78, 0xFC, 0x23, 0x02, 0x86, 0x40,
|
||||
0x76, 0xA9, 0xD3, 0x88, 0xB0, 0xF2, 0x34, 0x0C, 0xCA, 0x57, 0x15, 0x91, 0x4E, 0x6F, 0xEB, 0x2D,
|
||||
0xAA, 0x75, 0x0F, 0x54, 0x6C, 0x2E, 0xE8, 0xD0, 0x16, 0x8B, 0xC9, 0x4D, 0x92, 0xB3, 0x37, 0xF1,
|
||||
0xF8, 0x27, 0x5D, 0x06, 0x3E, 0x7C, 0xBA, 0x82, 0x44, 0xD9, 0x9B, 0x1F, 0xC0, 0xE1, 0x65, 0xA3,
|
||||
0x95, 0x4A, 0x30, 0x6B, 0x53, 0x11, 0xD7, 0xEF, 0x29, 0xB4, 0xF6, 0x72, 0xAD, 0x8C, 0x08, 0xCE,
|
||||
0x0E, 0xD1, 0xAB, 0xF0, 0xC8, 0x8A, 0x4C, 0x74, 0xB2, 0x2F, 0x6D, 0xE9, 0x36, 0x17, 0x93, 0x55,
|
||||
0x31, 0xEE, 0x94, 0xCF, 0xF7, 0xB5, 0x73, 0x4B, 0x8D, 0x10, 0x52, 0xD6, 0x09, 0x28, 0xAC, 0x6A,
|
||||
0x24, 0xFB, 0x81, 0xDA, 0xE2, 0xA0, 0x66, 0x5E, 0x98, 0x05, 0x47, 0xC3, 0x1C, 0x3D, 0xB9, 0x7F,
|
||||
0xC7, 0x18, 0x62, 0x39, 0x01, 0x43, 0x85, 0xBD, 0x7B, 0xE6, 0xA4, 0x20, 0xFF, 0xDE, 0x5A, 0x9C,
|
||||
0xBF, 0x60, 0x1A, 0x41, 0x79, 0x3B, 0xFD, 0xC5, 0x03, 0x9E, 0xDC, 0x58, 0x87, 0xA6, 0x22, 0xE4,
|
||||
0xED, 0x32, 0x48, 0x13, 0x2B, 0x69, 0xAF, 0x97, 0x51, 0xCC, 0x8E, 0x0A, 0xD5, 0xF4, 0x70, 0xB6,
|
||||
0x49, 0x96, 0xEC, 0xB7, 0x8F, 0xCD, 0x0B, 0x33, 0xF5, 0x68, 0x2A, 0xAE, 0x71, 0x50, 0xD4, 0x12,
|
||||
0x80, 0x5F, 0x25, 0x7E, 0x46, 0x04, 0xC2, 0xFA, 0x3C, 0xA1, 0xE3, 0x67, 0xB8, 0x99, 0x1D, 0xDB,
|
||||
0x5C, 0x83, 0xF9, 0xA2, 0x9A, 0xD8, 0x1E, 0x26, 0xE0, 0x7D, 0x3F, 0xBB, 0x64, 0x45, 0xC1, 0x07,
|
||||
|
||||
/* SBOX2: */
|
||||
0xEF, 0xF6, 0x72, 0xAD, 0x6B, 0x4A, 0x95, 0x29, 0xD7, 0x8C, 0xB4, 0x30, 0x11, 0x53, 0xCE, 0x08,
|
||||
0x82, 0x9B, 0x1F, 0xC0, 0x06, 0x27, 0xF8, 0x44, 0xBA, 0xE1, 0xD9, 0x5D, 0x7C, 0x3E, 0xA3, 0x65,
|
||||
0xC5, 0xDC, 0x58, 0x87, 0x41, 0x60, 0xBF, 0x03, 0xFD, 0xA6, 0x9E, 0x1A, 0x3B, 0x79, 0xE4, 0x22,
|
||||
0xD0, 0xC9, 0x4D, 0x92, 0x54, 0x75, 0xAA, 0x16, 0xE8, 0xB3, 0x8B, 0x0F, 0x2E, 0x6C, 0xF1, 0x37,
|
||||
0x33, 0x2A, 0xAE, 0x71, 0xB7, 0x96, 0x49, 0xF5, 0x0B, 0x50, 0x68, 0xEC, 0xCD, 0x8F, 0x12, 0xD4,
|
||||
0x97, 0x8E, 0x0A, 0xD5, 0x13, 0x32, 0xED, 0x51, 0xAF, 0xF4, 0xCC, 0x48, 0x69, 0x2B, 0xB6, 0x70,
|
||||
0x4B, 0x52, 0xD6, 0x09, 0xCF, 0xEE, 0x31, 0x8D, 0x73, 0x28, 0x10, 0x94, 0xB5, 0xF7, 0x6A, 0xAC,
|
||||
0xA8, 0xB1, 0x35, 0xEA, 0x2C, 0x0D, 0xD2, 0x6E, 0x90, 0xCB, 0xF3, 0x77, 0x56, 0x14, 0x89, 0x4F,
|
||||
0x74, 0x6D, 0xE9, 0x36, 0xF0, 0xD1, 0x0E, 0xB2, 0x4C, 0x17, 0x2F, 0xAB, 0x8A, 0xC8, 0x55, 0x93,
|
||||
0xBD, 0xA4, 0x20, 0xFF, 0x39, 0x18, 0xC7, 0x7B, 0x85, 0xDE, 0xE6, 0x62, 0x43, 0x01, 0x9C, 0x5A,
|
||||
0x19, 0x00, 0x84, 0x5B, 0x9D, 0xBC, 0x63, 0xDF, 0x21, 0x7A, 0x42, 0xC6, 0xE7, 0xA5, 0x38, 0xFE,
|
||||
0x61, 0x78, 0xFC, 0x23, 0xE5, 0xC4, 0x1B, 0xA7, 0x59, 0x02, 0x3A, 0xBE, 0x9F, 0xDD, 0x40, 0x86,
|
||||
0x0C, 0x15, 0x91, 0x4E, 0x88, 0xA9, 0x76, 0xCA, 0x34, 0x6F, 0x57, 0xD3, 0xF2, 0xB0, 0x2D, 0xEB,
|
||||
0x5E, 0x47, 0xC3, 0x1C, 0xDA, 0xFB, 0x24, 0x98, 0x66, 0x3D, 0x05, 0x81, 0xA0, 0xE2, 0x7F, 0xB9,
|
||||
0x26, 0x3F, 0xBB, 0x64, 0xA2, 0x83, 0x5C, 0xE0, 0x1E, 0x45, 0x7D, 0xF9, 0xD8, 0x9A, 0x07, 0xC1,
|
||||
0xFA, 0xE3, 0x67, 0xB8, 0x7E, 0x5F, 0x80, 0x3C, 0xC2, 0x99, 0xA1, 0x25, 0x04, 0x46, 0xDB, 0x1D,
|
||||
|
||||
/* SBOX3: */
|
||||
0x95, 0x4A, 0x30, 0x6B, 0x53, 0x11, 0xD7, 0xEF, 0x29, 0xB4, 0xF6, 0x72, 0xAD, 0x8C, 0x08, 0xCE,
|
||||
0xF8, 0x27, 0x5D, 0x06, 0x3E, 0x7C, 0xBA, 0x82, 0x44, 0xD9, 0x9B, 0x1F, 0xC0, 0xE1, 0x65, 0xA3,
|
||||
0xBF, 0x60, 0x1A, 0x41, 0x79, 0x3B, 0xFD, 0xC5, 0x03, 0x9E, 0xDC, 0x58, 0x87, 0xA6, 0x22, 0xE4,
|
||||
0xAA, 0x75, 0x0F, 0x54, 0x6C, 0x2E, 0xE8, 0xD0, 0x16, 0x8B, 0xC9, 0x4D, 0x92, 0xB3, 0x37, 0xF1,
|
||||
0x49, 0x96, 0xEC, 0xB7, 0x8F, 0xCD, 0x0B, 0x33, 0xF5, 0x68, 0x2A, 0xAE, 0x71, 0x50, 0xD4, 0x12,
|
||||
0xED, 0x32, 0x48, 0x13, 0x2B, 0x69, 0xAF, 0x97, 0x51, 0xCC, 0x8E, 0x0A, 0xD5, 0xF4, 0x70, 0xB6,
|
||||
0x31, 0xEE, 0x94, 0xCF, 0xF7, 0xB5, 0x73, 0x4B, 0x8D, 0x10, 0x52, 0xD6, 0x09, 0x28, 0xAC, 0x6A,
|
||||
0xD2, 0x0D, 0x77, 0x2C, 0x14, 0x56, 0x90, 0xA8, 0x6E, 0xF3, 0xB1, 0x35, 0xEA, 0xCB, 0x4F, 0x89,
|
||||
0x0E, 0xD1, 0xAB, 0xF0, 0xC8, 0x8A, 0x4C, 0x74, 0xB2, 0x2F, 0x6D, 0xE9, 0x36, 0x17, 0x93, 0x55,
|
||||
0xC7, 0x18, 0x62, 0x39, 0x01, 0x43, 0x85, 0xBD, 0x7B, 0xE6, 0xA4, 0x20, 0xFF, 0xDE, 0x5A, 0x9C,
|
||||
0x63, 0xBC, 0xC6, 0x9D, 0xA5, 0xE7, 0x21, 0x19, 0xDF, 0x42, 0x00, 0x84, 0x5B, 0x7A, 0xFE, 0x38,
|
||||
0x1B, 0xC4, 0xBE, 0xE5, 0xDD, 0x9F, 0x59, 0x61, 0xA7, 0x3A, 0x78, 0xFC, 0x23, 0x02, 0x86, 0x40,
|
||||
0x76, 0xA9, 0xD3, 0x88, 0xB0, 0xF2, 0x34, 0x0C, 0xCA, 0x57, 0x15, 0x91, 0x4E, 0x6F, 0xEB, 0x2D,
|
||||
0x24, 0xFB, 0x81, 0xDA, 0xE2, 0xA0, 0x66, 0x5E, 0x98, 0x05, 0x47, 0xC3, 0x1C, 0x3D, 0xB9, 0x7F,
|
||||
0x5C, 0x83, 0xF9, 0xA2, 0x9A, 0xD8, 0x1E, 0x26, 0xE0, 0x7D, 0x3F, 0xBB, 0x64, 0x45, 0xC1, 0x07,
|
||||
0x80, 0x5F, 0x25, 0x7E, 0x46, 0x04, 0xC2, 0xFA, 0x3C, 0xA1, 0xE3, 0x67, 0xB8, 0x99, 0x1D, 0xDB
|
||||
};
|
||||
|
||||
uint8_t jh_round_const[] PROGMEM = {
|
||||
0x6a, 0x09, 0xe6, 0x67, 0xf3, 0xbc, 0xc9, 0x08, 0xb2, 0xfb, 0x13, 0x66, 0xea, 0x95, 0x7d, 0x3e, 0x3a, 0xde, 0xc1, 0x75, 0x12, 0x77, 0x50, 0x99, 0xda, 0x2f, 0x59, 0x0b, 0x06, 0x67, 0x32, 0x2a,
|
||||
0xbb, 0x89, 0x6b, 0xf0, 0x59, 0x55, 0xab, 0xcd, 0x52, 0x81, 0x82, 0x8d, 0x66, 0xe7, 0xd9, 0x9a, 0xc4, 0x20, 0x34, 0x94, 0xf8, 0x9b, 0xf1, 0x28, 0x17, 0xde, 0xb4, 0x32, 0x88, 0x71, 0x22, 0x31,
|
||||
0x18, 0x36, 0xe7, 0x6b, 0x12, 0xd7, 0x9c, 0x55, 0x11, 0x8a, 0x11, 0x39, 0xd2, 0x41, 0x7d, 0xf5, 0x2a, 0x20, 0x21, 0x22, 0x5f, 0xf6, 0x35, 0x00, 0x63, 0xd8, 0x8e, 0x5f, 0x1f, 0x91, 0x63, 0x1c,
|
||||
0x26, 0x30, 0x85, 0xa7, 0x00, 0x0f, 0xa9, 0xc3, 0x31, 0x7c, 0x6c, 0xa8, 0xab, 0x65, 0xf7, 0xa7, 0x71, 0x3c, 0xf4, 0x20, 0x10, 0x60, 0xce, 0x88, 0x6a, 0xf8, 0x55, 0xa9, 0x0d, 0x6a, 0x4e, 0xed,
|
||||
0x1c, 0xeb, 0xaf, 0xd5, 0x1a, 0x15, 0x6a, 0xeb, 0x62, 0xa1, 0x1f, 0xb3, 0xbe, 0x2e, 0x14, 0xf6, 0x0b, 0x7e, 0x48, 0xde, 0x85, 0x81, 0x42, 0x70, 0xfd, 0x62, 0xe9, 0x76, 0x14, 0xd7, 0xb4, 0x41,
|
||||
0xe5, 0x56, 0x4c, 0xb5, 0x74, 0xf7, 0xe0, 0x9c, 0x75, 0xe2, 0xe2, 0x44, 0x92, 0x9e, 0x95, 0x49, 0x27, 0x9a, 0xb2, 0x24, 0xa2, 0x8e, 0x44, 0x5d, 0x57, 0x18, 0x5e, 0x7d, 0x7a, 0x09, 0xfd, 0xc1,
|
||||
0x58, 0x20, 0xf0, 0xf0, 0xd7, 0x64, 0xcf, 0xf3, 0xa5, 0x55, 0x2a, 0x5e, 0x41, 0xa8, 0x2b, 0x9e, 0xff, 0x6e, 0xe0, 0xaa, 0x61, 0x57, 0x73, 0xbb, 0x07, 0xe8, 0x60, 0x34, 0x24, 0xc3, 0xcf, 0x8a,
|
||||
0xb1, 0x26, 0xfb, 0x74, 0x17, 0x33, 0xc5, 0xbf, 0xce, 0xf6, 0xf4, 0x3a, 0x62, 0xe8, 0xe5, 0x70, 0x6a, 0x26, 0x65, 0x60, 0x28, 0xaa, 0x89, 0x7e, 0xc1, 0xea, 0x46, 0x16, 0xce, 0x8f, 0xd5, 0x10,
|
||||
0xdb, 0xf0, 0xde, 0x32, 0xbc, 0xa7, 0x72, 0x54, 0xbb, 0x4f, 0x56, 0x25, 0x81, 0xa3, 0xbc, 0x99, 0x1c, 0xf9, 0x4f, 0x22, 0x56, 0x52, 0xc2, 0x7f, 0x14, 0xea, 0xe9, 0x58, 0xae, 0x6a, 0xa6, 0x16,
|
||||
0xe6, 0x11, 0x3b, 0xe6, 0x17, 0xf4, 0x5f, 0x3d, 0xe5, 0x3c, 0xff, 0x03, 0x91, 0x9a, 0x94, 0xc3, 0x2c, 0x92, 0x7b, 0x09, 0x3a, 0xc8, 0xf2, 0x3b, 0x47, 0xf7, 0x18, 0x9a, 0xad, 0xb9, 0xbc, 0x67,
|
||||
0x80, 0xd0, 0xd2, 0x60, 0x52, 0xca, 0x45, 0xd5, 0x93, 0xab, 0x5f, 0xb3, 0x10, 0x25, 0x06, 0x39, 0x00, 0x83, 0xaf, 0xb5, 0xff, 0xe1, 0x07, 0xda, 0xcf, 0xcb, 0xa7, 0xdb, 0xe6, 0x01, 0xa1, 0x2b,
|
||||
0x43, 0xaf, 0x1c, 0x76, 0x12, 0x67, 0x14, 0xdf, 0xa9, 0x50, 0xc3, 0x68, 0x78, 0x7c, 0x81, 0xae, 0x3b, 0xee, 0xcf, 0x95, 0x6c, 0x85, 0xc9, 0x62, 0x08, 0x6a, 0xe1, 0x6e, 0x40, 0xeb, 0xb0, 0xb4,
|
||||
0x9a, 0xee, 0x89, 0x94, 0xd2, 0xd7, 0x4a, 0x5c, 0xdb, 0x7b, 0x1e, 0xf2, 0x94, 0xee, 0xd5, 0xc1, 0x52, 0x07, 0x24, 0xdd, 0x8e, 0xd5, 0x8c, 0x92, 0xd3, 0xf0, 0xe1, 0x74, 0xb0, 0xc3, 0x20, 0x45,
|
||||
0x0b, 0x2a, 0xa5, 0x8c, 0xeb, 0x3b, 0xdb, 0x9e, 0x1e, 0xef, 0x66, 0xb3, 0x76, 0xe0, 0xc5, 0x65, 0xd5, 0xd8, 0xfe, 0x7b, 0xac, 0xb8, 0xda, 0x86, 0x6f, 0x85, 0x9a, 0xc5, 0x21, 0xf3, 0xd5, 0x71,
|
||||
0x7a, 0x15, 0x23, 0xef, 0x3d, 0x97, 0x0a, 0x3a, 0x9b, 0x0b, 0x4d, 0x61, 0x0e, 0x02, 0x74, 0x9d, 0x37, 0xb8, 0xd5, 0x7c, 0x18, 0x85, 0xfe, 0x42, 0x06, 0xa7, 0xf3, 0x38, 0xe8, 0x35, 0x68, 0x66,
|
||||
0x2c, 0x2d, 0xb8, 0xf7, 0x87, 0x66, 0x85, 0xf2, 0xcd, 0x9a, 0x2e, 0x0d, 0xdb, 0x64, 0xc9, 0xd5, 0xbf, 0x13, 0x90, 0x53, 0x71, 0xfc, 0x39, 0xe0, 0xfa, 0x86, 0xe1, 0x47, 0x72, 0x34, 0xa2, 0x97,
|
||||
0x9d, 0xf0, 0x85, 0xeb, 0x25, 0x44, 0xeb, 0xf6, 0x2b, 0x50, 0x68, 0x6a, 0x71, 0xe6, 0xe8, 0x28, 0xdf, 0xed, 0x9d, 0xbe, 0x0b, 0x10, 0x6c, 0x94, 0x52, 0xce, 0xdd, 0xff, 0x3d, 0x13, 0x89, 0x90,
|
||||
0xe6, 0xe5, 0xc4, 0x2c, 0xb2, 0xd4, 0x60, 0xc9, 0xd6, 0xe4, 0x79, 0x1a, 0x16, 0x81, 0xbb, 0x2e, 0x22, 0x2e, 0x54, 0x55, 0x8e, 0xb7, 0x8d, 0x52, 0x44, 0xe2, 0x17, 0xd1, 0xbf, 0xcf, 0x50, 0x58,
|
||||
0x8f, 0x1f, 0x57, 0xe4, 0x4e, 0x12, 0x62, 0x10, 0xf0, 0x07, 0x63, 0xff, 0x57, 0xda, 0x20, 0x8a, 0x50, 0x93, 0xb8, 0xff, 0x79, 0x47, 0x53, 0x4a, 0x4c, 0x26, 0x0a, 0x17, 0x64, 0x2f, 0x72, 0xb2,
|
||||
0xae, 0x4e, 0xf4, 0x79, 0x2e, 0xa1, 0x48, 0x60, 0x8c, 0xf1, 0x16, 0xcb, 0x2b, 0xff, 0x66, 0xe8, 0xfc, 0x74, 0x81, 0x12, 0x66, 0xcd, 0x64, 0x11, 0x12, 0xcd, 0x17, 0x80, 0x1e, 0xd3, 0x8b, 0x59,
|
||||
0x91, 0xa7, 0x44, 0xef, 0xbf, 0x68, 0xb1, 0x92, 0xd0, 0x54, 0x9b, 0x60, 0x8b, 0xdb, 0x31, 0x91, 0xfc, 0x12, 0xa0, 0xe8, 0x35, 0x43, 0xce, 0xc5, 0xf8, 0x82, 0x25, 0x0b, 0x24, 0x4f, 0x78, 0xe4,
|
||||
0x4b, 0x5d, 0x27, 0xd3, 0x36, 0x8f, 0x9c, 0x17, 0xd4, 0xb2, 0xa2, 0xb2, 0x16, 0xc7, 0xe7, 0x4e, 0x77, 0x14, 0xd2, 0xcc, 0x03, 0xe1, 0xe4, 0x45, 0x88, 0xcd, 0x99, 0x36, 0xde, 0x74, 0x35, 0x7c,
|
||||
0x0e, 0xa1, 0x7c, 0xaf, 0xb8, 0x28, 0x61, 0x31, 0xbd, 0xa9, 0xe3, 0x75, 0x7b, 0x36, 0x10, 0xaa, 0x3f, 0x77, 0xa6, 0xd0, 0x57, 0x50, 0x53, 0xfc, 0x92, 0x6e, 0xea, 0x7e, 0x23, 0x7d, 0xf2, 0x89,
|
||||
0x84, 0x8a, 0xf9, 0xf5, 0x7e, 0xb1, 0xa6, 0x16, 0xe2, 0xc3, 0x42, 0xc8, 0xce, 0xa5, 0x28, 0xb8, 0xa9, 0x5a, 0x5d, 0x16, 0xd9, 0xd8, 0x7b, 0xe9, 0xbb, 0x37, 0x84, 0xd0, 0xc3, 0x51, 0xc3, 0x2b,
|
||||
0xc0, 0x43, 0x5c, 0xc3, 0x65, 0x4f, 0xb8, 0x5d, 0xd9, 0x33, 0x5b, 0xa9, 0x1a, 0xc3, 0xdb, 0xde, 0x1f, 0x85, 0xd5, 0x67, 0xd7, 0xad, 0x16, 0xf9, 0xde, 0x6e, 0x00, 0x9b, 0xca, 0x3f, 0x95, 0xb5,
|
||||
0x92, 0x75, 0x47, 0xfe, 0x5e, 0x5e, 0x45, 0xe2, 0xfe, 0x99, 0xf1, 0x65, 0x1e, 0xa1, 0xcb, 0xf0, 0x97, 0xdc, 0x3a, 0x3d, 0x40, 0xdd, 0xd2, 0x1c, 0xee, 0x26, 0x05, 0x43, 0xc2, 0x88, 0xec, 0x6b,
|
||||
0xc1, 0x17, 0xa3, 0x77, 0x0d, 0x3a, 0x34, 0x46, 0x9d, 0x50, 0xdf, 0xa7, 0xdb, 0x02, 0x03, 0x00, 0xd3, 0x06, 0xa3, 0x65, 0x37, 0x4f, 0xa8, 0x28, 0xc8, 0xb7, 0x80, 0xee, 0x1b, 0x9d, 0x7a, 0x34,
|
||||
0x8f, 0xf2, 0x17, 0x8a, 0xe2, 0xdb, 0xe5, 0xe8, 0x72, 0xfa, 0xc7, 0x89, 0xa3, 0x4b, 0xc2, 0x28, 0xde, 0xbf, 0x54, 0xa8, 0x82, 0x74, 0x3c, 0xaa, 0xd1, 0x4f, 0x3a, 0x55, 0x0f, 0xdb, 0xe6, 0x8f,
|
||||
0xab, 0xd0, 0x6c, 0x52, 0xed, 0x58, 0xff, 0x09, 0x12, 0x05, 0xd0, 0xf6, 0x27, 0x57, 0x4c, 0x8c, 0xbc, 0x1f, 0xe7, 0xcf, 0x79, 0x21, 0x0f, 0x5a, 0x22, 0x86, 0xf6, 0xe2, 0x3a, 0x27, 0xef, 0xa0,
|
||||
0x63, 0x1f, 0x4a, 0xcb, 0x8d, 0x3c, 0xa4, 0x25, 0x3e, 0x30, 0x18, 0x49, 0xf1, 0x57, 0x57, 0x1d, 0x32, 0x11, 0xb6, 0xc1, 0x04, 0x53, 0x47, 0xbe, 0xfb, 0x7c, 0x77, 0xdf, 0x3c, 0x6c, 0xa7, 0xbd,
|
||||
0xae, 0x88, 0xf2, 0x34, 0x2c, 0x23, 0x34, 0x45, 0x90, 0xbe, 0x20, 0x14, 0xfa, 0xb4, 0xf1, 0x79, 0xfd, 0x4b, 0xf7, 0xc9, 0x0d, 0xb1, 0x4f, 0xa4, 0x01, 0x8f, 0xcc, 0xe6, 0x89, 0xd2, 0x12, 0x7b,
|
||||
0x93, 0xb8, 0x93, 0x85, 0x54, 0x6d, 0x71, 0x37, 0x9f, 0xe4, 0x1c, 0x39, 0xbc, 0x60, 0x2e, 0x8b, 0x7c, 0x8b, 0x2f, 0x78, 0xee, 0x91, 0x4d, 0x1f, 0x0a, 0xf0, 0xd4, 0x37, 0xa1, 0x89, 0xa8, 0xa4,
|
||||
0x1d, 0x1e, 0x03, 0x6a, 0xbe, 0xef, 0x3f, 0x44, 0x84, 0x8c, 0xd7, 0x6e, 0xf6, 0xba, 0xa8, 0x89, 0xfc, 0xec, 0x56, 0xcd, 0x79, 0x67, 0xeb, 0x90, 0x9a, 0x46, 0x4b, 0xfc, 0x23, 0xc7, 0x24, 0x35,
|
||||
0xa8, 0xe4, 0xed, 0xe4, 0xc5, 0xfe, 0x5e, 0x88, 0xd4, 0xfb, 0x19, 0x2e, 0x0a, 0x08, 0x21, 0xe9, 0x35, 0xba, 0x14, 0x5b, 0xbf, 0xc5, 0x9c, 0x25, 0x08, 0x28, 0x27, 0x55, 0xa5, 0xdf, 0x53, 0xa5,
|
||||
0x8e, 0x4e, 0x37, 0xa3, 0xb9, 0x70, 0xf0, 0x79, 0xae, 0x9d, 0x22, 0xa4, 0x99, 0xa7, 0x14, 0xc8, 0x75, 0x76, 0x02, 0x73, 0xf7, 0x4a, 0x93, 0x98, 0x99, 0x5d, 0x32, 0xc0, 0x50, 0x27, 0xd8, 0x10,
|
||||
0x61, 0xcf, 0xa4, 0x27, 0x92, 0xf9, 0x3b, 0x9f, 0xde, 0x36, 0xeb, 0x16, 0x3e, 0x97, 0x87, 0x09, 0xfa, 0xfa, 0x76, 0x16, 0xec, 0x3c, 0x7d, 0xad, 0x01, 0x35, 0x80, 0x6c, 0x3d, 0x91, 0xa2, 0x1b
|
||||
};
|
|
@ -0,0 +1,30 @@
|
|||
/* jh_tables.h */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef JH_TABLES_H_
|
||||
#define JH_TABLES_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
extern uint8_t jh_permutation_table[];
|
||||
extern uint8_t jh_lutbox[];
|
||||
extern uint8_t jh_round_const[];
|
||||
|
||||
#endif /* JH_TABLES_H_ */
|
|
@ -0,0 +1,13 @@
|
|||
# Makefile for Grøstl
|
||||
ALGO_NAME := JH_SIMPLE_SPEED_C
|
||||
|
||||
# comment out the following line for removement of Grøstl from the build process
|
||||
HASHES += $(ALGO_NAME)
|
||||
|
||||
$(ALGO_NAME)_DIR := jh/
|
||||
$(ALGO_NAME)_INCDIR := hfal/ memxor/
|
||||
$(ALGO_NAME)_OBJ := jh_simple_speed.o jh_tables.o memxor.o
|
||||
$(ALGO_NAME)_TEST_BIN := hfal_jh.o main-jh-test.o $(CLI_STD) $(HFAL_STD)
|
||||
$(ALGO_NAME)_NESSIE_TEST := test nessie
|
||||
$(ALGO_NAME)_PERFORMANCE_TEST := performance
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
/* main-jh-test.c */
|
||||
/*
|
||||
This file is part of the AVR-Crypto-Lib.
|
||||
Copyright (C) 2006-2010 Daniel Otte (daniel.otte@rub.de)
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/*
|
||||
* JH test-suit
|
||||
*
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "uart_i.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "jh_simple.h"
|
||||
#include "hfal_jh.h"
|
||||
#include "hfal-nessie.h"
|
||||
#include "hfal-test.h"
|
||||
#include "hfal-performance.h"
|
||||
#include "shavs.h"
|
||||
#include "cli.h"
|
||||
#include "nessie_hash_test.h"
|
||||
#include "performance_test.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
char* algo_name = "JH";
|
||||
|
||||
|
||||
const hfdesc_t* algolist[] PROGMEM = {
|
||||
(hfdesc_t*)&jh224_desc,
|
||||
(hfdesc_t*)&jh256_desc,
|
||||
(hfdesc_t*)&jh384_desc,
|
||||
(hfdesc_t*)&jh512_desc,
|
||||
NULL
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
* additional validation-functions *
|
||||
*****************************************************************************/
|
||||
|
||||
void performance_jh(void){
|
||||
hfal_performance_multiple(algolist);
|
||||
}
|
||||
|
||||
void testrun_nessie_jh(void){
|
||||
hfal_nessie_multiple(algolist);
|
||||
}
|
||||
|
||||
void test256Null(void){
|
||||
jh_ctx_t ctx;
|
||||
uint8_t hash[32];
|
||||
jh256_init(&ctx);
|
||||
jh_lastBlock(&ctx, NULL, 0);
|
||||
jh256_ctx2hash(hash, &ctx);
|
||||
cli_putstr_P(PSTR("\r\nresult:\r\n"));
|
||||
cli_hexdump_block(hash, 32, 4, 8);
|
||||
}
|
||||
|
||||
|
||||
void singleround_jh(void){
|
||||
uint8_t data[] = {
|
||||
0x1,0,0,0,0,0,0,0x0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
|
||||
jh_encrypt(data);
|
||||
cli_putstr_P(PSTR("\r\nresult:\r\n"));
|
||||
cli_hexdump_block(data, 128, 4, 16);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* main *
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
const char nessie_str[] PROGMEM = "nessie";
|
||||
const char test_str[] PROGMEM = "test";
|
||||
const char test256_str[] PROGMEM = "test256";
|
||||
const char performance_str[] PROGMEM = "performance";
|
||||
const char singleround_str[] PROGMEM = "singleround";
|
||||
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_jh},
|
||||
{ performance_str, NULL, performance_jh},
|
||||
{ test256_str, NULL, test256Null},
|
||||
{ singleround_str, NULL, singleround_jh},
|
||||
{ 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 = (cli_rx_fpt)uart0_getc;
|
||||
cli_tx = (cli_tx_fpt)uart0_putc;
|
||||
shavs_algolist=(hfdesc_t**)algolist;
|
||||
shavs_algo=(hfdesc_t*)&jh256_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,22 @@
|
|||
|
||||
[JH-224]
|
||||
algo=a
|
||||
file_0=testvectors/shavs/JH/ShortMsgKAT_224.txt
|
||||
file_1=testvectors/shavs/JH/LongMsgKAT_224.txt
|
||||
|
||||
[JH-256]
|
||||
algo=b
|
||||
file_0=testvectors/shavs/JH/ShortMsgKAT_256.txt
|
||||
file_1=testvectors/shavs/JH/LongMsgKAT_256.txt
|
||||
|
||||
[JH-384]
|
||||
algo=c
|
||||
file_0=testvectors/shavs/JH/ShortMsgKAT_384.txt
|
||||
file_1=testvectors/shavs/JH/LongMsgKAT_384.txt
|
||||
|
||||
[JH-512]
|
||||
algo=d
|
||||
file_0=testvectors/shavs/JH/ShortMsgKAT_512.txt
|
||||
file_1=testvectors/shavs/JH/LongMsgKAT_512.txt
|
||||
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# ExtremelyLongMsgKAT_224.txt
|
||||
# Algorithm Name: JH
|
||||
# Principal Submitter: Hongjun Wu
|
||||
|
||||
Repeat = 16777216
|
||||
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
|
||||
MD = 36C79D025F4FE1E4BF7DF1C2E6A34A097B4ED6FE5B9825AE4E2152B9
|
|
@ -0,0 +1,7 @@
|
|||
# ExtremelyLongMsgKAT_256.txt
|
||||
# Algorithm Name: JH
|
||||
# Principal Submitter: Hongjun Wu
|
||||
|
||||
Repeat = 16777216
|
||||
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
|
||||
MD = A2E77849EEB245FCAA6B9745CF61B2B28D1E43A4B38993F3F3B84A28CF23A241
|
|
@ -0,0 +1,7 @@
|
|||
# ExtremelyLongMsgKAT_384.txt
|
||||
# Algorithm Name: JH
|
||||
# Principal Submitter: Hongjun Wu
|
||||
|
||||
Repeat = 16777216
|
||||
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
|
||||
MD = 260A26F8FC156852DD460AA038F619F52F6E53E432F60078802A78C57E15833560E58EE9E1186717CBCDEC5D63E74B8D
|
|
@ -0,0 +1,7 @@
|
|||
# ExtremelyLongMsgKAT_512.txt
|
||||
# Algorithm Name: JH
|
||||
# Principal Submitter: Hongjun Wu
|
||||
|
||||
Repeat = 16777216
|
||||
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
|
||||
MD = BAE2950E650D66253F1479B67115DDB9F90BBD3E31832E65021DE92CED111335D8A0EF0F12F73A08C95F7985513A6B1E54A001E33CE04AA0DF621C359184472E
|
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,305 @@
|
|||
# MonteCarlo_224.txt
|
||||
# Algorithm Name: JH
|
||||
# Principal Submitter: Hongjun Wu
|
||||
|
||||
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
|
||||
|
||||
j = 0
|
||||
MD = D81EC49176595FF2E5839297C4D16DC9526CB59CB75B28E69A50CF33
|
||||
|
||||
j = 1
|
||||
MD = FFC47C0C875DE75DCF1FFFF43FA9C104ECCCD91C45C4EFA221D31801
|
||||
|
||||
j = 2
|
||||
MD = 8914E8B8A08E429A4C1086FEBB438E1D92B06E3BDDF013E9B7D1888B
|
||||
|
||||
j = 3
|
||||
MD = 3D4609405C3C3239F8D7FBB21BD48916F21D5D3A0E5E996760096EAA
|
||||
|
||||
j = 4
|
||||
MD = 58838CA815DFFE5265FC0B589F2D39C4221605D2F664AEBC3FC961D4
|
||||
|
||||
j = 5
|
||||
MD = 1AFC3067F46105994652E79DD710C2ED0C329771551C4302EF85B78B
|
||||
|
||||
j = 6
|
||||
MD = CA679E59127A4BFA2488C85599FF79ADF40A6BF362BAE1F83C40E1B1
|
||||
|
||||
j = 7
|
||||
MD = CB9EDBEFC6728E09CB5DBE9AB8135F5039D39D9AA1C661D073DC3CB4
|
||||
|
||||
j = 8
|
||||
MD = 6B6471A0E94653E9DBFF84244B3F289B670295321380BF7BB05C9DFE
|
||||
|
||||
j = 9
|
||||
MD = 4FCF675B3224BB0CABD05E26EC69895DC06F467E8C6AE073574C9728
|
||||
|
||||
j = 10
|
||||
MD = 4978FEBB7DF87889147210A179B449C8C8F9ED4C65ABC334930A849D
|
||||
|
||||
j = 11
|
||||
MD = A5B6916027AC3114696695C1E5D537AD32BBE0D1B327968B1624C620
|
||||
|
||||
j = 12
|
||||
MD = 8AA3C1A43D7FAB4735E1EB6E2C6EC4CD775D8F6C91D3CE9520426A6C
|
||||
|
||||
j = 13
|
||||
MD = 1AD25A104326BE38F55C379170870788EB099CBE2D4DB0AD746BEB4D
|
||||
|
||||
j = 14
|
||||
MD = 7B501531DD739E74247E51BA4420786601D7546F0C1208DFDB769B4F
|
||||
|
||||
j = 15
|
||||
MD = 75A9BE06B06B10CA728BD5BD9EDD5AEEA0A3C8428E1CF76D06BA9E6C
|
||||
|
||||
j = 16
|
||||
MD = D64353DDC1F0DC8D789583952A929327B004BC042D0E5F45F28F8E77
|
||||
|
||||
j = 17
|
||||
MD = 02DD8184C47EDB72BC5DF5A039680DDF7D25E8773A93D1DDA33FA6F9
|
||||
|
||||
j = 18
|
||||
MD = 6FE27A1A83BBA0A3E267573A15F41F9407A0D956515F84A21EE09CEB
|
||||
|
||||
j = 19
|
||||
MD = A2716F9728B06F372804940F75F50196317A218D14EC2D2D67E37914
|
||||
|
||||
j = 20
|
||||
MD = E6566CEA8CED98EE072809A7E5A536CD4781A55AE9CFB1C863AAFD17
|
||||
|
||||
j = 21
|
||||
MD = C14464ACA17B04CD7276CD87AC73AD7FE788972C673F4065E4E0B284
|
||||
|
||||
j = 22
|
||||
MD = A566E14F58CEA9C290CF82A87483C5986514080F2B8CC08C0305C1C4
|
||||
|
||||
j = 23
|
||||
MD = 2E5D86E5B2BAFC1F1F903468C442B4AE8A4278FE557C0485D96D8B9F
|
||||
|
||||
j = 24
|
||||
MD = 3FE3688F196DF0D003DC357E10AE28C10F190D149FCCF93ADB46E1E6
|
||||
|
||||
j = 25
|
||||
MD = C99F10C7B053D0495241946B03FA31E2848B8776888335DF1B8214F1
|
||||
|
||||
j = 26
|
||||
MD = B858F64FE4F44EE5B4C1860C0F34C1A048272D5B47AE2CED93726678
|
||||
|
||||
j = 27
|
||||
MD = D80E6D0B247285F398B85D370A16F4A59BB829EB99A1DC03DE45A06A
|
||||
|
||||
j = 28
|
||||
MD = 3D0FA826D5AF7A20181F306B325C640F4447339A0D4CFADFD6389987
|
||||
|
||||
j = 29
|
||||
MD = C792AC98DFAFF4B3F10F4B93E504853ED69531A7C18DF9C7C66BEDE6
|
||||
|
||||
j = 30
|
||||
MD = 40E03CF0430BB6D6FD3088F9AAE00AAF7549032F670CC4CAFF860B1E
|
||||
|
||||
j = 31
|
||||
MD = C0F69D8A3EA30FDC6ED257E3F50D2E91A8FB4DD027B5733066C29A80
|
||||
|
||||
j = 32
|
||||
MD = 566FD71738AA6F8B57B838FB4ED8BAF2D1724310427A6217EEB3CBAA
|
||||
|
||||
j = 33
|
||||
MD = 593743E8DCAC9B43D8CDCBE675FFC6F5A9E4C5453D4C1CA8CFB244C9
|
||||
|
||||
j = 34
|
||||
MD = EC6A5ACFA81B8FD3618A0ED754B3F79F38FE36190C4720A5525026E6
|
||||
|
||||
j = 35
|
||||
MD = 1149B620389D0533D71A4A5BB542BBF2F1908F4D384B900A4DEB8EDC
|
||||
|
||||
j = 36
|
||||
MD = 2353615C1C558DF9739F2A85B97926D2B121680D84AAF7873F98E5F9
|
||||
|
||||
j = 37
|
||||
MD = A19EF85B3B3D2667D17471ECBAF795077FED3089BE9C80EF921AD3BB
|
||||
|
||||
j = 38
|
||||
MD = 528A7EAF29614B54D465519012CAF55D9F0E6D9739FF41B4A241F8FB
|
||||
|
||||
j = 39
|
||||
MD = 4F5951365B691C81BDD910EA3D37D982994CD45CFBEFF23470D1BEF4
|
||||
|
||||
j = 40
|
||||
MD = 8F69BE3CB540FFEF26BBDAAD85AE5FCFA1381698AEE7FB5C2F97455A
|
||||
|
||||
j = 41
|
||||
MD = 2A14D5EDB077EFCB94154C7AF6981E058EE30EB7160EC866B172C8F6
|
||||
|
||||
j = 42
|
||||
MD = 80DD51C09F0504F668CEE2174ED2DD1C5BC427457F1065CAD93F13C6
|
||||
|
||||
j = 43
|
||||
MD = 8A27AEF3B49F751B81C3C78750073488F1255D709553D9F97DCF70C3
|
||||
|
||||
j = 44
|
||||
MD = 9FA61B79B071EB6585378537DC4B2F8922785BC71EF76C3C84701E48
|
||||
|
||||
j = 45
|
||||
MD = 7A129890525BE5B709254F0275F567BECBBB168F7C7D99218B5E61CE
|
||||
|
||||
j = 46
|
||||
MD = A386EF73CB2B34BB38B9D8C98DB5218D8F7C9AD6DAEA8A344A10AD19
|
||||
|
||||
j = 47
|
||||
MD = 111CBF2C96F793454C40487EEB30238CCD2F1D7E2489AA19A431ECDB
|
||||
|
||||
j = 48
|
||||
MD = FD88049D92F251AD91EAB7CBDA7FE50D357FC604E54F65A91B4FC1B8
|
||||
|
||||
j = 49
|
||||
MD = A60B7F24D860066086404E6059B1893AAF2D43662EDF553AF5C8CE90
|
||||
|
||||
j = 50
|
||||
MD = D8DDDD4DAF4B94A10FBE9B786C4A3EDD008086281D2BB26B269147EE
|
||||
|
||||
j = 51
|
||||
MD = 04E4529062B00F0703C35CA8231C017EE996A514FF8400DED0FF8C65
|
||||
|
||||
j = 52
|
||||
MD = E0648178EF4B2EA0A775FE88EC3EF0C9279F11D506BCDEAFBFF94105
|
||||
|
||||
j = 53
|
||||
MD = 06A2053500B8191E05B00728F612D2999833577082B8DBB54CAD9408
|
||||
|
||||
j = 54
|
||||
MD = 25E23B17297DC9427C3B395018969DAF9B30709544DF5A53E803850B
|
||||
|
||||
j = 55
|
||||
MD = B559B0FC9E67F33F08EA2CF7568BE98551076557B95F341E1B73EF70
|
||||
|
||||
j = 56
|
||||
MD = C0955CA86215E04250CB39F33C19640F49EDFAF628F2D9145E52E7F7
|
||||
|
||||
j = 57
|
||||
MD = C66D5A74880B1E72951E7AA97F7806AD6152DC9EE654C03E5D79E114
|
||||
|
||||
j = 58
|
||||
MD = D02B5C6ED96A913A04BA99F9FEA87012AD596B161E0BDA59B48786C3
|
||||
|
||||
j = 59
|
||||
MD = C521EB65948026DCD0446A2B2119B55B5EAD2DDF9CC5BFB084D93DB7
|
||||
|
||||
j = 60
|
||||
MD = F4E2E37E23D5ADA11FF40A329EB82C8A3BDE6C9B197EFEA1CB70EDA7
|
||||
|
||||
j = 61
|
||||
MD = 686D3C12BC436B876B683EBF77E1EEFFEE2623EE0AADA0CFF5FC9E99
|
||||
|
||||
j = 62
|
||||
MD = FB4AE97A6F87A197C3A99AB0FDBA6C84B6FCE3A27B8D51960DC297F4
|
||||
|
||||
j = 63
|
||||
MD = 91035C28DB38D617A1EB2F8F21B2114669BC131FB08E2707189D612A
|
||||
|
||||
j = 64
|
||||
MD = F072C7261755506A2F27D7735354F1C707440F018383DF79B9A4F948
|
||||
|
||||
j = 65
|
||||
MD = E191EEF3C74B96496214FC9976C51A1BE786FA02C27B968805D31853
|
||||
|
||||
j = 66
|
||||
MD = 765B4A42F8E1E09A75A9754BC69151854A6F54B42838F054537D4C54
|
||||
|
||||
j = 67
|
||||
MD = D1BDA81614CEA1E64B673A5EAD5EF286548017B7B7513E06CFF8A1CF
|
||||
|
||||
j = 68
|
||||
MD = 26AAC25DB5656E39ADBA3FEA727E822A3812DE8FA7300FF156E4579B
|
||||
|
||||
j = 69
|
||||
MD = 7992E36BE9011D5E50FD935E964247E50088A6C917CB21975C38FF78
|
||||
|
||||
j = 70
|
||||
MD = 3E4682D22D3A539233BA1A46317C393D26106AF8BE08BAEBA4E23EA7
|
||||
|
||||
j = 71
|
||||
MD = B9D5B1DEB2D53A83CFD45F07F8B7F576611E517FD8A87F40D7D0385A
|
||||
|
||||
j = 72
|
||||
MD = 602FD9605671066F89439887CDD78562C280E5C6A7B9D91FB02B84A6
|
||||
|
||||
j = 73
|
||||
MD = CE9FE2DFFC1EDFAD42632AE6C4A53ADA34744965F6DFDAF6DD5B303A
|
||||
|
||||
j = 74
|
||||
MD = 360F5774582D3F4D5AB4253AFA11BB0238FCC14EAF967EAEA2856BD9
|
||||
|
||||
j = 75
|
||||
MD = 244CD2E8722C36350E5020C4144DEE43B4644246FFA9B542585B8C47
|
||||
|
||||
j = 76
|
||||
MD = AD1E3AB714BC4E92EA6923C2E4D1576DE5A545CA80747CC0511E5C25
|
||||
|
||||
j = 77
|
||||
MD = A6ECD0510031E6DCC5C94587B85A17B390D490D1CE7BD778F1B39FCF
|
||||
|
||||
j = 78
|
||||
MD = D22BE779403724B6C84E3E13BD2DFC280D97F32070BA83E6ABC1B65F
|
||||
|
||||
j = 79
|
||||
MD = 45EA2EA0180E347A4D0883ECB33BD3242552A929A0B2643B12ACB434
|
||||
|
||||
j = 80
|
||||
MD = ED4C8B24F0CDA444A63C2093E5C1B027ADF2AF003203F1AC21C0493A
|
||||
|
||||
j = 81
|
||||
MD = C7D93707ABFB08B390B1DECE1CD2AA31A6978C41981048F1FCD49746
|
||||
|
||||
j = 82
|
||||
MD = 3F4D8A015E77E8D482C70B81F22D5936C2E3B92E4CC98DA2FDDF9ED6
|
||||
|
||||
j = 83
|
||||
MD = 7E9238E048415EFB01D2C012DA163684539C3B93B2C7201C847C2C4A
|
||||
|
||||
j = 84
|
||||
MD = E44A42B648D05FFEA2FD899D38520188EF0A6B8D90F9E85FF9355A70
|
||||
|
||||
j = 85
|
||||
MD = F2AF7A84B7C4D3BDF5287B738C82533A950E98FA777E4CAB9395DA39
|
||||
|
||||
j = 86
|
||||
MD = 563D1630667F0C9784428D410816D6274AA0B3ECF102C4639AE4A58A
|
||||
|
||||
j = 87
|
||||
MD = 40CE731502383FFC9BCB628CBAFB8EFD3F404657ACCA686288B05E81
|
||||
|
||||
j = 88
|
||||
MD = BAEC7C6D458C314EE8E244A958CACE8FB7F449A73951F7BE14439E1A
|
||||
|
||||
j = 89
|
||||
MD = 41EE7B1C0D66608E1228C7BC71B608137D18FEA4A6023D506895532B
|
||||
|
||||
j = 90
|
||||
MD = DF4F1D3165CC09ED938DFF75EC83C82878707F62D8539308A21F4F4E
|
||||
|
||||
j = 91
|
||||
MD = F339B845CD5E19375CD5D9BEA105F28BD63CD5D7C86EC3C0BCBAA31C
|
||||
|
||||
j = 92
|
||||
MD = 0835ECC4395CAA33C48F95A0AB05A699A707C537F92BC0629A95B62F
|
||||
|
||||
j = 93
|
||||
MD = 52D489EA136645D2DE257A7FFC51173E7160A3E05E287461C4A34903
|
||||
|
||||
j = 94
|
||||
MD = B0CE2011B1829155D92B6140DE0EED142EFD50B247684CE9CBC319A6
|
||||
|
||||
j = 95
|
||||
MD = 6BF6A9880FE1AFEADF861FC71AF75796117169A7CFDF47B096F8C8CC
|
||||
|
||||
j = 96
|
||||
MD = 3B7F74C3B5B0D18A960C776CE7A87D0DDE6366F242AE5BF3DDA20AB5
|
||||
|
||||
j = 97
|
||||
MD = F150753B6F2179BA321950B39FF59F0A64A7DDB970719F103DEE58A9
|
||||
|
||||
j = 98
|
||||
MD = 294808349749EC1BB09E38B865324AF1D016982ABBFF634D8C7564F0
|
||||
|
||||
j = 99
|
||||
MD = 62B06105CDE4C55623EE46C194CB552148D40577121695CB0BFD3ABB
|
|
@ -0,0 +1,305 @@
|
|||
# MonteCarlo_256.txt
|
||||
# Algorithm Name: JH
|
||||
# Principal Submitter: Hongjun Wu
|
||||
|
||||
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
|
||||
|
||||
j = 0
|
||||
MD = B6F65955C4346EA503AF9CBB43061067DF41528A7D3ED66D280BF4BD812D494F
|
||||
|
||||
j = 1
|
||||
MD = B00A5B535C2939A3642DA04A458E72AD8F478202F75016259678951CBE6348A4
|
||||
|
||||
j = 2
|
||||
MD = 21147BDA81CFAC62F16922B62CA32EFB3458583D25A32C6D266E258A595B544C
|
||||
|
||||
j = 3
|
||||
MD = B3E5956562D360F154919360DBE47236B2BF60BC277113A3D815D9728FAFD210
|
||||
|
||||
j = 4
|
||||
MD = 70306DB5FACFF24B4D38C7D8FB23FDB99909D7EF9B5D57AC55EEF89D0E363901
|
||||
|
||||
j = 5
|
||||
MD = EBE93CA265DFAC7FA9CC3222CE2FA6C62BDF8DA9E86AA60F8C778846D7D1AEF6
|
||||
|
||||
j = 6
|
||||
MD = 9D9EE293DE7210605F471FE8BC7FE093A13C9F088CC6E7EC63D62FCF82876D9F
|
||||
|
||||
j = 7
|
||||
MD = 2763CEEFB71F4EBD5F2221E0C1DE4D23199B1902380CC9E0AE221EB800950AE4
|
||||
|
||||
j = 8
|
||||
MD = 86A2AF9EDEA895D2ADFC75A9C94B55E7A4610E858D6D3BB2ADAC58F467B3547D
|
||||
|
||||
j = 9
|
||||
MD = 0BC94E4D6B4F1BCE25CA9EF7291AAFA4F7B4C9BD03E6BAA7C13FB16AA3BAE5FC
|
||||
|
||||
j = 10
|
||||
MD = 85E7CAD503BB728CADA0061C2ED747B56B4B74AF2161FCD343CBA0D9C4898CF7
|
||||
|
||||
j = 11
|
||||
MD = 3AC1B2E4400F1BD1A1244473B6E3356F75A1FA268C07A6A54619B17E4BED0A02
|
||||
|
||||
j = 12
|
||||
MD = 08E04B1100CDA8EE8D4DA1AB993C5BED6369AAEAF16DE879AB87435DB7D77543
|
||||
|
||||
j = 13
|
||||
MD = A62F2959C299F2674A045C9DC1430A26C0CB2C88AF0E2F970DC8B5432202B585
|
||||
|
||||
j = 14
|
||||
MD = 25FEC23E540B87ABCD64690526EE3F637E1DBD837A1662D3660B2E9C14EE0394
|
||||
|
||||
j = 15
|
||||
MD = CB37A44C3FB6122EC58E3DD94D0E19955F2A60B6A0FCC13D1335DAA61840193B
|
||||
|
||||
j = 16
|
||||
MD = C305F7BDB3C12DA2D53E82156E36426EBEFFDDA7B3AAA2129FA2478E87AF22F4
|
||||
|
||||
j = 17
|
||||
MD = EE525C5CFBB21F024C2EEF067E5E2D4558E8D15BA56F7DF62A111479AAC31F0C
|
||||
|
||||
j = 18
|
||||
MD = F3D60F236E5444115AFC2F3CD0911C2B99297C01320A021C3FCE16B8D0DB10B5
|
||||
|
||||
j = 19
|
||||
MD = BE3CE5842153E6FA2E50AB950800F3C2ABF0B68A22905637C981265910106F19
|
||||
|
||||
j = 20
|
||||
MD = 34BB1CDD0A58A9A87DB961C15277F6A9E639AD55E78F8BA00C7075436A21C1DD
|
||||
|
||||
j = 21
|
||||
MD = 5084BC020911FB77DEA091406D0459939916654EF5CB5DB6E68BEA7A5BABC99C
|
||||
|
||||
j = 22
|
||||
MD = 0FC6CD3EDBE1C7668E3257EBBBA2750E676047754EB6D1E5DE2AF2A7EBDD453F
|
||||
|
||||
j = 23
|
||||
MD = 1B8FB0D6894576D40E7D1AED905D374A687A5FF3796F31E1FA0888345991F7CC
|
||||
|
||||
j = 24
|
||||
MD = 625CEAE610D6AD19A1DD1EF4C98223C69D463C2C4E6726785C7051089AA6BBE0
|
||||
|
||||
j = 25
|
||||
MD = BC62ECCC4B424E1933FBF1AD16AAE72390170D32705EF721D0029B9BA7A23280
|
||||
|
||||
j = 26
|
||||
MD = EED7BFEB7D6BB115A6860AF010463A3E57D66AF096A081EA149F3E134187C8AC
|
||||
|
||||
j = 27
|
||||
MD = 0C30DB53FA0F750DA80B83BBB33BDEF44BE65F1EAA447CF8336841705FFC8A54
|
||||
|
||||
j = 28
|
||||
MD = 7A5CFF04C62F7CD1CBB487A182624CDDBB0533F127FB07924A527D3D467C767A
|
||||
|
||||
j = 29
|
||||
MD = 99C021560F0F77446737673BC972684EE57A58FA8D1922A22272BC4861B31435
|
||||
|
||||
j = 30
|
||||
MD = A021984350CB22D455B48B6C0DC90C5C67EB7CB1758B538D6D931D769C679E08
|
||||
|
||||
j = 31
|
||||
MD = 3295AFE9A5B9C2B057E82E42289693AFF1CC3FE117EDB0F91398C7DB6D65A49F
|
||||
|
||||
j = 32
|
||||
MD = 96446697C89D5B323671FDFE46B44D1BDADF6E06F089CFB7C6C6FFF7237C96F2
|
||||
|
||||
j = 33
|
||||
MD = 7E616C9A6C99BB5B3A4212B9FCD1D8884849839F72D38CACF324C3E45C787BEE
|
||||
|
||||
j = 34
|
||||
MD = 29D9632DB2A4B40F7A17121707CCDBD4925C796023CA42FEF8E537ACF5C3DBB4
|
||||
|
||||
j = 35
|
||||
MD = F28C425C6658FABBEA261844660FE1293F134CA16A7ACA974A594A5E888AEB4B
|
||||
|
||||
j = 36
|
||||
MD = 93A71EA48E1429BB9B09A7B78CF5ED46AD1F4F3DEAF462B0E18179136D994456
|
||||
|
||||
j = 37
|
||||
MD = 8E84AC822AB45D5921B4A82AD6C8EE8D741B03F84942B30C87B84E25AFF7E043
|
||||
|
||||
j = 38
|
||||
MD = DDDFB29BD1CD0C323245DC1F338DA3D02B391A323ED7A7D25808306CC64D3625
|
||||
|
||||
j = 39
|
||||
MD = CF88DB67ACA55CE6F3666698EBE6EF376317BDBD8D9220141D1CEF282F3A3B32
|
||||
|
||||
j = 40
|
||||
MD = 68E665CCFAC62FAB913935071F1C11C367A7E672B38D1CFC5C9F1D192B955934
|
||||
|
||||
j = 41
|
||||
MD = 8B4C5AD979EA5BA59B91F9D744CA8B2E0C6AC5F42EA8CAD56E3DAB635D2B2ABC
|
||||
|
||||
j = 42
|
||||
MD = F27F243DC5AA0C0C22EFFE463CC1CB22A9CA04BB7DF2ACCACD31C23780609917
|
||||
|
||||
j = 43
|
||||
MD = 3388AD64192C4145EB73E3C79A480527AC2E69CBEEF30A008495C4F2310EF20F
|
||||
|
||||
j = 44
|
||||
MD = CF2FCDF59867223648F8F5FB7FC5382869F4D37A560CF5E2DFB05EBBE58EE921
|
||||
|
||||
j = 45
|
||||
MD = 74044844BDA3729D76D05658843F0D66C4E591FC7E9AC2A4E35E1C170BF75592
|
||||
|
||||
j = 46
|
||||
MD = 75233A8A887C2C45417FB3E398E8F0FC4DF36C8872C400770D8CC2698C45E055
|
||||
|
||||
j = 47
|
||||
MD = DFEE2CD4EA5628CBFEA64B2D6CB158AB4975B64C78C5E5ACBF2126445535510C
|
||||
|
||||
j = 48
|
||||
MD = C6C579DCE82E6CB6BF371F454E4BBC3330814759392C31F7B053284D41688C66
|
||||
|
||||
j = 49
|
||||
MD = 90C2B4DA00EE7549F6812AF5D48DB8DDF0F881D5D98ABEDEF1E5367FFE6E7A53
|
||||
|
||||
j = 50
|
||||
MD = ACD3F42718AD7E8EC64E44408E1955BCB8045B2C7930526CBA39A2F49E2C6CEF
|
||||
|
||||
j = 51
|
||||
MD = 46332A90EFB12E398D3CF44045FD5F45F9D6895CF7B274F42E52D112E7E5D131
|
||||
|
||||
j = 52
|
||||
MD = 7ACBF0FB3298CC48EA7583CFCCEF3B8B7D1D47DF8E4747E61118994235824796
|
||||
|
||||
j = 53
|
||||
MD = 071096B6AA0FCC54E3EFC0A8BD4AD6AABB4515105A751222C9446ACF9436A225
|
||||
|
||||
j = 54
|
||||
MD = 05A427E79A5F3487D6622E5C3500871E74E481002C02B5E8AED5B8858B34D912
|
||||
|
||||
j = 55
|
||||
MD = 9A8894A5C3B519F8A8EE226FBF0B06A3644C6E83E3DD1A56765D8549112DECAB
|
||||
|
||||
j = 56
|
||||
MD = 3C1FA7AD648E4E2D2029DD8ED6D8B2E30A0B9D61512068106AE556E9C33A5DD8
|
||||
|
||||
j = 57
|
||||
MD = E7157217A6FF1ED30FDAA86B97A96578CA25C6E18515756333163B2E78E3B3C1
|
||||
|
||||
j = 58
|
||||
MD = 882AF23098314E2E002DE8D2AD6BF1D485D5C73FDF7C1A0E317E76692574A300
|
||||
|
||||
j = 59
|
||||
MD = 693E3582089EE7CAE06CB4661465DA76EB65CAB553A16FC57CC7D541BD451ABD
|
||||
|
||||
j = 60
|
||||
MD = EB3964F8F3006D2662BACF435D94671BF53DBD2AF85870CCA6C784F666908E21
|
||||
|
||||
j = 61
|
||||
MD = 8718743D368CC27CFF924504B06EADDC130052F34671CB9DFF1B07541DD2DD7B
|
||||
|
||||
j = 62
|
||||
MD = 57CB2B35717CA44DA5E22190B800C1A9A385FDFE292AEB4BA5E2A47B9428E009
|
||||
|
||||
j = 63
|
||||
MD = 2A48922234C610F1B6001384556BA732D8A0211B803D8D911B8ECFA64BA75A5A
|
||||
|
||||
j = 64
|
||||
MD = 384109E9B266CF4B7643D3292D72BD739A5DDC7DB2CCF845E827D6C1E82190B0
|
||||
|
||||
j = 65
|
||||
MD = 85A8525F95E41BF96B5D6F7740924BA6BAEAF3F906551736E489D2F7812F34EE
|
||||
|
||||
j = 66
|
||||
MD = 89CE88C8EE3ED4CFB098E7943ABD2EF5CA7F76901C1D6C7CE738472DA2BA60AB
|
||||
|
||||
j = 67
|
||||
MD = D0DD5581925A3F99ECE99E7C31A1569422D98D17D8399AE867A85CC0E1A3C145
|
||||
|
||||
j = 68
|
||||
MD = 925840CACFD8371FA77ACB11D9322398FF461C98DC8B1505C1DD77AA5C522C93
|
||||
|
||||
j = 69
|
||||
MD = DEDD88C9593223D1A330185D673A77F1E1DF88FFB12676DE5D2ABBEDA7428230
|
||||
|
||||
j = 70
|
||||
MD = 5E904AAAC5FD5EC1B654A831E10641DDD23E874B1783BFAFD43BEC6D0C163F32
|
||||
|
||||
j = 71
|
||||
MD = CB5ACB4D179A7A0884F1ABC83F7B704AC0707570CA4BF382C16B167A156ED221
|
||||
|
||||
j = 72
|
||||
MD = 5C4FFBBE7D8C6AD6A55449069978683F390938F0DD7FE39937B2C447E552C20F
|
||||
|
||||
j = 73
|
||||
MD = F51A61DAE5651C7DAA6812CF5C2D46DC5D698066123AAED05A003B68B82B2958
|
||||
|
||||
j = 74
|
||||
MD = BB59F374684FFE84E2FDEEFDFA4082DD0087EE75AA451189827129B373BC9B40
|
||||
|
||||
j = 75
|
||||
MD = C4E670F25210752AC61AAC2985EDE26E98A03749FD3585E2382B2E99AF9F9CB1
|
||||
|
||||
j = 76
|
||||
MD = 1C25EA4BD1743D8D87A488434D8A84343CAC2D465D4056332527978E8C64D8F3
|
||||
|
||||
j = 77
|
||||
MD = 65DC0A9B7AC570182E756014B1BB7AAF0F9095EB5B877DD37100C79847B33EAB
|
||||
|
||||
j = 78
|
||||
MD = BE31DB5D9D142E350320D67716794682DF3F0E2DCDF1B895B0FFB92C171C6480
|
||||
|
||||
j = 79
|
||||
MD = 5C3822577E685D31216710C95F70DB930BD2168B2CF35A46647F3B5F8128BE08
|
||||
|
||||
j = 80
|
||||
MD = 901A1F21BEA5073112EBB008C2065065397B65862AC8C2EEC4CEA5BE7A6C803D
|
||||
|
||||
j = 81
|
||||
MD = 13A41BC1DFD4CF1F4A9724E1EE4A7602F0368C0D3C9D86F4F7519AF19C4F4645
|
||||
|
||||
j = 82
|
||||
MD = CBE38D87F97AB8306D76BD5FD8296D81F56EB6596733B607CF53BA90F94E24CB
|
||||
|
||||
j = 83
|
||||
MD = D12DB597EAA98F016D652DB6E7852E7412FB021D61A108DBEF818F78C1A93E0E
|
||||
|
||||
j = 84
|
||||
MD = D723C86B334E19BDC8E044EC12A3DDE0FCB6D361253B689C64A9EFFBADF4CD96
|
||||
|
||||
j = 85
|
||||
MD = 09CA13CDFE9C8A4730AF50113EB835FB48EDDB1B51DE7DDB48617CA718C4EE6A
|
||||
|
||||
j = 86
|
||||
MD = C8CAA764A82DC6FFA133BC1FC819415268D7904BF3354CB011AFDA7168E702C3
|
||||
|
||||
j = 87
|
||||
MD = 38D9B07F34C7A4519CE9AA2B40C3A57EA948B77E9494B32EB177E646B1DC6F31
|
||||
|
||||
j = 88
|
||||
MD = B6E4919E2CBA7A86E8DC76BCCFBF928D84F36EBD4394932010232885D4C7102F
|
||||
|
||||
j = 89
|
||||
MD = CA9E2E9B6BCBB931A21F5D9D2D8B2487EA7C24241AD1088D4CF40FF0A2E5C4BC
|
||||
|
||||
j = 90
|
||||
MD = A22892140A38B8D2CE705FE6EC9C0C99E86651CD33B4C10D163D5957656CD91C
|
||||
|
||||
j = 91
|
||||
MD = C53607D7BCFD21CD249FE1E32ECC4FC6086FCB7A41EBFF2872E4887CD392A9B3
|
||||
|
||||
j = 92
|
||||
MD = 86596736BD57C042A9A1CF244FC4D0FAB9ACF23A469052CC1B1C8A6C865152E3
|
||||
|
||||
j = 93
|
||||
MD = B7F2AE47500617AD0111DFE9947139FDBC44F962103D4003123FCD8D7B9F992E
|
||||
|
||||
j = 94
|
||||
MD = 7EA999EA32D083B2DB3EAF27CB55C901D655C229344374B8FB70CE73B4ECC7D4
|
||||
|
||||
j = 95
|
||||
MD = 98A9BA7BEFC730E82FFAF5517630CA24144C64FBE90BF839E665068E23A8D51A
|
||||
|
||||
j = 96
|
||||
MD = 3B4B1E5DC872F10360C4252A2969BA6FCD0C9D7A9CAC8BFF0A1BD6114A4ABE41
|
||||
|
||||
j = 97
|
||||
MD = 238B1C11C7003C50AFC1FB4EDEE67F66C936893ED4F32BEBC145021B501EFCDD
|
||||
|
||||
j = 98
|
||||
MD = B76C16AF952600F23FD91FD5DE4C3E58527DC25F9A0FBF36A02394470E38E925
|
||||
|
||||
j = 99
|
||||
MD = 48236D9DC20A83E922ACE89F8332F6AF5E4AD3C2C092EBE0013A69CF9570FF2F
|
|
@ -0,0 +1,305 @@
|
|||
# MonteCarlo_384.txt
|
||||
# Algorithm Name: JH
|
||||
# Principal Submitter: Hongjun Wu
|
||||
|
||||
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
|
||||
|
||||
j = 0
|
||||
MD = D8B448C3889A2C63CAFC790C54612ECECF31571BDBAC1CF2A0B1F91A0AA8ACCCEE3456733D5C0CD042DAEB61B9BA370D
|
||||
|
||||
j = 1
|
||||
MD = F967C8A0ADE023D9BD10BF5503C20DFB04A38EADDE8363FD8224F83B0DB77C28B518D79C6BD321D87560D5EC5A719EC8
|
||||
|
||||
j = 2
|
||||
MD = D4B348D4EEA17C44784D7A3CFF579EDF216739A3A080B3A891FBA8BF59A3302CA52BA3A231BA01C0A5AA62E068C181B8
|
||||
|
||||
j = 3
|
||||
MD = E815C7376E7C32C36628B528621E6191FB1573F3708CFF1AEBAB9C656337644D970CD86FED5539521DF38C409CD2C517
|
||||
|
||||
j = 4
|
||||
MD = C2AC00C4D7275F1AE3B129E2CF0FA60ADC8A903BE7DA3F7C4C7C60425A54609FB891A50D384E15150AAD7FEA1D0115DE
|
||||
|
||||
j = 5
|
||||
MD = 30D30F0058F166931417C82D1F64BDFC947528195F7E02DACE2CDBD2E7F880A6EEAE16FB107E5BF7BFE36F6B1867A82E
|
||||
|
||||
j = 6
|
||||
MD = BFC691568A92B0AA7E5DBFB16737E4C0BEBEC0595D0D64B32CC17DCD5E3F0B1111B613BAE30658C03F582B70280C6A7B
|
||||
|
||||
j = 7
|
||||
MD = FA3928A5EC35910BA50DFA374D753D02BBF05941351AE06992BABC370380C7D86A5717B07758DAAED1169A02441D27BF
|
||||
|
||||
j = 8
|
||||
MD = 44A0B09E061D57ACA95A058B52C0EF26FB2F4B5AD237EDBBCE9BF23AA5140A223281E12FE98899F0B9E03570FE7FECBE
|
||||
|
||||
j = 9
|
||||
MD = 72EBCB89593D33A9B9EAEBD0505A31F2ACC807B336B4E4F2954D38C7175B27FC1A1C0B98EC0CA01D4D7785B090E6A955
|
||||
|
||||
j = 10
|
||||
MD = 49D50D3F42646B5630B54DFC9D45DEAC9E111F8DEBB7FD3C2606A765D5988E164AD54FB2FDB9F6F3DC285CA1B473E849
|
||||
|
||||
j = 11
|
||||
MD = D6594802FE5DF3E1B3AC8429AE6069A3D5E830F9A0C2E749D24E3893690749267B8DB2AE1E1DE66218FA0649E7CB6E57
|
||||
|
||||
j = 12
|
||||
MD = E69B72260530C1C2B0FCF050AF4039A1A805E10A1E92E5A9ECCFE55B776951827FA8EAEFB17F76401848C2F101A05A4C
|
||||
|
||||
j = 13
|
||||
MD = 79987764DFCD578DFDFA24E01E99EBD2DBEBCB4CC2045D8CB34D94562A4E787BC2CA4EDA1856FFEA161DF5C251275F51
|
||||
|
||||
j = 14
|
||||
MD = D96264AFC51A44B5ACAD0F164BC705C7AA7BEFFC7DE6F94276D63C33B800058A9413743E512276614372257937A070D3
|
||||
|
||||
j = 15
|
||||
MD = AF60D6D865464AF3A176F1891486EBFE6F70FD410063C91FF47B4CC7B4780F919B8D2DD2E1D7FDCEC40DBBEA49ED03C9
|
||||
|
||||
j = 16
|
||||
MD = C9585111503FE7059A0DA3C330780CD56569A0896426A04F2FC8E829960272920ED75EAA49129DF85C728AC25F4158AA
|
||||
|
||||
j = 17
|
||||
MD = 22592DA70CA2B7DF32C0434096BE200100F23B9778ADB787078E1BDFF6232C04D4CE1578201BA62149A79383666CDEC1
|
||||
|
||||
j = 18
|
||||
MD = AE2C13FB8DD870A6C6E404BA62B0645C6F5964FF67E8E6E4CCF714BD9CF3E05FBAF63C4D0A798FC6671E11B8ECB7E06C
|
||||
|
||||
j = 19
|
||||
MD = 34D23610B4803BBE4FEC0A4759CB9147EF12E707BE7399E41DD9CB64C9BBCCE50E4762BDEDA75656B1B7A7663BAACE11
|
||||
|
||||
j = 20
|
||||
MD = 7057E35D0A9C6B18CBF3130A99FA117113F4427FF19848368073D301D836CC98F3D07448BEC8FC9B63C352E117431EC5
|
||||
|
||||
j = 21
|
||||
MD = 8DA31812FF94748037A24E25DE2C6784F3858CE7AAFD004BBB6EF8DFF9C2D111753D2B78846077B31CC46A79F62CC243
|
||||
|
||||
j = 22
|
||||
MD = E8FF11BACE84CF20206EA3B2E76EFD62056FE35CE8D7A532925CBEED38D4DA0204CF31F315938601D10E900AD462A68F
|
||||
|
||||
j = 23
|
||||
MD = BBDD30347F7A287E3E3CB9E9DC40819198FFCC0C216DFEB4BDD0A490FA790D045F7FF054641A93BAB825C880549A335F
|
||||
|
||||
j = 24
|
||||
MD = D16C1F8F76CA206CAB22CA25F3D4CE18DADC9DF66A70F6DFC3845950D90004B758C66F3792A1205AE39A87F3F9185754
|
||||
|
||||
j = 25
|
||||
MD = C9E6186B8922D3C1F88CD4C0BE7062FB15AE38A210408DF6015251FBB6DED1162689B33D6789DB6B486EE016711B2240
|
||||
|
||||
j = 26
|
||||
MD = 3EA95BF8DD04665A79A50A0BFA0205DCBD0B85D81D5CF36A05FA8F38DE6C1EF59B3DAEFC8FBAEFB32C39F49F37438F57
|
||||
|
||||
j = 27
|
||||
MD = ED6D1ED7B052FFC15A37A569D4577607A2C565EADF8B32BB232907597DF672D5D567DB3B124FE195A91A20F86861BF8D
|
||||
|
||||
j = 28
|
||||
MD = BED666E06B8D0AC7B7DC15718EAA0C7D026CD803FCFE146040267B11CA5070DDD93D0A2DA7D9AD37C7C4090DC161626B
|
||||
|
||||
j = 29
|
||||
MD = F4E5F87C2839F38D9AF4CB9B80D75F87B4D982510A41FC68091C8E03404C658B40E5EAEED778F539F4EC3CF4DBC6C053
|
||||
|
||||
j = 30
|
||||
MD = C3C8625688E9527ABAC2B644D360848028F4191393BAE69F1C6DC60B6DA469B63E0AEBEA0A262E7BC6C48A67DDE6F4B9
|
||||
|
||||
j = 31
|
||||
MD = 130ED53E18DECFA7C91D6D27707BEFD0E91163AAD8E7459A0395705687CB0BF3614C9E63EFFFD6FE47A7D3D0B74B522C
|
||||
|
||||
j = 32
|
||||
MD = 964E86D3A5B9938A030E1D91A706B72BF18E7170598F14F4D2892E6474029DB15F5033D042DEF4C35337C78D87BC51A8
|
||||
|
||||
j = 33
|
||||
MD = 1018374E340561CD652563C8814AD76FE7048E3A068982281D06A255B216A3C74A1103DEE1E0CB9F1F89DD43F492C29D
|
||||
|
||||
j = 34
|
||||
MD = DD7C617BD8734E0C0B56E7FC8CD58799800A7751C655096D107F6A58C245975C463132C7A4AEBDF16F2B46EAC65A0631
|
||||
|
||||
j = 35
|
||||
MD = 22401BC402B10D91E46A040997E47E4AB4B34B8AACAC67C421D092E6AFC8F001288D94ACEB03E9EAF06A8BCB63D992DD
|
||||
|
||||
j = 36
|
||||
MD = FA404AD07BE2D1BCD570E1E9B706FBF9B9D1CE7FEA83D27383B101CD4F46E05F7C416393AA1642FD82A0379F1C880D75
|
||||
|
||||
j = 37
|
||||
MD = 329ADFE970EB974689414ED2690EAA5659AF9B8F7D286319F8C6869C9B825E26D2982A99E4101E5C141AEA3B08FF22A4
|
||||
|
||||
j = 38
|
||||
MD = 70EBB6F417819E0C6BF107F042F1F2D94F583FC861E5349ACCD66C8B9F578C75186D178407E8FCB99505F97D29E0FD78
|
||||
|
||||
j = 39
|
||||
MD = 720A6025DC72E36393EF3434FC76C003FAA06445E10A0DF3A10D15290C41C39DD1EB5A6ED075AD21C95F40B93DF24831
|
||||
|
||||
j = 40
|
||||
MD = B4069D44D2D22E7A0BD1AECE8D88F7E19F3EE1E63C25F7A78C9897C86617EC7A0F4757F34198ECA8F20E001CB811319B
|
||||
|
||||
j = 41
|
||||
MD = CB4815FEB62BC8BCE63C471A2C2528FE2AFD2B5ED2578DFD03A8039D9B82F80D6DDA5D54EA026E47CC030B0BCD129B22
|
||||
|
||||
j = 42
|
||||
MD = ED1A675F393CFCC13DF8373B7C949899228DC2AC7BBB3779EC79608359ACCDC5F7529D9574AC925A7718889FB18E3E42
|
||||
|
||||
j = 43
|
||||
MD = 1A36D2F5F955ED7C78F2CFE1657741FC2090E6BF5F1028051737C710707FE777F8E5B92F786730424E2A0239AB29456B
|
||||
|
||||
j = 44
|
||||
MD = 03A2EF8B3CD29D7332F7E13F6EC54F9ADFB09E84F433057FF292561F453E0202E2F2F184A14015C896FA93753A613EA1
|
||||
|
||||
j = 45
|
||||
MD = C779397F9D04B8ECC5B6C9591F80E32B570B88B45B137B3E4211D4F12D3AADC2351AFE4B0BEA4BB2EC1E0971B7A5A072
|
||||
|
||||
j = 46
|
||||
MD = 7C2C606E71D39BB49F46121850ACD66CE34111B45E80A5A8F8D61C5888D71F481A49E889BED57D3334F47B5C1C04C504
|
||||
|
||||
j = 47
|
||||
MD = C0A7107EE1E103DEDB7ED5A6F0A1EF0667D7FFB6C4E947F405C9129B689DAC4F21EF701849104C983A70E110B339C2EC
|
||||
|
||||
j = 48
|
||||
MD = 42DC1E7871997A0104A831D2545A42A20E76AA11A112ABEFF9FC5A2C1213D71AA8FB08FBE176101DCC11452F01F97800
|
||||
|
||||
j = 49
|
||||
MD = B3D5ECD405840AAFFCD1A27C3F1C8C9C37A59C1A0FEC411700D538AF7801A4C5506F74C8CD1EBDCEC6CB5FE3498EA375
|
||||
|
||||
j = 50
|
||||
MD = 903F0A35A4FB62146D9D695EE851CC60AC6EB7AFF82129F94144B5E9E687874A60BC62A5F9B1B3F2A5CC0C724F6C2642
|
||||
|
||||
j = 51
|
||||
MD = 7BD8CAAA4FBA2B6F5030B3485461A6B6BCA76352863A27F1C5E5E6E06A3C94824ED51FD27BBAE323B04A1DE66AF42B46
|
||||
|
||||
j = 52
|
||||
MD = 48299A0CDCA28C0CC12A63783CBB4414F9F9E32E833A5020086B5432659FDF71AE9D7FABD3951B1E6A640BC1AE43E68E
|
||||
|
||||
j = 53
|
||||
MD = 3C80FEFA50B89999701E92BC894114C3B6237225C43B8F2A3689D07E363E5FF7CE73EBEB4AE0B50C818FFBBB69BE3DF6
|
||||
|
||||
j = 54
|
||||
MD = A66075AA4C5724F38AC5E419A001181EB68B9F179D76682AA6C4D122D7D2C441F524C1BE5F70406E0A23214673213564
|
||||
|
||||
j = 55
|
||||
MD = 684BD7CA3442453ED59748C53E2C2E7FF309DEAAC5B8648B005DB52D52EA77A3300CF8404333596C72744E36A0ADC335
|
||||
|
||||
j = 56
|
||||
MD = B58AFB33D848B9F44CEB2D6B0859881F148A51C434720AF2134513E77B28CD26A4523A17631B16B895394A3E4FA9D4DB
|
||||
|
||||
j = 57
|
||||
MD = 8D3A03415A08EC927A13DF519AA8AB07F018CF4A1F0A34B22832C1E99BCE796F74763661AFFE5A78BB8E3869C188E20F
|
||||
|
||||
j = 58
|
||||
MD = A203CCB9242FD288C69841F6FD0DDE054D06FAB9881A4A0C60F20EFF5F26DD8CFB07DE32443EB60B89C651B028985CAE
|
||||
|
||||
j = 59
|
||||
MD = 95CA80325F86E63733C6C478B2F09970B80BDDED1DB9F6F9FC2FCC4849ECAE373ADB0A354EBCBE24EEE9FA0957688B5A
|
||||
|
||||
j = 60
|
||||
MD = 2B6FC2B2468BC25C59023B350615990F81AEA851D73DC97EDF9CB9976113D2DD5313307BC6385A7BD51FCDEDCC786659
|
||||
|
||||
j = 61
|
||||
MD = 3D020108F786DFF2BA9A201D08FD2571FFD297E1EB89EEABE5100E25C49BBEC6DC22F3EB882853E8A3869D7BC5406BF2
|
||||
|
||||
j = 62
|
||||
MD = 720D80B5FEABB73C8B30976CC68FA3A6D26BC37EE34866A36C2383868A60BCD33A25440FCDE4BE29620763787C44A49D
|
||||
|
||||
j = 63
|
||||
MD = 0717AEA747AE2BAA5F8532FAEF463C3A373464BD35C44EC6332558778C7E13DDCFB62B1068F7AAD9454DE1DC311EE575
|
||||
|
||||
j = 64
|
||||
MD = D56513D159658910BC391DC2C6474CB0672B91D08001B4F44D7C3BD83EF4409EA9975B6ECF864D9538D4FA2BE4EC9735
|
||||
|
||||
j = 65
|
||||
MD = D022086A35330891EC396EC55E112E735EA839D6A6446D4C656E272EE773E3BB24C739716E117D8E1606D3C0CA7AAE92
|
||||
|
||||
j = 66
|
||||
MD = 08F440714F00AC34E79A240D7269348D69E0F89F7D788E607A94BC685E49C03C043332A4D46C44B593CAA9CEDB413EB9
|
||||
|
||||
j = 67
|
||||
MD = 2412B39E4531EF37196D1C5426B675D28BBB6E0920840D9942E51EEF44694F5AD1E445A511A5EA760A5066C830261B73
|
||||
|
||||
j = 68
|
||||
MD = 302BA5A6582F07C77D6BBCEB11E323222CE236FB8E1701C73162D8AF423377CB8FF42D7F5D456EBE9F0688DDBD3B8F1D
|
||||
|
||||
j = 69
|
||||
MD = 824FC2733E117BBD07F80934B22A3F50296EBC23BDB0D3312B57746179329A3161D2AC1C807A94C1455AB8FF6965C72A
|
||||
|
||||
j = 70
|
||||
MD = 81644AEB71ACE50EAC41CCEA80E0534FD18005557D86429D805E416D742A407FF2C449CFA72B38D4B6FE46C427710C11
|
||||
|
||||
j = 71
|
||||
MD = DCAF7E9CB98603D2CA82A8F50E7BBABAE9B5CD8DBAAA295DB77B4D3C74D18DC3F71E2D7CC6BB289CA4F8C95A96996DA5
|
||||
|
||||
j = 72
|
||||
MD = 6CDC49D1DE63E8BF38E21DB258977EF7BC90C8DCC5AC86333241FBDA13D33D23C70874A38DE56811DF7D74515FDBA281
|
||||
|
||||
j = 73
|
||||
MD = 137CB53EE4AEE2C5B528EE3136967E8A72C39EC99C080B67BC867B3C59D1879A96C7B92CA37A3458BB601648A93B6BC4
|
||||
|
||||
j = 74
|
||||
MD = 520D814DEAC79D9C7622B7864C766D92102654B4F3DAE8A3CE884B67E54FD373602BE9D5B383A766AF17E98771E1A48A
|
||||
|
||||
j = 75
|
||||
MD = 44AAF17265AC3E322F77C2615EF68DCB047886B2453879BE527B6890D77D9541206652C3E4CB86A668E59975A80273ED
|
||||
|
||||
j = 76
|
||||
MD = 672AA6F5BD19A41C02C5096EDC20183948180D58A0E33F194A6F8962887A8D1BEFF5F061F5EDA5103C7DD1586E2F197C
|
||||
|
||||
j = 77
|
||||
MD = 5B6087CE415C87579C7F6B3A77FB312CB4E92C254F42A598C8FA2783BD75A20817A5B042F7A1610571D7DE1571D2FF7E
|
||||
|
||||
j = 78
|
||||
MD = CED7A36F73711E625CA986CC2332D1FDABA76D013A5555209660A6DBAD85D914C10760DCBB5C986CE0D3E61CA39DFF67
|
||||
|
||||
j = 79
|
||||
MD = 784AF158681303266878A4F95DF3B3660CD6C3E06EC37CBED731049FF1B999F883E1FC791582EB64AE0C90DCDC5DE890
|
||||
|
||||
j = 80
|
||||
MD = 8EF99AB5B670B48E0D7D1D330656F90F29B81CF8F02D78DBDB74C13B47B468E832B722F22C98480139F7BA31B34FD4C2
|
||||
|
||||
j = 81
|
||||
MD = A4AD5C72CD7F3B18698C527153EAC7C1D2DB1CEA0E16281E3406718E807192B065523D7437A40C026E530916ADBB3124
|
||||
|
||||
j = 82
|
||||
MD = 8885BC9C48DC9E7C77299BC2EB502BAC466BC1B687B7651C631D73BC632B8E24CCB0D383B1D3B7ED6CD5E15F83F48A9A
|
||||
|
||||
j = 83
|
||||
MD = 2C5360D10F00E91C30789371C6377A054908DEA8BB1AE2146C6F30886C3779C402B3925D4148D09FAD984AB903D769F5
|
||||
|
||||
j = 84
|
||||
MD = FE6D92D6085283B9F955066878B87F783C91978EF602A5A76CA699C15DF0F16FA97754C6BF6FC6CDB2947ADDB6997B21
|
||||
|
||||
j = 85
|
||||
MD = EBE3CF57BF9DD3C8AFDC8A06C02296FE7A68684BD2FA6EF80206C607F76F8A4DA64FE387173559DE3547C5A70DE32F01
|
||||
|
||||
j = 86
|
||||
MD = D474F411077DAF3EFBA3D84F1C659E6C9AD476644F4188B1F21C3C545971AE0B2D8A9E402505573BE595375F334A50BC
|
||||
|
||||
j = 87
|
||||
MD = 2EEC7D9C7FA570FA7BA64DF32970A16FED9A997287A4B1B3158B1554013FE7E64EB0971881A0C61F334996FFD665339C
|
||||
|
||||
j = 88
|
||||
MD = 07E0A5B4AEDE9651633DAD5729D9A4C263C90FD4EC7F099FBF0C217025FA0F355362A4009C09D019D409EB99EA86D67E
|
||||
|
||||
j = 89
|
||||
MD = E3F54D2762A62E19BB83D240634088B45BE932E257C2E5AF823ED202173D8204C84951193A9AE44A5F725FC8BA4BFFC2
|
||||
|
||||
j = 90
|
||||
MD = 6AFAD9C9429DA20B1B6764C390303A072F9048BE5A391C216B65F5FBFE3C5E0293AE1D14C98F7385F028A54637389AD5
|
||||
|
||||
j = 91
|
||||
MD = 69BDA508B24502008EB65814B21BAB7BA8C46F9AA69E4FDE82369FC437C7E9027211EAD139FE443ECDCF2232EDAFBD93
|
||||
|
||||
j = 92
|
||||
MD = CE05D274E1B63F29131F82635E087D572639B2BCC794768463D8F273E079572A9335D047ECBFDB17DBBE7CC011DB0735
|
||||
|
||||
j = 93
|
||||
MD = 60805637735136C91F5D589AC19A3B407A17D073A95058AD06CCA63E28D6427D59B63FDB38F04F4E46D630C1EA793051
|
||||
|
||||
j = 94
|
||||
MD = 6FB2CFD916BA52264A5DD7DA17847E4C4B50EB1E094EBF018050A941B6D005623266582F1C5FB615F00F7E6158764EFD
|
||||
|
||||
j = 95
|
||||
MD = 85D52BDE59B508C1ED791B636BB29F824EED2C84AFE0F8B980201F87F12BBEB039D69AF521C7B1C30F1A3536366175E8
|
||||
|
||||
j = 96
|
||||
MD = 466F6EFAF08E7E826911C620D32ED5BF77BA0ABCB0DD78FADBCCA91CEBC485C5BE3DCE96666FB3DA703E7FB8A703BB1C
|
||||
|
||||
j = 97
|
||||
MD = DE210BB121C58B30480391EEE19A4170196C7D4C7094DD442A9BF7DBF81024B5AFBED1328DCD3769DCC11D740D8E2935
|
||||
|
||||
j = 98
|
||||
MD = 69BBC31ED1414CFDD6CA317C6090BE66EC746DC9CA35D19083360B32266B2AD9B4D7CCDD51908C614926164FDB7E0C7E
|
||||
|
||||
j = 99
|
||||
MD = ACFCDE6D790E3060611C57DE5517A0CB4E3B77E47DCDAE1C88F5E60FC39EE610F12674AF8A6DC9138BC121ECB7FC9DD9
|
|
@ -0,0 +1,305 @@
|
|||
# MonteCarlo_512.txt
|
||||
# Algorithm Name: JH
|
||||
# Principal Submitter: Hongjun Wu
|
||||
|
||||
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
|
||||
|
||||
j = 0
|
||||
MD = C7831B938F591679C7EE52469918AA4FC66212FCAF15D13CDF8168387C00415EC844A452432A361A7AE66C730C4785D7ACF740D67F72B8911AF298E91FC73FC3
|
||||
|
||||
j = 1
|
||||
MD = 436459AE02D245C277ADCDF9AF6827DF6FC29AEC0F301C1CB32FC2B4A75D8D3F63D521CF2D605B1D12E27A129AEA8DC90B683E012B88941658A312C48FA9B8AA
|
||||
|
||||
j = 2
|
||||
MD = D26EFCA74A301173499756E7D03A1C8994EE01D7398C5475616EAC98CE9653E38A33FDC7ED5A15213A2182576D76313192202ED2212E1B27A3A9ECA8E1C59E6D
|
||||
|
||||
j = 3
|
||||
MD = B780F4C5E551B63B812F3F353D85AD38011E5AC3DC0BCF318164F183A3D58CCE30171CCB50D89771BA7819C7D2E823350B08A436DA94B3600A3CD09CFC4D92E9
|
||||
|
||||
j = 4
|
||||
MD = 25656A2280D424AE9C73618899E3A3A29CD8D77E1A9876E0DDDE8568CFD44CE9CA171F297C279153A2729714B57756DCD34BAAF4484A5D9021159790DA9DDE70
|
||||
|
||||
j = 5
|
||||
MD = 4C144909FD28CEEF49B659639176922BB837A0BE9282925D504EB4A46D1A5DE661BD507F11EA43D71362E6D621219D0A38A37D7F74406A25B08C4F88EAB09AA6
|
||||
|
||||
j = 6
|
||||
MD = 69B6AA71089C8E30F48BF1328A722B2B4DA02F54A147F1A9E083844641E0B07C3EA597754DB2CFB06454CE4E02B208719FC8291793F2D430FB36519AA0C12AB8
|
||||
|
||||
j = 7
|
||||
MD = E8411BAAEEF83F20CF0AD7CF9C8B39AD782BFC293F551BE215040A14863A59F956AFD6BDEAD65ED00F2FD09C21077EF43AF4C0E91213C82FB20E316255D495D6
|
||||
|
||||
j = 8
|
||||
MD = 629B0B6205518B57FA2D818E510669EEFB146CE289E39EE2608D416B8EE3EE2A0EC12B4AA13FFF1CD4470A0F43073882F4A223CF7E4960D12CA55732F7582BAD
|
||||
|
||||
j = 9
|
||||
MD = 159BEF289ACEFB1BFFD425463D97EBD30D91437E5BD9FB7556C61EE7F3204B5488BFC01D98950B7CE2B4E2549E2078E03DAEC2EF69E313A42B2FBD8451288B17
|
||||
|
||||
j = 10
|
||||
MD = 72748F72C0A1C7C0353AA28A45AFDC65A3354A5FACFA2B217C79A32B03295789E82B86961A083194A06CBF8CDAB94693B7139D1D2989DDE89A230CFED7D3F996
|
||||
|
||||
j = 11
|
||||
MD = FD3CC1F84D656C82C7C4459F4879486BE6DC8933F8FCDD64EC6AD34F85F48F109D9959EFDA0F9852345ED78DA1A658CA5EEAA109701356C725C027B9E741456E
|
||||
|
||||
j = 12
|
||||
MD = AA14A9FC1FE0B257D7AA41C7169D8EA1311EFA95F0005B180D8F11E6BC4E8715C6886AC36727483389CDCFB79BF4BA7DA72B98AF19D0D0369E75D7F1111A26C6
|
||||
|
||||
j = 13
|
||||
MD = 8028BB254D1AD33E655B1C4358DAB248E68BAFF6FF0D2BBFC9FCFA8D68381411456FED8C44C29D3B146B1838B0B0975B81BE84951EE9EF929194D5E45E9F1541
|
||||
|
||||
j = 14
|
||||
MD = 59B305652AEBA5A360E8AB87B77308CB3CB92440F223A53D908BDFD73EC1AACB91ACF8E1279289ED4B1573D38061CADC9794BE363790A26B274ABA3B1E89DD43
|
||||
|
||||
j = 15
|
||||
MD = 04DA909E3D6F03E4A4749C7CCF4BF3E375221506621F5E1233A16079021B109AD6B7F78214AC92FBDF83D07287E12BBE8A8902708FC1A5DFBDC32482810E17C1
|
||||
|
||||
j = 16
|
||||
MD = 342D9871CEB1BBBA1CAD417571DE3380947B6CEAA986976E042FE99D5049F9F9179E48855D6723DA3487D8EB534EDABC73626EB2CF9FEED0CA9E34D65FFC0141
|
||||
|
||||
j = 17
|
||||
MD = 763583E690398DAC4E6F51394B0E238662CC26D73DFC338D57C435585ABE53ECA83F72507B2D9ABAEB780DD021681A3D7AEA7AD87DB151C3BB3CE30905F7795E
|
||||
|
||||
j = 18
|
||||
MD = 48632F8EF300A545A8EA6AAEE9E0D6229F20BDD6EB6FFFA9167B623E7BF11F35CD7E76179ECD13A75E7E7123F48083B7E473BFA3E9A000322D55FA9C27AD61EB
|
||||
|
||||
j = 19
|
||||
MD = 79B3F28BCD69752FBCB32390D4C5F7934BFA057140FB3F84DBDCCADED2AFE847606283D6E0C66DE515BCBEA99BB3A302585FBF77EC42147265DD6593D0EC28B5
|
||||
|
||||
j = 20
|
||||
MD = F07951B07DD9F3A3FE894C134C6808CBD39AD9395D7AB241998CEE81299083EDC3A246C5F3C9809EED06694FCB3149FEB19FA9C19EF96C36C5EEC6F37715FEDE
|
||||
|
||||
j = 21
|
||||
MD = 430308CFC574E30517302B52447EF6EE0C178ACD8CEC41F70B027FB3E4017112F44A4552D86369211E1A90DC741CDA222E488D66AAEB246269DE37B8192C627B
|
||||
|
||||
j = 22
|
||||
MD = 8186BE1B93F594E5A167AA64537417CCD5EB7A96927D691E36498CC331F3F48A52B3CB865F425428B62DA4DB0C95D18998B51C19E01FDFFBEDDE304498BBAA48
|
||||
|
||||
j = 23
|
||||
MD = 20A7CCA43D669B7BF19946234194FC5BB81726F39B328D5CB75564ED8BDB1992F8307625DFC61211E52A02AB92197DA4AED22E8AADC6FDF3F7AEC4783A0F8DC8
|
||||
|
||||
j = 24
|
||||
MD = 0B6B2B2E06B578D8D0AFC227EE89218EDEA596B24DFAC7E04C65D597B693125417EABB6A6331B281E2B355E3AB297061E9645AE0F0AD5A45EBEEAC78758D641D
|
||||
|
||||
j = 25
|
||||
MD = 66658D197C4ADD39F17D1DB2BDBAD4C866FAB188F2E8A9578153B41ED6987E9A272E8236D574222F6AE2F3FBD59D288D03AD21053ECD7849E45F9B93E0B1CDC4
|
||||
|
||||
j = 26
|
||||
MD = 197170B2C45E3F7A52A2F363877A2961BE94E118728F1DED2569DB4B4B4A5BD810481C1A4F9C396EAA3ACE489AAFB1B0B6A04D22FE8C20FC812A83D193FF2A27
|
||||
|
||||
j = 27
|
||||
MD = 300CD5D23250DE0F1C530A37E585673ECE6438677D75067CB317DBD1AEEB7265A5F0C1DC6F529F5C2BA4AF6B4C52BCCB06892E787E8D3295505F47E9A624BC79
|
||||
|
||||
j = 28
|
||||
MD = A536997620FBAD6AA413A9F6798BF8198D42C6B9EE927F6116338D32CE3B0AA7628DFED05434243A8196A1BFEF9930B909A4E47B34D7E0C058E628D3DF6B80D9
|
||||
|
||||
j = 29
|
||||
MD = A2516386AD5088C8F64A28E3EAA9A6DCA89B5B5BBCEFEBB88E9584C74CF912967FDCF24D63466C7C99AD5D57A459F0AA049AD22C2DCD39608DD20C9369CAB5DB
|
||||
|
||||
j = 30
|
||||
MD = 04BEFA665B75CECE5E73E2398806A53410CFA5E62F1078778884459869428F67AB28257589C13DB9A13FADA0CD3D41C1EADED2D47A18EFD35DF24705F799B2FE
|
||||
|
||||
j = 31
|
||||
MD = 6866AFA14A1FE13C1CE6E8B30BDB3269F700F43ED051D1D201E233B0EB5BD409E240531AC69FBED54DEFFDAA9CFC95232FBC42E03C957E9FFB19D38992BD12DB
|
||||
|
||||
j = 32
|
||||
MD = 1E4BE592DE4803A841CFD201D398563609CB014BE48BC67CA7861AFA03212B095F448312D0CFC9F51D3C171E6BDC73D7CE634EBEDAA5597C91F6E34E6C4E569B
|
||||
|
||||
j = 33
|
||||
MD = DF14B2C2257B9F52B286AAB5DC0CDB95694869F4A90D6FDF8DBAE5850984F33B9430ED932077B39E5FA67F528B898F7269A56AD386DC712B02A896F7BD2B5715
|
||||
|
||||
j = 34
|
||||
MD = F7CC063ACFBCBABF5C71E09917B4D13FFCE3807BB0BFA4CD73BBBB5E440DE7FEB5ABE3556DA02BEA05041475749A3FB0DF58F5D7327026B05B153CFF658C2FEA
|
||||
|
||||
j = 35
|
||||
MD = 5FA8A598F4C9F17529D8E85B009A542E6E1B38EC3BA0D79BF41B11C9369B1EFD588720940F43BF72EF8116D1DB6034BBDB37931A87E282295E6B802AA2C1BC83
|
||||
|
||||
j = 36
|
||||
MD = F360680110A14A8C2E71D11F95EFE5F15D7C85E6BBC25A2DC634A49A8FEDB2BAB839E4E436D63F6EE5741CC74DFE7E5F81D187BC15E5568F3FFDAA2B28BAA6E4
|
||||
|
||||
j = 37
|
||||
MD = D24B1AF135A5E6765093CD223A6C349796FCA41479F2ECFD74CE51F541D4A5AEDBE36D1A74559E7F0EA6BCEB42EB21D3A14D3671275D1AECA41BDA95719A4FEF
|
||||
|
||||
j = 38
|
||||
MD = 5CFA452C93FC1FDCA08282ED383406E5CD5C7E7BE0D975133448BF7857751B1AC73D4FE8E42E9E6CA348279218DFCFB09B9DA43A902A363168F10446E370B98D
|
||||
|
||||
j = 39
|
||||
MD = FE8207E14C8B2A0AE5043F09E0E7FE9D487456ABD29A2873ED1A7AF63120E1F8A91BED69A9D433F5B50D44ABF19B240504107E7FDFCCDEF44B86EB882A4EAEC4
|
||||
|
||||
j = 40
|
||||
MD = 4145E426F0BF3570804CD22019E86C09FD23C95CAE68AAA4B2D82CFF69FCE5DD31F10B1297AF0996356571D1849C2E8CE6D2228E740DF5D1A53ED19F8FBEE685
|
||||
|
||||
j = 41
|
||||
MD = AFC06C401B9B9B46DBD0EF2188FE3DAF368E07807F7452ACB16E9C9BDCEB22F9806766D1C189C2EE4CC48B0085302C275CFE3D0F42D74C5FD5EADA359672C0B3
|
||||
|
||||
j = 42
|
||||
MD = 1DEF43365B23F57EECCBB1EC92C92255E5C5FD6D25079CBC948B7FC9F88437953CAD657266249A008A71A635E7E66FE0F153D8A5EEF2343B75661B944E6C606E
|
||||
|
||||
j = 43
|
||||
MD = 9CF21C2C1DECF6233859E8F7F226B8B2C4DBB8538845235FCB4C731FC91AE2B8E457C8D99770ACFD8C50179E18E0880B3F1A262D6AB204C9F045F5331DA35AD9
|
||||
|
||||
j = 44
|
||||
MD = 8F3B2E70EE7E3E6931233598838F45F9F3838E67AACBBD1C6D6E52214AC8FB7399274529F13EE30795895A6123802C2A385AF5635A65E86C4F783F4AD33D432B
|
||||
|
||||
j = 45
|
||||
MD = 45F513EE7F74A67E6D7151A22F1C74819F6CF3DA4D645843AE9F7B0264CD4B0C6066C415ADCC20A7EF64961224F305151ED9D9C557D52C47EEE027FEA44212E3
|
||||
|
||||
j = 46
|
||||
MD = 383D5E1EE1B4BB08B698D89A1AA05E7641DF76CF140595BB84CF36C074844B4321A8AD098CF0F3DA1F545428D3C195B8920C4E624A97805076D88FF8D6011E3C
|
||||
|
||||
j = 47
|
||||
MD = CF6E75ECD3AC9D7C14A9027A595755009C6FAB1C46D5088C891E13AF06C03A25CA9532BE8549E2EAC508720EAA357587FB6597A89FA43246E3874C3730B70545
|
||||
|
||||
j = 48
|
||||
MD = 3A2564B3C482C9A7A03361AED7DA008CF7E870C1347B9783ADEEBAED6075455A2397D7EAEBE7E9E986852C1AC98EAFAE45954D02AB0D6344D6DF277E1AFFB5BD
|
||||
|
||||
j = 49
|
||||
MD = 37E2BEDEB65E0E7FF0B9162D473EC53EA174EE3A66ACD9658540686EA7123B57CE6F893A38C698212C6856D335910340C0D09D51BE57C0E3C47E8C1D9976C376
|
||||
|
||||
j = 50
|
||||
MD = 20E67D7BAC694809E7362DB903DEB51649E6DF35113C44C8AD1D43F1CB3CAB0081A69B08684839530728641CA415481FA9B50C722963F0F96C7C8342462DC87D
|
||||
|
||||
j = 51
|
||||
MD = A07937ABFEAE63F3F3FD1E75548E4302949ADDDC1828A353C1AE9AAB0E3193A9EEE8C9E5DCA07275C4D8F224622F21EA54AFC139E24B51D6568B289390FF2BB7
|
||||
|
||||
j = 52
|
||||
MD = 3BD2537D62842465E48E113428C6E3116EC3A6206994D337FBF16D855822757A7A2F84074FEE30BC269C2C098599562FC9FCDD466353CC6400BE95FAD9FC4CD3
|
||||
|
||||
j = 53
|
||||
MD = 747B091EB60DD573B8DD47696B44B04101E6216FA16FB1BB9023E4ED6844F63F33FB686ADA4D3D1451773D1D4E2A61E444F88BB9ABF26F43456AF9AE36BB0B62
|
||||
|
||||
j = 54
|
||||
MD = B206EDEF52C7F6B0DE80AF34E6F869730A20FA893B97470E34FAA9D870D9D2A734B7820C6566153760377BAC849BFC5CF36C0FB5A2BE80238BB7F737891562FC
|
||||
|
||||
j = 55
|
||||
MD = A0C2C0B2AE4795A83B3063A9CFE1FD6830FB069366534F738A77E1AEF8139525D5097D6DACF435C128FDAFE1E5BBC9F22F8B81AF7D6A531B8C649AB3C6A1928D
|
||||
|
||||
j = 56
|
||||
MD = 48B842ECE3620812E928F1EAC568AF2435C6BF44A27CA8B222A52869D18EB0C1DB2889283FCCDC95E96FF463A8AE68F1B468D88C1F5A25D7809102FB5739963B
|
||||
|
||||
j = 57
|
||||
MD = 3FC267FD34D7D6BB501AD01FF49230E04E846A566845DDC5861FD91A90AECC60A4967A1798CF902C723AFC9906E8135D58B9D4B8C8F1CC84FDE2A40E044300E6
|
||||
|
||||
j = 58
|
||||
MD = B98D4F423ECC62DD85E5FF7F6F945F397E51496F6D5E5FB6241EFC45518D9EEE06A80B79B12ECB45821E665CFC01B09EB7F2F816BFB95BBC2FAE642D9C30E52F
|
||||
|
||||
j = 59
|
||||
MD = 225B9A7840E52D25FC942ADABF71D72D3962A264254F483B1D211F1B79C11F8E7514D264736F39D0F9C9CECFECD726CB59DBC1CE628536892DB1AED6F56663C7
|
||||
|
||||
j = 60
|
||||
MD = 480F9B3F05256F92AED24F0E6788465654644A7E3145C4B6F1E00581F98DFDED29D4E4C4C6FD405638D1F48DC6CE8BC08E75B79DDB3DD24098CA1C348EE09B07
|
||||
|
||||
j = 61
|
||||
MD = CB2934B11210D87EAD3CB3EDCCC94BF75C1E915180F53F209FD9B6484E988A3A2AC2AD8DCD8D2B5DE26E9D5B9BC1B42EBD8F1BF9E1981A80DBC3F3A4C2FE2A77
|
||||
|
||||
j = 62
|
||||
MD = F6D117CDCB5892BB28D0CCE7E6AC4A507E1FE90ACE7E6A6A5094E6796D355FFB6AE31D4335A795D2383C241E6AF6036D5B50BD5F61D0BB2FE7C37909AAE3F901
|
||||
|
||||
j = 63
|
||||
MD = 1AB9F2C41989DF7605EFA400FCBD4D20F3383278E82AEF9DB37A391DDBBAAAD00A3D468E89FD96C27A186C91C90B4E872BDBF3CC4A8FF9E179B4FEA9DDCD6C1C
|
||||
|
||||
j = 64
|
||||
MD = 6B01B68F22F6DE91A28A252124611E512D0A54B4A57414A1A52FBB7D4EC752E4C744B338CFB1CA4116EA45538C6E949F7BBAAB68DEECD53B9706F0DFD2932977
|
||||
|
||||
j = 65
|
||||
MD = 8E06499A81B4333C48FAAA0DFB41E6B1C67FC90487E4636AB03517AA70E8D78ECCA88632D05B8E44244C0722D9767257A81BA596C1F8BDA1711A2B576260C786
|
||||
|
||||
j = 66
|
||||
MD = F51FB27D2FA8E389C378C985BEECEAF4070E57A21AAAD4C51A44540CBDE97D4C94345F1424FAB6C8009AB5BC2A3F3CE3DEA9D132B90B6FCD9ABDCB8447E42664
|
||||
|
||||
j = 67
|
||||
MD = D8B7BEEC5EC0F6C8A04D277F02CAD1D4562342C04B0D534E8AFFAD8C7BCE4A0F4A295E9CF7E633EA41D4A4A136E8D414C653E2C49B504767B700E96CB42C5925
|
||||
|
||||
j = 68
|
||||
MD = 48748DBEF7C32E2221FBDD5B02AEBA42D7110026ED08E7C1DD3E2254834BC2AEDFD68F2C4ED03E59355DA85188642E65BDDEF511EAFDADC48AEE67E27C5CB31B
|
||||
|
||||
j = 69
|
||||
MD = A683EA49ECBD2D6150059F9BB98876B82791CF782554F5C43D9289B2F2D44DBFE6E567939F00211963BDCCA838DCBB7CAE277E04CE5B1B6D5033B73E0D2FE84D
|
||||
|
||||
j = 70
|
||||
MD = 447BD17991AB156371F8CDEE3BF5D1A63CBB197BCBE4ED37F85D91E4E98E3F48B616F716D7D21B67D8CCAD2C0287B75EF21C3BD7F9DC4325806E3AE022A3E079
|
||||
|
||||
j = 71
|
||||
MD = D622510512FB43ADB64C7EBA97877F294F7AA01570F15C373D816038E0960BAF4FE9BAA75EFAE815871AD35BA2C84BD9D2B8D5FC41BBC0F50A2FBC202EF966F6
|
||||
|
||||
j = 72
|
||||
MD = 6A49C46532A7354D4C1AF37632773CC198EBA11260E6D55E30BA6E57DA4A863DC8BDB8534F55DEA9DC46B52E547E924D7807DF9AA51AC55A5E97B379ECBE7D28
|
||||
|
||||
j = 73
|
||||
MD = A216AABD50EB45E77B7BC25C55F946FA4A4BD32F18AD9925D48EC7E58A3D8258965E23BD78344A52098C6820C57F024E1AB5A28CAE0AEEE8863762B0DD3A65C4
|
||||
|
||||
j = 74
|
||||
MD = 940C55F6977EC10F5524CD1BB6C7E9000E710FCA049BD156436E4AA93A39788F75C6956A47CC54DE18A360240028383D2271A58C8853167D9B5BA25FDD2BEC74
|
||||
|
||||
j = 75
|
||||
MD = 50DDD9CBE116470049A8C6FD284D4CA50EAE8DED61A7CA92B9FD5E3CA9DE74E0CB7383DA0E967220D27051818B687E8C44E4FD4F56C69031B8B99A6A23CF253A
|
||||
|
||||
j = 76
|
||||
MD = AF2F28AA26854B670444C9A84FA8BAE12E02B33095C872627BCFE868299765093A4CBDF0BA198FC957D1E6A71BC2F6BF90A8849869A901C93781CD25ADF6CDE0
|
||||
|
||||
j = 77
|
||||
MD = 395772CE163462C60AE606F33AAB4BF82834A77CBCEC033E1D052EABE0FCCB2B841BBD772A6B5F25D5E7E3DA52A7659017E0B54EC35CBFB07D7A8FA9F2E615BD
|
||||
|
||||
j = 78
|
||||
MD = A75CA66F829190A2D672FF79B22A2C835FE49DDB1005C02408D5B031110E72263D915C66E682913E8490E6D648E935A0553424BB6549FEC561EAD1994C6988DE
|
||||
|
||||
j = 79
|
||||
MD = C41BCB1636DDA4BC968DB7154D4B7B45F348C7C3C51881F344C0502BE477A615D21905E6B0B9C0778001BB871AB0350FBA58269F3B093700558AC328D02D4604
|
||||
|
||||
j = 80
|
||||
MD = F68A1C5BC85839EDF4C9D8D2B8AC59FF48A991D8D9075221FFA51C22E2D31D277B496DED1F4EEDB379E868E0A33B9AC84949D9AFC25846C1E6D53EC2B0E65515
|
||||
|
||||
j = 81
|
||||
MD = 4339F14B635D59DBD01908D2ACBE8DEE3C2CB4CC1279EA0A47218523E2731D4C91463791E3BCEF4D9EAA37D72225C595A5B7AA1277F13A04501C21FA46CBDB84
|
||||
|
||||
j = 82
|
||||
MD = 2D38967E9E10E1E215267F13550378E323DEE0E31BBF2F821123D8793C56A6E5C346D0924D721166C1BDD93E88532CF2FE8F5017B20C5291A4075CB781AA06F7
|
||||
|
||||
j = 83
|
||||
MD = E1C601684D4F1C1EC6DE76993731142C6D1B6F84C7E65A2E56E5903742C8C1A397FD276D1253DC4306145A5A1A97402BAA17CC407031E136382D4195597E7487
|
||||
|
||||
j = 84
|
||||
MD = 2D7B2C8F98393F56194C76744B7FA977DFEAA0DA50C14DC98EAE8358BF06CF111C75D9CAAA04319878E3C50AC9246240B73088B4ED124C956D7765D841A3198A
|
||||
|
||||
j = 85
|
||||
MD = 85C66AC620E3702A515FB7EC25DEBAD9AF4EEFAD1EBAC9659BD55075D7D822F5F731DD7213F4C4692379F4564CDB110785735AD595395CCD932DAF689B5960C7
|
||||
|
||||
j = 86
|
||||
MD = 30FEA1CB41992188F4AE9074788C46BB6C93F5532213C9C36B50445345178CCCD1BF2B3C89CB984DD02EC8C785AC68951D8916032371528F11F880EA6CF415B1
|
||||
|
||||
j = 87
|
||||
MD = 73FC189F327DF0C19343A3E3D14A673B554DD502F4D46D95EDE47A26DBB796C1BDBBB04285FD35DE96F2BB1E34158B9E887D3E6FB4DC231D59DEB5994A0016E6
|
||||
|
||||
j = 88
|
||||
MD = B2F8F064B463E04E07C95AC437C90AEE1CEDA06222DF5CF79E25C6976A9DBD5216106C0DF16D2F15E3E58F1AD2516E214F9F48237EAE2FD38C7A668080AEBD02
|
||||
|
||||
j = 89
|
||||
MD = 2DBCFAFF73380FB45AFD7C01CA09E26CB9EE0B4788C66EB6EA15E54ADD8BC9C050D4E2A2DA56F81246BBCBC459CD534220069EBD204EBCDDBC3BAFE19AA65A4F
|
||||
|
||||
j = 90
|
||||
MD = 0C51F1F77C02210F3D087FCE2AAC19CF852DF5C1861CD5B4A46B0795A17C0907C282A4E971ED69795F87F47E4A2F84D97D39C4B6525CB4F6808EFEE105406E81
|
||||
|
||||
j = 91
|
||||
MD = 1A6FC5F7E7C2443FFF3F0FA2FD2D4808A84665656AFFDA5DC879C44E9FE1D90758A3A79A63EFF1BC301D50C700B73870104E492B48EB78A8CA716056BDA6BA1E
|
||||
|
||||
j = 92
|
||||
MD = 55FB5CEA3781C0A8DB9EFB6514AF2F6A702C24D4F75DC77563E0A3762C51D005CFAC1387731FC57C9A584F9A1B1896B7630348D5D0EF506E32E9A04B9ACE1996
|
||||
|
||||
j = 93
|
||||
MD = D8180052549A3FE8A53F4BCC71A7DF9279ADD588B789A9222E4B2EBAB9194B840A6DAF88B7AA1AD782CE2944F1954A87F865EC42F1AFC578A2A3CB4C82DEEFF8
|
||||
|
||||
j = 94
|
||||
MD = 25D10D77F725C8BB8573B73349D914B8978EA70E33B2032DE24E75D23D3601EFE809F0E5C143C184D576A5E9EC4C7DD4FF0EC4AF672185625CB4B7368A60EB13
|
||||
|
||||
j = 95
|
||||
MD = F37CA46CD78E907F7DF82C6565D6AA0E07D071599896ED4562E3EC19DC82D58CB0E3C89A5EF12F077524E32DBB075883DF9E196B7973B1336CD87AFF06066806
|
||||
|
||||
j = 96
|
||||
MD = 256660E099EA201ABF644DF857D1D6B1388553F173EDC5930995A358EFC4F3627BE2374675CE93F14FCED603E2CF13E3BBDDAE5032863CEE8B41771BA57B69C8
|
||||
|
||||
j = 97
|
||||
MD = 3021109B957254C93F962C7D5D48594F151A0C0A120CC84B5BAB77B0E3A53232352F8EAED3558DA9C30935A3CD5751F3900569A3F11001F26344B41CE958FB57
|
||||
|
||||
j = 98
|
||||
MD = D02B981B4D86F8AE1376DE637F4565E755750437470D5C5B2207EA1E7DB9B15D0E9925846A10A058A6588651E5F51D4F49B25A9159942C3FD245C859A040F845
|
||||
|
||||
j = 99
|
||||
MD = 365D5C6D3EA5F7DB1EB901933DA2F0EA58DF34401EF61811BB6DABF41927A28328F9640D08BF974BA0F90CFAD21C8C36DF399856BEBFD27514B04A1CD3BE5DA7
|
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