This commit is contained in:
bg 2009-04-20 12:35:04 +00:00
parent ff9f1b74e7
commit 5c68d38237
35 changed files with 41045 additions and 88 deletions

View File

@ -55,7 +55,7 @@ email: daniel.otte@rub.de
The *_init function generally takes a pointer to the context as parameter.
This function initializes the context with algorithm specific values.
3.3. *_nexBlock function
3.3. *_nextBlock function
The *_nextBlock function is the core of each hash function. It updates the hash
state with a given message block. So this function uses a context pointer and
a message pointer as parameters. The size of a message block is fixed for each

View File

@ -38,4 +38,4 @@ extern const hfdesc_t skein256_256_desc;
extern const hfdesc_t skein256_384_desc;
extern const hfdesc_t skein256_512_desc;
#endif /* HFAL_SHA256_H_ */
#endif /* HFAL_SKEIN256_H_ */

View File

@ -25,16 +25,19 @@ require 'serialport'
def init_system
sleep 1
$sp.print("echo off \r")
print("DBG i: " + "echo off \r"+"\n") if $debug
# line = $sp.readlines()
# print("DBG 0.0: ")
# print(line)
# sleep 1
$sp.print("shavs_set #{$algo_select} \r")
print("DBG i: " + "shavs_set #{$algo_select} \r"+"\n") if $debug
# line = $sp.readlines()
# print("DBG 0.1: ")
# print(line)
# sleep 1
$sp.print("shavs_test1 \r")
print("DBG i: " + "shavs_test1 \r"+"\n") if $debug
# line = $sp.readlines()
# print("DBG 0.2: ")
# print(line)
@ -52,7 +55,7 @@ end
def send_md(md_string)
for i in 0..md_string.length-1
$sp.print(md_string[i].chr)
# print(md_string[i].chr)
# print("DBG s: "+ md_string[i].chr) if $debug
if(i%20==19)
sleep(0.1)
end

14
mkfiles/shabal.mk Normal file
View File

@ -0,0 +1,14 @@
# Makefile for Skein
ALGO_NAME := SHABAL_C
# comment out the following line for removement of Skein from the build process
HASHES += $(ALGO_NAME)
$(ALGO_NAME)_OBJ := shabal.o
$(ALGO_NAME)_TEST_BIN := main-shabal-test.o debug.o uart.o hexdigit_tab.o \
dbz_strings.o nessie_common.o cli.o string-extras.o performance_test.o \
nessie_hash_test.o hfal-basic.o hfal_shabal.o shavs.o
$(ALGO_NAME)_NESSIE_TEST := test nessie
$(ALGO_NAME)_PERFORMANCE_TEST := performance

380
shabal.c Normal file
View File

@ -0,0 +1,380 @@
/* shabal.c */
/*
This file is part of the AVR-Crypto-Lib.
Copyright (C) 2009 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* \file shabal.c
* \author Daniel Otte
* \email daniel.otte@rub.de
* \date 2009-04-17
* \license GPLv3 or later
*
*/
#include <stdint.h>
#include "shabal.h"
#include <avr/pgmspace.h>
#include <string.h>
#define SHABAL_O1 13
#define SHABAL_O2 9
#define SHABAL_O3 6
static inline
uint32_t shabal_u(uint32_t a){
return (a<<1)+a; /* a*3 */
}
static inline
uint32_t shabal_v(uint32_t a){
return (a<<2)+a; /* a*5 */
}
#define ROTL32(a,n) (((a)<<(n))|((a)>>(32-(n))))
static
void shabal_p(shabal_ctx_t* ctx, const void* m){
uint8_t i,j;
for(i=0;i<16;++i){
ctx->b[i] = ROTL32(ctx->b[i],17);
}
for(j=0;j<SHABAL_P;++j){
for(i=0;i<16;++i){
ctx->a[(i+16*j)%SHABAL_R] =
shabal_u(ctx->a[(i+16*j)%SHABAL_R]
^ shabal_v(ROTL32(ctx->a[(i+16*j+SHABAL_R-1)%SHABAL_R],15))
^ ctx->c[(8-i+16)%16])
^ ctx->b[(i+SHABAL_O1)%16]
^ ((ctx->b[(i+SHABAL_O2)%16]) & ~(ctx->b[(i+SHABAL_O3)%16]))
^ ((uint32_t*)m)[i];
ctx->b[i] = ROTL32(ctx->b[i], 1) ^ ~(ctx->a[(i+16*j)%SHABAL_R]);
}
}
for(j=0;j<36;++j){
ctx->a[j%SHABAL_R] += ctx->c[(j+3)%16];
}
/*
for (j=0; j<36; j++){
ctx->a[(36 - 1 - j)%12] =
ctx->a[(36 - 1 - j) % 12]
+ ctx->c[(36 * 16 + 6 - j) % 16];
}
*/
}
uint32_t shabal192_iv[] PROGMEM = {
/* A */
0xFD749ED4, 0xB798E530, 0x33904B6F, 0x46BDA85E,
0x076934B4, 0x454B4058, 0x77F74527, 0xFB4CF465,
0x62931DA9, 0xE778C8DB, 0x22B3998E, 0xAC15CFB9,
/* B */
0x58BCBAC4, 0xEC47A08E, 0xAEE933B2, 0xDFCBC824,
0xA7944804, 0xBF65BDB0, 0x5A9D4502, 0x59979AF7,
0xC5CEA54E, 0x4B6B8150, 0x16E71909, 0x7D632319,
0x930573A0, 0xF34C63D1, 0xCAF914B4, 0xFDD6612C,
/* C */
0x61550878, 0x89EF2B75, 0xA1660C46, 0x7EF3855B,
0x7297B58C, 0x1BC67793, 0x7FB1C723, 0xB66FC640,
0x1A48B71C, 0xF0976D17, 0x088CE80A, 0xA454EDF3,
0x1C096BF4, 0xAC76224B, 0x5215781C, 0xCD5D2669
};
uint32_t shabal224_iv[] PROGMEM = {
/* A */
0xA5201467, 0xA9B8D94A, 0xD4CED997, 0x68379D7B,
0xA7FC73BA, 0xF1A2546B, 0x606782BF, 0xE0BCFD0F,
0x2F25374E, 0x069A149F, 0x5E2DFF25, 0xFAECF061,
/* B */
0xEC9905D8, 0xF21850CF, 0xC0A746C8, 0x21DAD498,
0x35156EEB, 0x088C97F2, 0x26303E40, 0x8A2D4FB5,
0xFEEE44B6, 0x8A1E9573, 0x7B81111A, 0xCBC139F0,
0xA3513861, 0x1D2C362E, 0x918C580E, 0xB58E1B9C,
/* C */
0xE4B573A1, 0x4C1A0880, 0x1E907C51, 0x04807EFD,
0x3AD8CDE5, 0x16B21302, 0x02512C53, 0x2204CB18,
0x99405F2D, 0xE5B648A1, 0x70AB1D43, 0xA10C25C2,
0x16F1AC05, 0x38BBEB56, 0x9B01DC60, 0xB1096D83
};
uint32_t shabal256_iv[] PROGMEM = {
/* A */
0x52F84552, 0xE54B7999, 0x2D8EE3EC, 0xB9645191,
0xE0078B86, 0xBB7C44C9, 0xD2B5C1CA, 0xB0D2EB8C,
0x14CE5A45, 0x22AF50DC, 0xEFFDBC6B, 0xEB21B74A,
/* B */
0xB555C6EE, 0x3E710596, 0xA72A652F, 0x9301515F,
0xDA28C1FA, 0x696FD868, 0x9CB6BF72, 0x0AFE4002,
0xA6E03615, 0x5138C1D4, 0xBE216306, 0xB38B8890,
0x3EA8B96B, 0x3299ACE4, 0x30924DD4, 0x55CB34A5,
/* C */
0xB405F031, 0xC4233EBA, 0xB3733979, 0xC0DD9D55,
0xC51C28AE, 0xA327B8E1, 0x56C56167, 0xED614433,
0x88B59D60, 0x60E2CEBA, 0x758B4B8B, 0x83E82A7F,
0xBC968828, 0xE6E00BF7, 0xBA839E55, 0x9B491C60
};
uint32_t shabal384_iv[] PROGMEM = {
/* A */
0xC8FCA331, 0xE55C504E, 0x003EBF26, 0xBB6B8D83,
0x7B0448C1, 0x41B82789, 0x0A7C9601, 0x8D659CFF,
0xB6E2673E, 0xCA54C77B, 0x1460FD7E, 0x3FCB8F2D,
/* B */
0x527291FC, 0x2A16455F, 0x78E627E5, 0x944F169F,
0x1CA6F016, 0xA854EA25, 0x8DB98ABE, 0xF2C62641,
0x30117DCB, 0xCF5C4309, 0x93711A25, 0xF9F671B8,
0xB01D2116, 0x333F4B89, 0xB285D165, 0x86829B36,
/* C */
0xF764B11A, 0x76172146, 0xCEF6934D, 0xC6D28399,
0xFE095F61, 0x5E6018B4, 0x5048ECF5, 0x51353261,
0x6E6E36DC, 0x63130DAD, 0xA9C69BD6, 0x1E90EA0C,
0x7C35073B, 0x28D95E6D, 0xAA340E0D, 0xCB3DEE70
};
uint32_t shabal512_iv[] PROGMEM = {
/* A */
0x20728DFD, 0x46C0BD53, 0xE782B699, 0x55304632,
0x71B4EF90, 0x0EA9E82C, 0xDBB930F1, 0xFAD06B8B,
0xBE0CAE40, 0x8BD14410, 0x76D2ADAC, 0x28ACAB7F,
/* B */
0xC1099CB7, 0x07B385F3, 0xE7442C26, 0xCC8AD640,
0xEB6F56C7, 0x1EA81AA9, 0x73B9D314, 0x1DE85D08,
0x48910A5A, 0x893B22DB, 0xC5A0DF44, 0xBBC4324E,
0x72D2F240, 0x75941D99, 0x6D8BDE82, 0xA1A7502B,
/* C */
0xD9BF68D1, 0x58BAD750, 0x56028CB2, 0x8134F359,
0xB5D469D8, 0x941A8CC2, 0x418B2A6E, 0x04052780,
0x7F07D787, 0x5194358F, 0x3C60D665, 0xBE97D79A,
0x950C3434, 0xAED9A06D, 0x2537DC8D, 0x7CDB5969,
};
void shabal192_init(shabal_ctx_t* ctx){
uint8_t i;
ctx->b = ctx->b_buffer;
ctx->c = ctx->c_buffer;
ctx->w.w64 = 1LL;
for(i=0;i<SHABAL_R;++i){
ctx->a[i] = pgm_read_dword(&(shabal192_iv[i]));
}
for(i=0;i<16;++i){
ctx->b[i] = pgm_read_dword(&(shabal192_iv[SHABAL_R+i]));
}
for(i=0;i<16;++i){
ctx->c[i] = pgm_read_dword(&(shabal192_iv[SHABAL_R+16+i]));
}
}
void shabal224_init(shabal_ctx_t* ctx){
uint8_t i;
ctx->b = ctx->b_buffer;
ctx->c = ctx->c_buffer;
ctx->w.w64 = 1LL;
for(i=0;i<SHABAL_R;++i){
ctx->a[i] = pgm_read_dword(&(shabal224_iv[i]));
}
for(i=0;i<16;++i){
ctx->b[i] = pgm_read_dword(&(shabal224_iv[SHABAL_R+i]));
}
for(i=0;i<16;++i){
ctx->c[i] = pgm_read_dword(&(shabal224_iv[SHABAL_R+16+i]));
}
}
void shabal256_init(shabal_ctx_t* ctx){
uint8_t i;
ctx->b = ctx->b_buffer;
ctx->c = ctx->c_buffer;
ctx->w.w64 = 1LL;
for(i=0;i<SHABAL_R;++i){
ctx->a[i] = pgm_read_dword(&(shabal256_iv[i]));
}
for(i=0;i<16;++i){
ctx->b[i] = pgm_read_dword(&(shabal256_iv[SHABAL_R+i]));
}
for(i=0;i<16;++i){
ctx->c[i] = pgm_read_dword(&(shabal256_iv[SHABAL_R+16+i]));
}
}
void shabal384_init(shabal_ctx_t* ctx){
uint8_t i;
ctx->b = ctx->b_buffer;
ctx->c = ctx->c_buffer;
ctx->w.w64 = 1LL;
for(i=0;i<SHABAL_R;++i){
ctx->a[i] = pgm_read_dword(&(shabal384_iv[i]));
}
for(i=0;i<16;++i){
ctx->b[i] = pgm_read_dword(&(shabal384_iv[SHABAL_R+i]));
}
for(i=0;i<16;++i){
ctx->c[i] = pgm_read_dword(&(shabal384_iv[SHABAL_R+16+i]));
}
}
void shabal512_init(shabal_ctx_t* ctx){
uint8_t i;
ctx->b = ctx->b_buffer;
ctx->c = ctx->c_buffer;
ctx->w.w64 = 1LL;
for(i=0;i<SHABAL_R;++i){
ctx->a[i] = pgm_read_dword(&(shabal512_iv[i]));
}
for(i=0;i<16;++i){
ctx->b[i] = pgm_read_dword(&(shabal512_iv[SHABAL_R+i]));
}
for(i=0;i<16;++i){
ctx->c[i] = pgm_read_dword(&(shabal512_iv[SHABAL_R+16+i]));
}
}
void shabal_nextBlock(shabal_ctx_t* ctx, const void* block){
uint8_t i;
uint32_t* t;
for(i=0;i<16;++i){
ctx->b[i] += ((uint32_t*)block)[i];
}
ctx->a[0] ^= ctx->w.w32[0];
ctx->a[1] ^= ctx->w.w32[1];
shabal_p(ctx, block);
for(i=0;i<16;++i){
ctx->c[i] -= ((uint32_t*)block)[i];
}
ctx->w.w64++;
t = ctx->c;
ctx->c = ctx->b;
ctx->b = t;
}
void shabal_lastBlock(shabal_ctx_t* ctx, const void* block, uint16_t length_b){
uint8_t i,j;
uint32_t* t;
uint8_t buffer[64];
while(length_b>=SHABAL_BLOCKSIZE){
shabal_nextBlock(ctx, block);
block = (uint8_t*)block + SHABAL_BLOCKSIZE_B;
length_b -= SHABAL_BLOCKSIZE;
}
memset(buffer, 0, 64);
memcpy(buffer, block, (length_b+7)/8);
buffer[length_b/8] |= 0x80>>(length_b%8);
for(i=0;i<16;++i){
ctx->b[i] += ((uint32_t*)buffer)[i];
}
ctx->a[0] ^= ctx->w.w32[0];
ctx->a[1] ^= ctx->w.w32[1];
shabal_p(ctx, buffer);
t = ctx->c;
ctx->c = ctx->b;
ctx->b = t;
for(j=0; j<3;++j){
ctx->a[0] ^= ctx->w.w32[0];
ctx->a[1] ^= ctx->w.w32[1];
shabal_p(ctx, buffer);
t = ctx->c;
ctx->c = ctx->b;
ctx->b = t;
}
}
static inline
void shabal_ctx2hash(void* dest, const shabal_ctx_t* ctx, uint16_t outlength_b){
memcpy(dest, &(ctx->c[16-outlength_b/32]), outlength_b/8);
}
void shabal192_ctx2hash(void* dest, const shabal_ctx_t* ctx){
shabal_ctx2hash(dest, ctx, 192);
}
void shabal224_ctx2hash(void* dest, const shabal_ctx_t* ctx){
shabal_ctx2hash(dest, ctx, 224);
}
void shabal256_ctx2hash(void* dest, const shabal_ctx_t* ctx){
shabal_ctx2hash(dest, ctx, 256);
}
void shabal384_ctx2hash(void* dest, const shabal_ctx_t* ctx){
shabal_ctx2hash(dest, ctx, 384);
}
void shabal512_ctx2hash(void* dest, const shabal_ctx_t* ctx){
shabal_ctx2hash(dest, ctx, 512);
}
void shabal192(void* dest, void* msg, uint32_t length_b){
shabal_ctx_t ctx;
shabal192_init(&ctx);
while(length_b>=SHABAL_BLOCKSIZE){
shabal_nextBlock(&ctx, msg);
msg = (uint8_t*)msg+SHABAL_BLOCKSIZE_B;
length_b -= SHABAL_BLOCKSIZE;
}
shabal_lastBlock(&ctx, msg, length_b);
shabal192_ctx2hash(dest, &ctx);
}
void shabal224(void* dest, void* msg, uint32_t length_b){
shabal_ctx_t ctx;
shabal224_init(&ctx);
while(length_b>=SHABAL_BLOCKSIZE){
shabal_nextBlock(&ctx, msg);
msg = (uint8_t*)msg+SHABAL_BLOCKSIZE_B;
length_b -= SHABAL_BLOCKSIZE;
}
shabal_lastBlock(&ctx, msg, length_b);
shabal224_ctx2hash(dest, &ctx);
}
void shabal256(void* dest, void* msg, uint32_t length_b){
shabal_ctx_t ctx;
shabal256_init(&ctx);
while(length_b>=SHABAL_BLOCKSIZE){
shabal_nextBlock(&ctx, msg);
msg = (uint8_t*)msg+SHABAL_BLOCKSIZE_B;
length_b -= SHABAL_BLOCKSIZE;
}
shabal_lastBlock(&ctx, msg, length_b);
shabal256_ctx2hash(dest, &ctx);
}
void shabal384(void* dest, void* msg, uint32_t length_b){
shabal_ctx_t ctx;
shabal384_init(&ctx);
while(length_b>=SHABAL_BLOCKSIZE){
shabal_nextBlock(&ctx, msg);
msg = (uint8_t*)msg+SHABAL_BLOCKSIZE_B;
length_b -= SHABAL_BLOCKSIZE;
}
shabal_lastBlock(&ctx, msg, length_b);
shabal384_ctx2hash(dest, &ctx);
}
void shabal512(void* dest, void* msg, uint32_t length_b){
shabal_ctx_t ctx;
shabal512_init(&ctx);
while(length_b>=SHABAL_BLOCKSIZE){
shabal_nextBlock(&ctx, msg);
msg = (uint8_t*)msg+SHABAL_BLOCKSIZE_B;
length_b -= SHABAL_BLOCKSIZE;
}
shabal_lastBlock(&ctx, msg, length_b);
shabal512_ctx2hash(dest, &ctx);
}

73
shabal.h Normal file
View File

@ -0,0 +1,73 @@
/* shabal.h */
/*
This file is part of the AVR-Crypto-Lib.
Copyright (C) 2009 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* \file shabal.h
* \author Daniel Otte
* \email daniel.otte@rub.de
* \date 2009-04-17
* \license GPLv3 or later
*
*/
#ifndef SHABAL_H_
#define SHABAL_H_
#include <stdint.h>
#define SHABAL_BLOCKSIZE 512
#define SHABAL_BLOCKSIZE_B ((SHABAL_BLOCKSIZE+7)/8)
#define SHABAL_R 12
#define SHABAL_P 3
typedef struct{
union{
uint64_t w64;
uint32_t w32[2];
} w; /* the counter */
uint32_t a[SHABAL_R];
uint32_t *b;
uint32_t b_buffer[16];
uint32_t *c;
uint32_t c_buffer[16];
}shabal_ctx_t;
void shabal192_init(shabal_ctx_t* ctx);
void shabal224_init(shabal_ctx_t* ctx);
void shabal256_init(shabal_ctx_t* ctx);
void shabal384_init(shabal_ctx_t* ctx);
void shabal512_init(shabal_ctx_t* ctx);
void shabal_nextBlock(shabal_ctx_t* ctx, const void* block);
void shabal_lastBlock(shabal_ctx_t* ctx, const void* block, uint16_t length_b);
void shabal192_ctx2hash(void* dest, const shabal_ctx_t* ctx);
void shabal224_ctx2hash(void* dest, const shabal_ctx_t* ctx);
void shabal256_ctx2hash(void* dest, const shabal_ctx_t* ctx);
void shabal384_ctx2hash(void* dest, const shabal_ctx_t* ctx);
void shabal512_ctx2hash(void* dest, const shabal_ctx_t* ctx);
void shabal192(void* dest, void* msg, uint32_t length_b);
void shabal224(void* dest, void* msg, uint32_t length_b);
void shabal256(void* dest, void* msg, uint32_t length_b);
void shabal384(void* dest, void* msg, uint32_t length_b);
void shabal512(void* dest, void* msg, uint32_t length_b);
#endif /* SHABAL_H_ */

View File

@ -17,6 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* \file skein.c
* \author Daniel Otte
* \email daniel.otte@rub.de
* \date 2009-03-12
@ -27,6 +28,7 @@
#ifndef SKEIN_H_
#define SKEIN_H_
#include <stdint.h>
#include "ubi.h"
#define SKEIN256_BLOCKSIZE UBI256_BLOCKSIZE

View File

@ -40,13 +40,6 @@ char* algo_name = "MD5";
/*****************************************************************************
* additional validation-functions *
*****************************************************************************/
void md5_next_dummy(void* buffer, void* ctx){
md5_nextBlock(ctx, buffer);
}
void md5_last_dummy(void* buffer, uint16_t size_b, void* ctx){
md5_lastBlock(ctx, buffer, size_b);
}
void md5_ctx2hash_dummy(void* buffer, void* ctx){
memcpy(buffer, ctx, 16);
@ -59,8 +52,8 @@ void testrun_nessie_md5(void){
nessie_hash_ctx.ctx_size_B = sizeof(md5_ctx_t);
nessie_hash_ctx.name = algo_name;
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)md5_init;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)md5_next_dummy;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)md5_last_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)md5_nextBlock;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)md5_lastBlock;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)md5_ctx2hash_dummy;
nessie_hash_run();

View File

@ -43,13 +43,6 @@ char* algo_name = "SHA-1";
/*****************************************************************************
* additional validation-functions *
*****************************************************************************/
void sha1_next_dummy(void* buffer, void* ctx){
sha1_nextBlock(ctx, buffer);
}
void sha1_last_dummy(void* buffer, uint16_t size_b, void* ctx){
sha1_lastBlock(ctx, buffer, size_b);
}
void testrun_nessie_sha1(void){
nessie_hash_ctx.hashsize_b = 160;
@ -57,8 +50,8 @@ void testrun_nessie_sha1(void){
nessie_hash_ctx.ctx_size_B = sizeof(sha1_ctx_t);
nessie_hash_ctx.name = algo_name;
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)sha1_init;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)sha1_next_dummy;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)sha1_last_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)sha1_nextBlock;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)sha1_lastBlock;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)sha1_ctx2hash;
nessie_hash_run();

View File

@ -43,13 +43,6 @@ char* algo_name = "SHA-256";
/*****************************************************************************
* additional validation-functions *
*****************************************************************************/
void sha256_next_dummy(void* buffer, void* ctx){
sha256_nextBlock(ctx, buffer);
}
void sha256_last_dummy(void* buffer, uint16_t size_b, void* ctx){
sha256_lastBlock(ctx, buffer, size_b);
}
void testrun_nessie_sha256(void){
nessie_hash_ctx.hashsize_b = 256;
@ -57,8 +50,8 @@ void testrun_nessie_sha256(void){
nessie_hash_ctx.ctx_size_B = sizeof(sha256_ctx_t);
nessie_hash_ctx.name = algo_name;
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)sha256_init;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)sha256_next_dummy;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)sha256_last_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)sha256_nextBlock;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)sha256_lastBlock;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)sha256_ctx2hash;
nessie_hash_run();

320
test_src/main-shabal-test.c Normal file
View File

@ -0,0 +1,320 @@
/* main-shabal-test.c */
/*
This file is part of the AVR-Crypto-Lib.
Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* shabal test-suit
*
*/
#include "config.h"
#include "serial-tools.h"
#include "uart.h"
#include "debug.h"
#include "shabal.h"
#include "cli.h"
#include "hfal_shabal.h"
#include "shavs.h"
#include "nessie_hash_test.h"
#include "performance_test.h"
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
char* algo_name = "Shabal";
/*****************************************************************************
* additional validation-functions *
*****************************************************************************/
void testrun_stdtest_shabal192(void* msg, uint16_t size_b){
uint8_t hash[192/8];
cli_putstr_P(PSTR("\r\n\r\nTest vectors for Shabal (192 bits):"));
cli_putstr_P(PSTR("\r\nmessage:"));
cli_hexdump_block(msg, (size_b+7)/8, 4, 16);
shabal192(hash, msg, size_b);
cli_putstr_P(PSTR("\r\nhash:"));
cli_hexdump_block(hash, 192/8, 4, 16);
}
void testrun_stdtest_shabal224(void* msg, uint16_t size_b){
uint8_t hash[224/8];
cli_putstr_P(PSTR("\r\n\r\nTest vectors for Shabal (224 bits):"));
cli_putstr_P(PSTR("\r\nmessage:"));
cli_hexdump_block(msg, (size_b+7)/8, 4, 16);
shabal224(hash, msg, size_b);
cli_putstr_P(PSTR("\r\nhash:"));
cli_hexdump_block(hash, 224/8, 4, 16);
}
void testrun_stdtest_shabal256(void* msg, uint16_t size_b){
uint8_t hash[256/8];
cli_putstr_P(PSTR("\r\n\r\nTest vectors for Shabal (256 bits):"));
cli_putstr_P(PSTR("\r\nmessage:"));
cli_hexdump_block(msg, (size_b+7)/8, 4, 16);
shabal256(hash, msg, size_b);
cli_putstr_P(PSTR("\r\nhash:"));
cli_hexdump_block(hash, 256/8, 4, 16);
}
void testrun_stdtest_shabal384(void* msg, uint16_t size_b){
uint8_t hash[384/8];
cli_putstr_P(PSTR("\r\n\r\nTest vectors for Shabal (384 bits):"));
cli_putstr_P(PSTR("\r\nmessage:"));
cli_hexdump_block(msg, (size_b+7)/8, 4, 16);
shabal384(hash, msg, size_b);
cli_putstr_P(PSTR("\r\nhash:"));
cli_hexdump_block(hash, 384/8, 4, 16);
}
void testrun_stdtest_shabal512(void* msg, uint16_t size_b){
uint8_t hash[512/8];
cli_putstr_P(PSTR("\r\n\r\nTest vectors for Shabal (512 bits):"));
cli_putstr_P(PSTR("\r\nmessage:"));
cli_hexdump_block(msg, (size_b+7)/8, 4, 16);
shabal512(hash, msg, size_b);
cli_putstr_P(PSTR("\r\nhash:"));
cli_hexdump_block(hash, 512/8, 4, 16);
}
void testrun_stdtest_shabal(void){
uint8_t ma[64];
char* mb= "abcdefghijklmnopqrstuvwxyz-"
"0123456789-"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ-"
"0123456789-"
"abcdefghijklmnopqrstuvwxyz";
memset(ma, 0, 64);
testrun_stdtest_shabal192(ma, 64*8);
testrun_stdtest_shabal192(mb, strlen(mb)*8);
testrun_stdtest_shabal224(ma, 64*8);
testrun_stdtest_shabal224(mb, strlen(mb)*8);
testrun_stdtest_shabal256(ma, 64*8);
testrun_stdtest_shabal256(mb, strlen(mb)*8);
testrun_stdtest_shabal384(ma, 64*8);
testrun_stdtest_shabal384(mb, strlen(mb)*8);
testrun_stdtest_shabal512(ma, 64*8);
testrun_stdtest_shabal512(mb, strlen(mb)*8);
}
void performance_shabal(void){
uint64_t t;
char str[16];
uint8_t data[64];
uint8_t hash[512/8];
shabal_ctx_t ctx;
calibrateTimer();
print_overhead();
memset(data, 0, 64);
startTimer(1);
shabal192_init(&ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx-gen time (192): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal192_init(&ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx-gen time (224): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal192_init(&ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx-gen time (256): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal192_init(&ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx-gen time (384): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal192_init(&ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx-gen time (512): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal_nextBlock(&ctx, data);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tone-block time: "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal_lastBlock(&ctx, data, 0);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tlast block time: "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal192_ctx2hash(hash, &ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx2hash time (192): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal224_ctx2hash(hash, &ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx2hash time (224): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal256_ctx2hash(hash, &ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx2hash time (256): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal384_ctx2hash(hash, &ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx2hash time (384): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
startTimer(1);
shabal512_ctx2hash(hash, &ctx);
t = stopTimer();
cli_putstr_P(PSTR("\r\n\tctx2hash time (512): "));
ultoa((unsigned long)t, str, 10);
cli_putstr(str);
cli_putstr_P(PSTR("\r\n"));
}
void testrun_nessie_shabal(void){
nessie_hash_ctx.hashsize_b = 192;
nessie_hash_ctx.blocksize_B = 512/8;
nessie_hash_ctx.ctx_size_B = sizeof(shabal_ctx_t);
nessie_hash_ctx.name = "Shabal-192";
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)shabal192_init;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)shabal_nextBlock;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)shabal_lastBlock;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)shabal192_ctx2hash;
nessie_hash_run();
nessie_hash_ctx.hashsize_b = 224;
nessie_hash_ctx.name = "Shabal-224";
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)shabal224_init;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)shabal224_ctx2hash;
nessie_hash_run();
nessie_hash_ctx.hashsize_b = 256;
nessie_hash_ctx.name = "Shabal-256";
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)shabal256_init;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)shabal256_ctx2hash;
nessie_hash_run();
nessie_hash_ctx.hashsize_b = 384;
nessie_hash_ctx.name = "Shabal-384";
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)shabal384_init;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)shabal384_ctx2hash;
nessie_hash_run();
nessie_hash_ctx.hashsize_b = 512;
nessie_hash_ctx.name = "Shabal-512";
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)shabal512_init;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)shabal512_ctx2hash;
nessie_hash_run();
}
/*****************************************************************************
* main *
*****************************************************************************/
const hfdesc_t* algolist[] PROGMEM = {
(hfdesc_t*)&shabal192_desc,
(hfdesc_t*)&shabal224_desc,
(hfdesc_t*)&shabal256_desc,
(hfdesc_t*)&shabal384_desc,
(hfdesc_t*)&shabal512_desc,
NULL
};
const char nessie_str[] PROGMEM = "nessie";
const char test_str[] PROGMEM = "test";
const char ztest_str[] PROGMEM = "zerotest";
const char performance_str[] PROGMEM = "performance";
const char echo_str[] PROGMEM = "echo";
const char shavs_list_str[] PROGMEM = "shavs_list";
const char shavs_set_str[] PROGMEM = "shavs_set";
const char shavs_test1_str[] PROGMEM = "shavs_test1";
cmdlist_entry_t cmdlist[] PROGMEM = {
{ nessie_str, NULL, testrun_nessie_shabal},
{ test_str, NULL, testrun_stdtest_shabal},
{ performance_str, NULL, performance_shabal},
{ shavs_list_str, NULL, shavs_listalgos},
{ shavs_set_str, (void*)1, (void_fpt)shavs_setalgo},
{ shavs_test1_str, NULL, shavs_test1},
{ echo_str, (void*)1, (void_fpt)echo_ctrl},
{ NULL, NULL, NULL}
};
int main (void){
DEBUG_INIT();
cli_rx = uart_getc;
cli_tx = uart_putc;
shavs_algolist=(hfdesc_t**)algolist;
shavs_algo=(hfdesc_t*)&shabal256_desc;
for(;;){
cli_putstr_P(PSTR("\r\n\r\nCrypto-VS ("));
cli_putstr(algo_name);
cli_putstr_P(PSTR("; "));
cli_putstr(__DATE__);
cli_putstr_P(PSTR(" "));
cli_putstr(__TIME__);
cli_putstr_P(PSTR(")\r\nloaded and running\r\n"));
cmd_interface(cmdlist);
}
}

View File

@ -17,7 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* threefish test-suit
* skein test-suit
*
*/
@ -214,7 +214,7 @@ 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_noekeon},
// { nessie_str, NULL, testrun_nessie_skein},
{ test_str, NULL, testrun_stdtest_skein},
{ ztest_str, (void*)1, (void_fpt)zeromsg_test_common},
{ shavs_list_str, NULL, shavs_listalgos},

View File

@ -46,14 +46,6 @@ void twister224_init_dummy(void* ctx){
twister_small_init(ctx, 224);
}
void twister224_next_dummy(void* buffer, void* ctx){
twister_small_nextBlock(ctx, buffer);
}
void twister224_last_dummy(void* buffer, uint16_t size_b, void* ctx){
twister_small_lastBlock(ctx, buffer, size_b);
}
void twister224_ctx2hash_dummy(void* buffer, void* ctx){
twister_small_ctx2hash(buffer, ctx, 224);
}
@ -65,8 +57,8 @@ void testrun_nessie_twister224(void){
nessie_hash_ctx.ctx_size_B = sizeof(twister_state_t);
nessie_hash_ctx.name = algo_name;
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)twister224_init_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)twister224_next_dummy;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)twister224_last_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)twister_small_nextBlock;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)twister_small_lastBlock;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)twister224_ctx2hash_dummy;
nessie_hash_run();

View File

@ -44,14 +44,6 @@ void twister256_init_dummy(void* ctx){
twister_small_init(ctx, 256);
}
void twister256_next_dummy(void* buffer, void* ctx){
twister_small_nextBlock(ctx, buffer);
}
void twister256_last_dummy(void* buffer, uint16_t size_b, void* ctx){
twister_small_lastBlock(ctx, buffer, size_b);
}
void twister256_ctx2hash_dummy(void* buffer, void* ctx){
twister_small_ctx2hash(buffer, ctx, 256);
}
@ -63,8 +55,8 @@ void testrun_nessie_twister256(void){
nessie_hash_ctx.ctx_size_B = sizeof(twister_state_t);
nessie_hash_ctx.name = algo_name;
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)twister256_init_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)twister256_next_dummy;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)twister256_last_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)twister_small_nextBlock;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)twister_small_lastBlock;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)twister256_ctx2hash_dummy;
nessie_hash_run();

View File

@ -44,14 +44,6 @@ void twister384_init_dummy(void* ctx){
twister_big_init(ctx, 384);
}
void twister384_next_dummy(void* buffer, void* ctx){
twister_big_nextBlock(ctx, buffer);
}
void twister384_last_dummy(void* buffer, uint16_t size_b, void* ctx){
twister_big_lastBlock(ctx, buffer, size_b);
}
void twister384_ctx2hash_dummy(void* buffer, void* ctx){
twister_big_ctx2hash(buffer, ctx, 384);
}
@ -63,8 +55,8 @@ void testrun_nessie_twister384(void){
nessie_hash_ctx.ctx_size_B = sizeof(twister_big_ctx_t);
nessie_hash_ctx.name = algo_name;
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)twister384_init_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)twister384_next_dummy;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)twister384_last_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)twister_big_nextBlock;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)twister_big_lastBlock;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)twister384_ctx2hash_dummy;
nessie_hash_run();

View File

@ -44,14 +44,6 @@ void twister512_init_dummy(void* ctx){
twister_big_init(ctx, 512);
}
void twister512_next_dummy(void* buffer, void* ctx){
twister_big_nextBlock(ctx, buffer);
}
void twister512_last_dummy(void* buffer, uint16_t size_b, void* ctx){
twister_big_lastBlock(ctx, buffer, size_b);
}
void twister512_ctx2hash_dummy(void* buffer, void* ctx){
twister_big_ctx2hash(buffer, ctx, 512);
}
@ -63,8 +55,8 @@ void testrun_nessie_twister512(void){
nessie_hash_ctx.ctx_size_B = sizeof(twister_big_ctx_t);
nessie_hash_ctx.name = algo_name;
nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)twister512_init_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)twister512_next_dummy;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)twister512_last_dummy;
nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)twister_big_nextBlock;
nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)twister_big_lastBlock;
nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)twister512_ctx2hash_dummy;
nessie_hash_run();

View File

@ -49,12 +49,12 @@ void ascii_hash_P(PGM_P data, PGM_P desc){
sl = strlen_P(data);
while(sl>=BLOCKSIZE_B){
memcpy_P(buffer, data, BLOCKSIZE_B);
nessie_hash_ctx.hash_next(buffer, ctx);
nessie_hash_ctx.hash_next(ctx, buffer);
data += BLOCKSIZE_B;
sl -= BLOCKSIZE_B;
}
memcpy_P(buffer, data, sl);
nessie_hash_ctx.hash_last(buffer, sl*8, ctx);
nessie_hash_ctx.hash_last(ctx, buffer, sl*8);
nessie_hash_ctx.hash_conv(hash, ctx);
nessie_print_item("hash", hash, (nessie_hash_ctx.hashsize_b+7)/8);
}
@ -74,11 +74,11 @@ void amillion_hash(void){
memset(block, 'a', nessie_hash_ctx.blocksize_B);
nessie_hash_ctx.hash_init(ctx);
while(n>=nessie_hash_ctx.blocksize_B){
nessie_hash_ctx.hash_next(block, ctx);
nessie_hash_ctx.hash_next(ctx, block);
n -= nessie_hash_ctx.blocksize_B;
NESSIE_SEND_ALIVE_A(i++);
}
nessie_hash_ctx.hash_last(block, n*8, ctx);
nessie_hash_ctx.hash_last(ctx, block, n*8);
nessie_hash_ctx.hash_conv(hash, ctx);
nessie_print_item("hash", hash, (nessie_hash_ctx.hashsize_b+7)/8);
}
@ -105,10 +105,10 @@ void zero_hash(uint16_t n){
memset(block, 0, nessie_hash_ctx.blocksize_B);
nessie_hash_ctx.hash_init(ctx);
while(n>=nessie_hash_ctx.blocksize_B*8){
nessie_hash_ctx.hash_next(block, ctx);
nessie_hash_ctx.hash_next(ctx, block);
n -= nessie_hash_ctx.blocksize_B*8;
}
nessie_hash_ctx.hash_last(block, n, ctx);
nessie_hash_ctx.hash_last(ctx, block, n);
nessie_hash_ctx.hash_conv(hash, ctx);
nessie_print_item("hash", hash, (nessie_hash_ctx.hashsize_b+7)/8);
}
@ -147,10 +147,10 @@ void one_in512_hash(uint16_t pos){
block[pos>>3] = 0x80>>(pos&0x7);
nessie_hash_ctx.hash_init(ctx);
while(n>=nessie_hash_ctx.blocksize_B*8){
nessie_hash_ctx.hash_next(block, ctx);
nessie_hash_ctx.hash_next(ctx, block);
n -= nessie_hash_ctx.blocksize_B*8;
}
nessie_hash_ctx.hash_last(block, n, ctx);
nessie_hash_ctx.hash_last(ctx, block, n);
nessie_hash_ctx.hash_conv(hash, ctx);
nessie_print_item("hash", hash, (nessie_hash_ctx.hashsize_b+7)/8);
}
@ -179,15 +179,15 @@ void tv4_hash(void){
nessie_hash_ctx.hash_init(ctx);
while(n>=nessie_hash_ctx.blocksize_B*8){
nessie_hash_ctx.hash_next(block, ctx);
nessie_hash_ctx.hash_next(ctx, block);
n -= nessie_hash_ctx.blocksize_B*8;
}
nessie_hash_ctx.hash_last(block, n, ctx);
nessie_hash_ctx.hash_last(ctx, block, n);
nessie_hash_ctx.hash_conv(hash, ctx);
nessie_print_item("hash", hash, (nessie_hash_ctx.hashsize_b+7)/8);
for(i=1; i<100000L; ++i){ /* this assumes BLOCKSIZE >= HASHSIZE */
nessie_hash_ctx.hash_init(ctx);
nessie_hash_ctx.hash_last(hash, nessie_hash_ctx.hashsize_b, ctx);
nessie_hash_ctx.hash_last(ctx, hash, nessie_hash_ctx.hashsize_b);
nessie_hash_ctx.hash_conv(hash, ctx);
NESSIE_SEND_ALIVE_A(i);
}

View File

@ -22,8 +22,8 @@
#include <stdint.h>
typedef void (*nessie_hash_init_fpt)(void* ctx);
typedef void (*nessie_hash_next_fpt)(void* buffer, void* ctx);
typedef void (*nessie_hash_last_fpt)(void* buffer, uint16_t size_b, void* ctx);
typedef void (*nessie_hash_next_fpt)(void* ctx, const void* buffer);
typedef void (*nessie_hash_last_fpt)(void* ctx, const void* buffer, uint16_t size_b);
typedef void (*nessie_hash_conv_fpt)(void* buffer, void* ctx);

View File

@ -0,0 +1,7 @@
# ExtremelyLongMsgKAT_224.txt
# Algorithm Name: SHABAL
# Principal Submitter: Saphir project represented by Jean-Francois Misarsky
Repeat = 16777216
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
MD = 5F929B80783CC222C1DE369265F393B514F276C3843BCE82E3CBBDC6

View File

@ -0,0 +1,7 @@
# ExtremelyLongMsgKAT_256.txt
# Algorithm Name: SHABAL
# Principal Submitter: Saphir project represented by Jean-Francois Misarsky
Repeat = 16777216
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
MD = D27AC13B0828E3FD0045BEF5C2CC704746B004844CC93772E36C15A1C4A42151

View File

@ -0,0 +1,7 @@
# ExtremelyLongMsgKAT_384.txt
# Algorithm Name: SHABAL
# Principal Submitter: Saphir project represented by Jean-Francois Misarsky
Repeat = 16777216
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
MD = 9639132B17F94A9EDFEE105F6DDE3A5B19EB7335DA7FB1FC4BEB11DCFE8DDA980FADDBB9E3959535A9FF5EADC660F96B

View File

@ -0,0 +1,7 @@
# ExtremelyLongMsgKAT_512.txt
# Algorithm Name: SHABAL
# Principal Submitter: Saphir project represented by Jean-Francois Misarsky
Repeat = 16777216
Text = abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
MD = B837F262430ED4B21D044D3159135D34622E40669CF7AD6CFD76E5F9902F22F2BE4E81DA8BEB19156C9F734097606120F76A046B0260DA3DA518B88418788019

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,305 @@
# MonteCarlo_224.txt
# Algorithm Name: SHABAL
# Principal Submitter: Saphir project represented by Jean-Francois Misarsky
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
j = 0
MD = BA59284D41A49EEA2AECBB662B908F7C0AFFAA365A37EEC414CFF316
j = 1
MD = CF45B1EB2B02D7BC8FE5AA0AD11AF94B799AA2F63C9D5A1F6594C8D3
j = 2
MD = 8BC173BB37D77B1B3B76B02F68E865802E87BB60E6DCC42D76D0CE5A
j = 3
MD = 5C4E9B27D20F1D733763B9B47EF51A1BC34D0070DED595217EA44665
j = 4
MD = 1BBA2606B2E3E44F608B09BD7AB89D6417154E17121C7BA6664F0E84
j = 5
MD = BD8D608C8572C30B580C1F4A0ED025656E8532F6323C473A40550E52
j = 6
MD = B8B8F6B77D09CA131F202C51A47AADB2F2D5B29C729255935C759CA5
j = 7
MD = 8296D7248523A731DB659E9246598F4C7E5B9C7B9CB1D6C83144D0F2
j = 8
MD = 422F7777DD8EB72838F01BD153C0029785BFCFD5DB62B7B673E3CA2F
j = 9
MD = 4A0DE053BB601F0022FA200D6E1F6A0EA32E246C3465F8BA46137D57
j = 10
MD = B1B06F0C73348C8CFFF740AADD541301126F5A9D7F16E617AD922DE1
j = 11
MD = 96F98B0D59FD9BF4AF9CA2BDE79C674FA778A64A221F88B90C2653A0
j = 12
MD = 1E4A0BB0E72D7B4AFB43F97D2B8CDB9A9D6342A60BB162E31A3A302B
j = 13
MD = A61F4458F1C257D31DBCB8D180773792417BE8B1480816725C62E508
j = 14
MD = 42F2D8628219D598DC06F257289B1CCC76B07DE8148201F9601BAB3F
j = 15
MD = 40637DF1715495DD8316A0B4F714355188C0FBAA5FE17361E4E6D4B4
j = 16
MD = A2486708C8CA07FD99C8DC37831833C0209945092B12D8286CC4EA1A
j = 17
MD = B5BACC13D375BB78A835073C95AE159309C9DD322CCE2D3F71DA554D
j = 18
MD = 9C78EA272C5B359EE23DE606F01169125C076923602367AEE3C1622D
j = 19
MD = 0F295BAB2C62C824BEF6592411ABE634D7489167A4EDCBB4F2C100F9
j = 20
MD = 386D8AC8B64ED872579314698382F134BB040270C6E51CB1029D4B25
j = 21
MD = B397F3CC994C08AECE968B062DD96ED67048DA5DE76D154467E92D07
j = 22
MD = 876D1536F5A431CCBAAAE9A9A4EBC2741D9F968A13878A08D8DF7570
j = 23
MD = 1409F845A3DA8B386EAE341B4694F587D1B2D5F4CE18D846A1303C0C
j = 24
MD = 58F3E58891EE5695EE40724C5145BD3524D629AF4596C4444B333D18
j = 25
MD = 513A765D3FF72579CB8C2E79ECEC88CD4508650D39E20B037D9C44AE
j = 26
MD = B545067937900F50BB213CBD5EF56DECD04D9B76443CE7578C9FAC10
j = 27
MD = 657B2861979B54DD95BCBBBDEB40BC4836A6847D0AC8638F9A70CB0F
j = 28
MD = 941C9B8DD76B54D1F682901366301D25ACE28491AAFA4B41DD8528CE
j = 29
MD = 1E8772114AB19144C683012E405365E7B9CA541A720360B388DF4782
j = 30
MD = 3FE3615C3DEA1EE02DD397EAB4C1C544F8CC0266F03E1B62E6778DC6
j = 31
MD = 4B7162AE50E27F25B8C9A65387B4B497BCC08CE6F38040135FDC4B9D
j = 32
MD = 6A31FDA84DE450EED2A5D75D666E03041A228AD698D2D375F69CA44B
j = 33
MD = 1ABF24CBFBD4CD6AC3AAA391D0C2BC433528F337A2C2DF05FC26E801
j = 34
MD = 68B809F60BCF9BE99058F9A3D4917D1FD20FD30F67687060757FFC8A
j = 35
MD = F02114076377EED78C1B685B3DE927285843D34981A15FFB2CC22018
j = 36
MD = EC8C39711F3EBACD3B3D2219CD0C2EBC23797872732C0CBF378ADAA3
j = 37
MD = 55475CB1A15DB6035FB29613CC9857AF138F712999554120A99E90DB
j = 38
MD = 8482D8B24C7ECB1C1B7055421BC2AF2EE61B0FE269BC3C86E32C6F62
j = 39
MD = 6A34E9B7AADD15D15487AD3A97A93809A1A5282E52F340F3594ED8FF
j = 40
MD = 8F9F3A9461FAA71CAF2A6ADE18AC4BE371EF3FCE4CDAA6C69961E170
j = 41
MD = 9701504FA1F8F9A26F059131FBC1CF9FB15692D391E557248919F1FF
j = 42
MD = 6DB443DFAB1452AA2FA11806E0A684B8A91000FF4DEC09BD130BA3CD
j = 43
MD = 8A3D72572C7302F77EC6A2DBAC8778C82657C085C877C8D1A4ABC95C
j = 44
MD = 798351E5F0E72A01F32F1FCC80FE3BE623D3E5E96489ED560D66A5A0
j = 45
MD = DA7B4F8EECD3E9148A9317272B29F20D334E106200022F22BBA18E61
j = 46
MD = 901A38E9E933EE76F183C4386B049C9E408120FA62EDFE77AB5CF238
j = 47
MD = AAF11C4F8A5A8DBCA756732B08C6A30F24B8FAB40C252AE36EB7F6DC
j = 48
MD = 9CFAE43551AD3D43567F5568530D517A74C74C3B3C4289BC33969E22
j = 49
MD = 2ED1E37E8CAF9ABF77E53C42656A5C9D016A1757CA84714AF2ED7A40
j = 50
MD = E60040B5937151EF30B2D1B040081D571FE38BD12A78993054D3C8D7
j = 51
MD = CD91DB9C49B5A40FCAB89DECA88C8168CA463B206402F832B780E6DF
j = 52
MD = D371B3D5A12E5537DDB54F136B946E016A437514B4B5C1083DD67A61
j = 53
MD = DD1F273EA6FC8F7C8203EA8BCF18FDF3F253C4BB7DBDD9FCF1947E6B
j = 54
MD = 6F15F09F9FC519A479282E9EFA2D24A42DD581CA84A63D297AE8BBE3
j = 55
MD = E179FFC6BB630EBC5EB2D8D6FFAA966EA1E8F8D9E14D161645706DA1
j = 56
MD = 21E24E64AE3AF4C28A63C8A9C16CFB2A294A17EB008D24F8FCFA1562
j = 57
MD = E9761DBB326570879409247A8B9B1789C1930EB56E0DF096E7E54B95
j = 58
MD = DD398B2592BECEF1FF36C6D956A8E5499122CE838775B437FD3529E0
j = 59
MD = 469328DBD20120F4D7A0F5C7D6D7761D1100949B3813A5C73617A358
j = 60
MD = ED0CCB216AC70D50AC8AF0874C48EEB68FDEBFAC2A64DB87D3ACAB56
j = 61
MD = 53D2C7CC1D34F02E49DEB932D57BA41A0CD2878079F3FF3464F6CD60
j = 62
MD = CFFDAF2ECED7C418EC7532E1DD3DDE180F352842E26C21A52FEC67C6
j = 63
MD = B11A71CF524DEAB2C7AECB9966DEC2D79855A053AC4D12C1D6AC137F
j = 64
MD = 1E1D5BB9760656606BAF2C9F25F2D9729A4D54B3F20623A0CDBB87FD
j = 65
MD = FE1C3AB046D688E271219878119761B415974B0B238E928BC7779B26
j = 66
MD = CBB604E68CCA625FC06A1421715636EA38DCD31543049EC730740D51
j = 67
MD = 17269F841B586F3145C86D90F7E7BAFC69AC02A93676DEFCEBE00081
j = 68
MD = 63EAAB103227149C1FB73307F90FA04736F30C6B7AC0C786887BD34A
j = 69
MD = 33A7DA9127471611CCC0DF4F3ECC8FBEF729D7269182B5B74BC4763F
j = 70
MD = 8AD18E34B17E8858E1503FABFC450F65A6B94A53FC7284760434F761
j = 71
MD = BFA86742495564443CC3C14DD530116E83E740D7C36188BE9A75A2FA
j = 72
MD = E8BD0117035710B306E13F3D428D3CE0B8DAA6B1A5E99C139BB01D55
j = 73
MD = 270B325BDF2DED6E86E105E7A4FBB36BA3CE8C355E048E8E4663572A
j = 74
MD = 26B02C4F4EF9B971DB1CF25B6DD6101CD7E447A533BFB4487B2526BC
j = 75
MD = 10DCF62DA968553F9931329E9C5EA1B1F278112BAB3DD0C303D0EF3F
j = 76
MD = 138DD0069EACAF4906E060643E7A476F3808544620CF11DED58E9C55
j = 77
MD = 65A31919125B26A788D39E093D90A632F02686CCF886234466B9A2B5
j = 78
MD = 44E3B9BDDDF844E8FF4C5FBB710F5787EA74F58E715C8A12994E4574
j = 79
MD = 1EC9BD9D20CDB38AD0038A1A4368D3A9BCF0A64BE3BFF35898BA2753
j = 80
MD = 494CD2FE3B15DBB69E9F77675E0765184A5302542F201530F3ECE582
j = 81
MD = 8658CA09D4C10F768172C15D841773B6DECAC6E58439C51124201D59
j = 82
MD = B9A05FB377DFC7CBFDBFB195DE7C2223A69C770A661BFAF20D783C44
j = 83
MD = 2D84AA1180DCEF3F1011F13AEDDCEC44BAD0B286A44610CEFD261926
j = 84
MD = BDE87AD90AB3F5ED50C0EDFBE322D6BD509DAEEAFF68A9E0338DD649
j = 85
MD = B9FE9871533E0B2FDD93B7FA80FD8A70D9BF5895BC344E676BCB4EF2
j = 86
MD = E3442A7B016B816F51C8F05796D4D632113D880A80B7473057F72CC1
j = 87
MD = 67208590A4F62457D150FF29284DD1B936DC64AD900ADFBE92F5D5C4
j = 88
MD = 3FB888989082A5825B9D37F94A4744A43511E0FC837C370A247D0268
j = 89
MD = B25654188FA44944EFF80BDBE43E289F152CFA895D15CDF997B6211C
j = 90
MD = 39E8310E01637983313D59E14A4154818070AC90A7583988619E1124
j = 91
MD = 9CB386E71F92BD10479B0C10A18664A5851FA678CC34B83F184FB9A6
j = 92
MD = 03229F729A16B54F23E83DAB206124783566F9E6810A4AC8FB36DEA0
j = 93
MD = A1E905FE4DF7E05FECADFD145F930BA389A57904B4D4DF77E009850E
j = 94
MD = C9D86262724081898A822ED32BB5B016DDADFF52130497E04310D43A
j = 95
MD = D9A89A4846D8B48BF9EF13C125266E989DA41159BAC752CE59E273B9
j = 96
MD = 29523E07A826F98493FA81367104730BB230B31FC72EFB7E7C08F88E
j = 97
MD = F4411DE78D4586E7EF3FFB26EA5D2FB9A471D612D55B85A7AB414E13
j = 98
MD = BEB1480360D382D04918E3BFF843C89A35F424FCBFF4B32A4C88154E
j = 99
MD = 670DE450149BDB08D16FBB007BF798C159F1CB46B5873995A6F7E420

View File

@ -0,0 +1,305 @@
# MonteCarlo_256.txt
# Algorithm Name: SHABAL
# Principal Submitter: Saphir project represented by Jean-Francois Misarsky
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
j = 0
MD = 9C4C758485FEC69892B1D4EDA630E072199FFE6B2743D5441A3A4407056183D6
j = 1
MD = 3EC6A8205F0059D79942D02E9E9D79C1DFC9590953AD3B6F97BF6EEA7E212F22
j = 2
MD = C2987D001656014DDD2299BA65D04FC6268863F2BF000D5C6FCCC225DB6EEA05
j = 3
MD = 4C880142B3CA4AB82088C1E146C3A5CE1DB57B977CC284B8BE16C6D57E8B4279
j = 4
MD = ADB2D735FF6266509B08AAA90933CDBA7971EA5824EBDB0BC6EF3AC19F3E7405
j = 5
MD = C43E8913B932E3E8FC6BAF80500C35824B1ED1FA57B46009D347C5C6A4C98A50
j = 6
MD = 1F98D54F744089DA7964129C420A39D5F9BD33660BC34251D8DB8564995BC2FC
j = 7
MD = 97A450ADCD4BC68A914E2164B06B74218030258243FC4990C21AA136261D53D8
j = 8
MD = 2F8EDE72614250B4EA86EEA0C88B80717BE3D34DF6491FE374D2E68E1C3369E7
j = 9
MD = 15B6182EE1A967DCD2B67CDA4F656C4518D570CBDA0812D23DC0E24A0DBE69F9
j = 10
MD = 7B97510DE9D13E7C7B385BCBDB38059BAAF014D87104024D2A3A039343838055
j = 11
MD = AA4FEF6E04387C7C8D07517753EBE2407345F1F81A21C2EE7E27CBE096A4C43B
j = 12
MD = A4F6414891D9DC7BC90C79A1D6F36B68522672E62D77EBD84AE625593715DC97
j = 13
MD = 542BF6F7D8B9775F55DCFC84313F736C5585AAB53295927F10F8D5592484C1F7
j = 14
MD = D853F48AA3793B2D23024C0A2FA3712399D5E94EB20AE086D680E2164A19CB33
j = 15
MD = EF6AC782B658BCAC94587A9F1E9C6BC8F59C214BB3C876CAF99CA5B7088908E1
j = 16
MD = 43F2A1E885275BDE0A9362F85806296AACAE405CE76EE30AF6F94B24B250C1DA
j = 17
MD = CACED03D38EB0830400D865F5A41A5F6F0325232053B5CA42746ADA1A36F6E7D
j = 18
MD = 16528EA74263B9940F1E7355F36AEE370FE35D96502046537F72F92D80A9A0AE
j = 19
MD = 3CFE8F7D104B5C7A477B59ED5AAF07D5535C2D7EBF27321B23E5EAB81BCD1D32
j = 20
MD = EBA294E10F9428B6A73DC0EF2618CB9F718E641FCD11462D80C4D5F3EE2781F7
j = 21
MD = 09E4A16C7A6C0EC24946665CAE44ED70A6B08A6428DEBA9380604925BAE243CF
j = 22
MD = A15593972AECCB8738C7F55F9D5ACB389227E43FCE8068692D6C20F0847108DE
j = 23
MD = D130FBE25747313E56D43A70773A4DA4B4938E697F06E60FA1212B4FC190667A
j = 24
MD = A0105440F583C06C8FCDC02DFF119930A4516869D0E65839DA16AF29496B365E
j = 25
MD = 5A9DCC29A33BCEABE600F51C7BE67953F7893EB567501AF36E29BFC379A60430
j = 26
MD = 0C74527EB03D146385677A554BC38C25B8893A121F0F1452AEFF6016E28B1FA6
j = 27
MD = C818D8E4FF98582F27D21E395021597B37BA16C719CF5F6D7F84A6ACBFFA2956
j = 28
MD = 55F20FFD3A29D166EC787B54F259C24C1D0D5A3B24B2B0B4820F657FFD01D3F8
j = 29
MD = 925A7DC4CF2F7C91E52CADE73A379D57DC8651C13DCCE8C264D55D633A9C46E2
j = 30
MD = 626295CFFD1506BF4B2D667A5D668A2A3A13EB9904EF77DCB39171D43B2926AC
j = 31
MD = 9C0226F5D266EB45F8B02AEC50F2D590A6E724F91019321C0EBE7D18605E5030
j = 32
MD = BB6C07CEECA499D19A85B9DA39D880AFFF3BA4320EDB844BFDF1DCC1A5516B9C
j = 33
MD = 8E12E345A36748F78387C80B29BF3332A4187C8E8EE07CA52FECE21522FE64E1
j = 34
MD = CF70514BE86738FAE6C61705FAFCDA0240119ACE4D6183E4DB87E6AE8CE67B93
j = 35
MD = 7BBCECB07950E3913234E4C422B525D702E88D42E63290CE0C576EA82B3F13B1
j = 36
MD = 111DB9B4D76B31E76738AE6F4C1218355EBCE100F29D70A417B67A02C413B119
j = 37
MD = 658177EF072DCE67133800360A44EEE9BC0471CBF089D3635585BDF43D20FCB9
j = 38
MD = F2C08FC1C790F22F49E904A3620A04C339CA7A23989C8990F173604FF6CE5F03
j = 39
MD = F0ACC2D16FE0815D80907CC1211027C7A837C7ADF321285A9073416C50A9F9E6
j = 40
MD = 4731AC6C6ECB137C172AA31F358D1F83BEBE6D8F38FB94B90D8AE90E8C5CABA6
j = 41
MD = C669082D64B3389A1D07E3F480803E33212B21C9E1104D1D29BB65991639EBEB
j = 42
MD = 6DF3E503D4084C755E6FC77E4DB9D24836CC547F5C3AE3AC00EC16AA78DB46FC
j = 43
MD = 26839DAF6BE1C50F2B372BE09A1ABB3E9840C26683089FCACA546CDF89FB61DB
j = 44
MD = 397A215603653E35FFCD2FBA1659583B2B8E585C9548AD3883AEC1FD28062CCC
j = 45
MD = 211844D3DCCDC056AE55624DF4C30CCBCB9FBAAD07E222BAA3557E275BDF6803
j = 46
MD = 72A44E2C2780AE4CCA85693DBBC2045F8E914C245E72582380B7F727ECBD4907
j = 47
MD = 9625E683A2A4A278A3D43005FD582C6E6D361E3D166C104903ED562E41EFE5C1
j = 48
MD = 7484E7C341CE6EFE290462BF6E243890DBE4C3835FC4B27EE8D0BDA8CD03B8AC
j = 49
MD = 69F28F9CECA7802E9ABE1B0D2349411094B413B75BDE3BCC87C9F029565AFDAC
j = 50
MD = DE3C282AEACEBCF4DB54FEFDE004229F97754D51E1EE23A480F6487A4CB737C8
j = 51
MD = 85D8878CBA0BA0B79E16DA8E8FFF03F2F00BCE16B1253C69F482CC87F5DB1AAF
j = 52
MD = 0822EBF2D660F26DDAB7274F9BBC9D8856D016C931C1C79F38879E0C1F26070F
j = 53
MD = 11401BAF8FA7F0440F6F4AD2A8AD5B2D897ACDAC84CDF968C1D50343ED71B529
j = 54
MD = 944D8F826A86FC1A7873AC10F80ADABF0D8E3891E568BF57FEF75E1E8A431DCC
j = 55
MD = 95ADD9FCD05B1CE169FA5BDA7360304533ED01E350B94CBEA379892AB99D8046
j = 56
MD = 85F3497DEEA5891F80120C7695D450F11741E96114DF65BB8ADF7C55AE875E11
j = 57
MD = 2CCA967EA50E854AD2D0B5A40F2F382A21D0BFF5629F9EB8247EF81F66FC0ADD
j = 58
MD = DFCEE128E7408A0CE90D025F26A5BC70924B15800DA38ECCFB6452A75A8613D8
j = 59
MD = 919A8CE7A43F6CB0D065F75754D0ABD7178363BDE4D3265B5D76EF0FA01541B2
j = 60
MD = FA8E96E4241F97E10636761F392C1D1E4290CF3431C44F79F26AD2C60BF16BA4
j = 61
MD = 5949A7227F2ED36C076FD10C2727EFC458B3840E9A1A2E7EC9FC4249827E841D
j = 62
MD = 3B08A1A672CD9F0E194367C6388706E537501A12704EB623C48C30D1423309AE
j = 63
MD = BFE5D220839B23CEBC753D74A450D2554E51BC5E98C8CB3EC8FBB0F804DAE769
j = 64
MD = C75E2A0492F2E6893E42C6F8FBCA2F7CD1554C47FBF297DFAC23894DC74C75FA
j = 65
MD = EA73D10A3C1DECE862098984DA7AE3C4D8C802C6279C82AF5EFB2CEBA18D47A9
j = 66
MD = C3170F6679BE3DABE15079C8915A664D89DFABAB9DBDE2D279CAB47B6A58127C
j = 67
MD = 46D3ED6B65F145717D1157FEDD6F003C0C21532CF1DE66F920531E5F669D3146
j = 68
MD = 3FF1F9BE6BFB1C8839E7B7349BB301CD1DCFE3C126120F4ADF117D0D0D173B8B
j = 69
MD = 658CF7DB5E9E3BFA113201F9994D01AAD981864858E64736831F1001D10E985E
j = 70
MD = EBD5E48A67FBC2018DD7CA3C7B7DC54CB60640F2F31C2F7B7DD865C78D2B779E
j = 71
MD = 6BEECFB62318273098A17462EE5BCF3E754046BE2F8B388A56E5711403FFF4AA
j = 72
MD = DCDAA7AC5C220F9679FD15DE3323671A70DB0B5F74314FD90C5B0B30DE801A0C
j = 73
MD = 35D000B7A1956E8003BECACA97295CCDC11B058A73518C4E6A9F2CF90F911D91
j = 74
MD = 748FA83941DCDC9D7AEA74949D70DECA036E8D0339B2E36745A6C651064CD94E
j = 75
MD = 2EFD60CBF68E4E296D10170DDB9ABB2063A50FD91E4B95D48A66CC9B03012BAF
j = 76
MD = 34F93DBA8540A84BF090CC79E7B594C29B0DE9A46A5F41D6C1D21F4C800192EA
j = 77
MD = 6CEEE2445AA2725E648F946D0F3305CC511434DCF565C20E7DD3F8B4B75AE194
j = 78
MD = A881739101A1061E65C9D69A07AF3F4EEAA49F5DF7D7C3557720D22A6F37BA25
j = 79
MD = A6C338338178A3586043137F8C50F104372BF00FE1B2C01C2FD461E52D854B2A
j = 80
MD = CF4583804B8A42BA55347F64A9E0127F53643FC3CCD27D6CC465C7CC83577B99
j = 81
MD = B098FD4BD59B79073E0AD5A10046E8EE5C0883BC4805DF58DE5D64934A67679C
j = 82
MD = 5BAE3A0BDD02DA8E84B8B9D43D7AE0D13D877B088D89255BCCA70C3FE7CDFBE9
j = 83
MD = 5AF28FC6FA8B9CC345B14B5F7F16174C542F7BC3082E533D2AF4BF1B8364BA7D
j = 84
MD = 61117DEEF56E522B6D79C8E1E07886077379404BDD625DD085BA874AFCF0EB88
j = 85
MD = F019903009C45E50551A6D9A5960D4CD712519708404BFEA41F886780FE6047E
j = 86
MD = 84AC69A106266C35E4C104465817F54F9C5529A9CC775BE1A2CBDA3D09BFC0AE
j = 87
MD = F4EAC7E58CD4B0DDBDA3347288070F54D01262A5C055DFAE2A035A63C41DCF71
j = 88
MD = 110A058CC02C6945F3E625406EB97E313FFE1B4E49A7D46A1146F18091C1DEB2
j = 89
MD = 5DF66A014680D20FF3DB7723B80290A37627867D9FBF4B4EBFC8DC35489DF512
j = 90
MD = 2B7A1234970C4D13C6491835114D2CD4B46B2B6E65230B1B2563FF58DFDFD73B
j = 91
MD = 89F9D1A9480DF2CFAD40EB5AF7EDF712879ED1D071A9A9AC910862397330AC66
j = 92
MD = A99BA87B38FA456DCE53ACCF9ACAF8A2C22FA246EAE7D5F09482035B35FECF0B
j = 93
MD = 6F7623AF78BDE9CAF58223953A3E33FBABEE5B3381EE7EF4C2E1428BE33A4F5C
j = 94
MD = 3DA71C9A291224CEE7FE95289E4F606FF75778C45ECDA350312A6B7B1F92A4C4
j = 95
MD = A3E099ED77E821B24909164A715EA68B6D8BB9108AE23FD3E43AFF1A0628E984
j = 96
MD = 909ACCDE294C1407B9E0A178E501F6173AC8EC13688A49B82895C2C3A41BCFB2
j = 97
MD = DB94DBF2999E46877947BB1C48E8479D35E1DB8135B020A2B915A0CC54405755
j = 98
MD = DFDD5F9D1B93CDB9EFE4D3411EA0FF645F44A71828645C1E15B77F07774E79DD
j = 99
MD = 4C9E6062EF28E9AECB40DE709CB513C25FD2CE92F89CC112AE215F7E47876918

View File

@ -0,0 +1,305 @@
# MonteCarlo_384.txt
# Algorithm Name: SHABAL
# Principal Submitter: Saphir project represented by Jean-Francois Misarsky
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
j = 0
MD = 4996CFF2C057823D0A8E74D74E7CCE7D6A9282126995534DA9F27ACCF56093BD99DDC02701AFE7A60621809B0D484DF3
j = 1
MD = FF741D03E595C08A6C4097FE74C0C71E04996DDDF5377CC341CAF8E7E646BB5D4B277ECAA0D5FB61E7809B518069AD1E
j = 2
MD = E2CF6CAC6D4EBA92A61DB5A1EFBF2F4DE642A3E15E96BE2C262D5DCCDFFE032D60A62F325B68C17A7D914D1908E2FEEB
j = 3
MD = 6EBB0D662B9ACAA653BDCED12414E3C1EEDE9719ABDF2579E1E595F0A5BFD3CCAD89CD49C6CA5106DE989383F512DD74
j = 4
MD = 4789FB4DC23E26BD88FE3D6EF1CEEA9154D941ED8DEC1B081E2145901C4AF5DF2051A0AF6CEE35AEE4901546D29B02E2
j = 5
MD = C98948FBE08D68D7A8072FC8968CB676A045CC02B6401309F05FA4F3E42C97142B7F836DAD2C0BDA316C84DDCD8BBB0D
j = 6
MD = E73697F0C9DF76DBB2416CF095D8A6ED7A1515C936B13F875CCE43DA81F347572D4626592B6B521DF13E2D8B4CAA6488
j = 7
MD = BA863CAD9DF303AC7F8A81C1CB575645A7C4DAC0263332ACDD73B7741346A69AE2A17B72597AD474BBA6EFE2818A5E6D
j = 8
MD = 0545CE9BE1B14D3DEB51B3CB2A545DC8BB1805DC67168CC62EE2DCFD0A8EE20AA3F3BA28A8DB964E6507F8FBE3B38D6D
j = 9
MD = 4AC3C4473A8D26DE31E14BB5E9526126A998D46C2FAF8A1B90E224C43A6EBDFB8DEFF913CCA5FDFDB157EE82510E8628
j = 10
MD = 2C14359774C7EF8557DF955EAF4D5A73B80B60F678D6D73E6372CB5778E50693691A3059527E48C46F29FF1D7ABF35D8
j = 11
MD = CE68776EF319C158ACFDC3FC426177E59A7AA37ECE171E9D778C9645E49F0F6059D8EE100E8E12CB0685F1C5E5703CFC
j = 12
MD = E0DD0B68BFAA763D034653928F20A04443215B1C70C16F9045C20C1B380EF4B3A49CAC9C33F0199D2E7CEB26DF53873D
j = 13
MD = 67AF368F49D951E8060DE28DE4A0EFC84D4FDEA24463572A03CA71248004D46723B568DAE9846F48620F4935359CC0AE
j = 14
MD = 22197A680E1828DEE053F0FCDDABE111C972C8C4A2461B5EC3D16FC848CD806DE0DDCFB4967D22BECA4B3F8B14E23507
j = 15
MD = A2F1C91DB8519371327557D0CE17AE29B901B28C6D77282287AC769E4EED52FCC397643864C839CAA68121EF72B790C3
j = 16
MD = 15B426E876E099751F75D8DC0C83E8075B7BE52550739F88AAB20467D283BCBBE0D8B43CF94EFEFAD6C3B8AA927F579A
j = 17
MD = 4F90676FB0B0927E422D110B92BFF15C46207FEFEEE6663EEC439A13F8A812D9D23D4EC95B20C9E85529CF27CDE4AEBE
j = 18
MD = 71BFE367FFE17E914D3A1BE109B0BA09BCC48D72BB39AF042F4A29C60301C94937F389BB7468D5743A39134CBA46FBBA
j = 19
MD = 11BA05115AC73C482B48C7C720D7991E0CE8BAB414B31049C8D39029BE7261DAD1662B3EFF6BEA493A610BFD0E3BE63D
j = 20
MD = 2860AAAE83C172676109CBEF9182A79FE6D22E36BB870A5A93BBE37716942182CE99E3643077ACDBBFEBE9204955C428
j = 21
MD = F5D2B29085037971BCAFC720BC2F353A7B963B08F833A74D81520E1CAAE28445A4458F34AB794BF1DE76737E11EAFFFB
j = 22
MD = 76B612498F52EBE401723AAC6C2E3ACDC06B24647A6FEEFE6C28F095144FAC4CBB6BBAF2D714948B629D1F0F183C7A4F
j = 23
MD = E923A6D651EFA31E4930BC7B6ABCFAFEB54CDA15E527E9E9C977221CAD512EB5C6796691EBC456EB78CC2F0C9D52002A
j = 24
MD = 63F0F2EC90C3168E47FA2FF41B55A1DFFC93C547E791EF80428F32C2F5DDCA98C4B55B0A998FEB78496B0DBD35010D96
j = 25
MD = 31CBC6116C42E6742C5B88E5BDBDCA16C705F59D79613F13446F379C760EF60132DF3E74A2CEB3C9899707843DB28CCA
j = 26
MD = 5BF8932BE012B523B43164C94A3FE9D02AF07DCD704B06F7321B13A7FB622ED10F64096C5CA0AA2A8AEA6DF0EFAE7438
j = 27
MD = 6A2CF9D38673CFB1FDB3A124155E4901F0C55D75233DB0FF1F80EC55525DF0DB1D99018BDF7AAB3C7FCCDD3EF4FAAF69
j = 28
MD = 46D18A7355BB49CF0C90B310C26125F80D4C87589024AA05F8BFA837E9FF1EC5A7E23989226F00425FF9535D9780125D
j = 29
MD = 674E3A4DEB42435BA330D02B8A20CBB33FC676D962720F75798FAF218476ABE2047633E3CBD5D5AF703FF547A089DDD2
j = 30
MD = 2C8A37CA68E301047F03DF5FB0231922EDCD02681B3747B540C780BBA51C186C910B2B3D8960D4D2D72BD95EB53BFB8C
j = 31
MD = 97CDB078B9E8B18122F834D9BF99D3ACC99CC3830A9B02BB400F8E073BD93C5226340481135BB3F2A21400F9990052D7
j = 32
MD = 012C2BF9FE059E4CDB8CA9715C4DBF2A42A010198AF647CCDBDEC85DF370D601761160B87674B208BE3EDDA540A51E39
j = 33
MD = 64C1A78CBD2EBA8F7DB3CB34BFBB68C1E49CF37605F519E15C0FB5CB98A759B79D6D231758D10FA286070CAA5A05DFDD
j = 34
MD = 064CCF734DB95E3ADBD91AD280651BC454ED2B95163B8ED99B0FEF5CC76F65F4A83A0CDF0F53FDD957A988F0E9E707A4
j = 35
MD = 7BDE409E53D29A8EF5356C9AA0246CCD4163147999A5CA0772B688ABDDD6B94C6C2BCE8C853D640D05EFC3CBE9D0378C
j = 36
MD = E906BC7DE54D43EE36DA2417FD17FD8D48743BB1306E60A69ADDADC3035AAE8E0540A523404EA778E3A60F91DF7A62D3
j = 37
MD = 8A93B60C2F55D15A58AEA65F23600A09BD2CABF791C841F6CC43766E4CBE2C86001C6B1785C355095AE54691EDEFFA48
j = 38
MD = 172BE533FE895944C6A1A605F82A8F93415568AC6ADC18ABFEEBDEB635656B77451803686DDEF7879D64C98ABBB9C5B9
j = 39
MD = 55E5453E9BB3DD14CAD957B4E274092E78190C24B43AB3AB9AF2E8539824EA4EAFB59470C3B1E6D1B026C0910C3824F1
j = 40
MD = 9BD7EC55E4438C5FFB62776CCAE53DD4EF3FD5E6ABD4E78FF4A155E9B85F5DA5C183873CA6A0DB424BC0A7E12E45C529
j = 41
MD = C37DE068DACC3069A0197974645DDDAB6517F1CE6508D90349F44B2C2E67F0DCA2426BFA6B3478086E2FDD0328DEDAF2
j = 42
MD = 87B9E552766798D270A52A02DA36F2FB32F0FD869A1A8B71FD89430C265F8001E1D099C0CE8A791EC1EB158DC6BEB468
j = 43
MD = B6B8F47B6299DC23BEFF837F40CA6730BA00203FF38CE6C44B98FFA64B78291DED7E1B0D90C5F1B85E68B6097A145F17
j = 44
MD = 78D0006762EA641D787EB4C994DA1BEF26A489AEB98B5C999285D17CE55C6807000903574D9E64C1B770DEB32A821478
j = 45
MD = CAEDC2A9075E0F4AC8973BD70AD2A285C073F1C2C2023FB110FED3AE80AA893E62862F06E203E444D58F38BFE34FD901
j = 46
MD = B0D8ED314E7917135BF9DC4576ACCA72A32CBB42D71316CAC6FD7478D4FAA3E5AC57A3982A4380DA15387485B4C66F7B
j = 47
MD = 753D4DFF037BAD0C803796900D7759507F71F9191BC8AFB8E028DB3D2CDA7DE9F08523177A261809F9276653541181DA
j = 48
MD = 30FACEE668829E58E675D6AB942EF169C6C3D2E2BAFD96A41A189053C491774E8B1C7DC6221C1A14DE170042431B4F2D
j = 49
MD = 3DB7E3E820551BA4DA1E6D6C083ED3E20387608CE4267DB2765085A6FC940C9522A76C9F869FD936E29CB56F6A2C3F03
j = 50
MD = DFB36D596F516D398EB459B664F80F66F56DA3D26BFC32191CC06270E0720F0B456C32BEA11CFA9C1E5742A9CFCCBFAE
j = 51
MD = 0CBDE65ABB7FF2DFBC7CA84E3DEF6F65692BC716BA6081E82B87E442059E547553EA4FD5C111B2D09CA2729C469DC84E
j = 52
MD = BBECBBA2034FB6F117E859D74B3C30AC09EB3454FF086813FD84C22A195F01EE866AA8ED8CFA9C9C71821E7A64868314
j = 53
MD = 70D259AC1AD517F1B2F282FBCD08EE1DDB09DA6DAB69EF05705CE7DAB4362A1A9BD7201F29DBF7CA662B161B0FE0C89E
j = 54
MD = C1C1BA93AD7D321C633EA63AB2275209DE9BC02BC6092626873E504E7C6A1B1D2903A95DA77E3D4A04E5E6A7E59B9DC5
j = 55
MD = 5D43D0112693EACD70359EE132D93A358ECE5B7BCDE5B081DD66CFC1CEAC093E30B1543D4E81E910E92F05FD24DCE718
j = 56
MD = EA5B7C2F2180BEB00111F58186CEB5951EA664F971AD26197A58594E9A5943422F6CE983496EE5DE65292B1ECACCB61F
j = 57
MD = 801697A9F30E889075234E5EEA7D2A3CFA7B79E53E44D962B7FCCCA8913797EE99698C9DEBD6C245F455711217AC7FED
j = 58
MD = 9CFC357B4CB553DBB2F0E39542E0DA6066B8E9C95731C1B502947E0ECDAD1E1D06A82EA76FE8780B45C5FA0C3AF7C56B
j = 59
MD = E01551853A58ECA0E5356F129D6022643A8F84B37AF71DAD4490C7B69A302322298F2B1FA263B767CA03D56BC80BA576
j = 60
MD = 19D1E0B1965E8E05A9647A19EA4DD07551F3BBE6DAF60C4E07D06C2E8CF677B74563C13693FC3457350DA587F986FF1C
j = 61
MD = 8B0C3BAA78C9A8FEA45E1828275A3CE2DF0B887D7538B1743120FE156FB8DF8EFD6A28DC0B68EC06785B8713938D2870
j = 62
MD = 084934B0F3A9EA976E194C7BCBEC1354261777EAB1E12EC728A6D3C44C9E9A35EA1EAC1BFC6753669198CC20B4EE7207
j = 63
MD = 08AF7595D2EDCFEC9F9CA7642E08178B8C4638381AED21EB149B0C72D6857340B5E51A36F266633BF4F4614C963E1C9D
j = 64
MD = 2193F9382334298F758B6C6A476E124A2111B885DED61C9FBC0ECF9FC659F3AFC8562CA2AB38D5108C0D312457498550
j = 65
MD = 9573A306536D42653554AECDAAED9E60F6B3CA5B9DC945885E7ABEBD7779C083DABAE2DA81E50589D9C0D0C500AA6C0E
j = 66
MD = 50AA7D65A8919358EBD6BD7C2698AF88336C4BCB2590178D86E37034EE57CF67724E7064F9C9808FE6969A981BE7D133
j = 67
MD = 6DE938B56063ACC245932095C4B5D5AC48EEF5230F4C187A5858606857906676E14052030DC6AAFCE7B272368D1EAF6A
j = 68
MD = 447081FBEEE4123ACF0AAFC5E4F178621A6E6825385A5B56947ABC5A2CDC41A08ED82E1DCCE1DA254B9640A03E16752D
j = 69
MD = 4B0779D5A5864BC18B76CBB6F238A7C6DAC65B79EF2C4D024C4229855EBD66F186990EC97D2BE7E1D77F472738C9C4C0
j = 70
MD = AB0EA3F35A5F063DE5B4D75D67AF229596EB042AB474C9A8AC3CD52423A35180ADA4E182C6A7F04FA4477BD2B22A8C53
j = 71
MD = 4E9717A88435D100F87CD1C6945C86D0027523DEB466AE9AF3F4EDF7ACB235DE132B3462920A3FF4C7E74377DFF40807
j = 72
MD = BBE9AEC31FE81422910D5A87739DC2B2B410E46CD5B2A4046DB3BC663DA19F9D83591F6447268640C228F116933A35F7
j = 73
MD = 94EF52775D8D1DE36AACF7A6C182836555F3DE3233177A411073E023387378B898E268D29E895ABF0BA89AE1AE6DA050
j = 74
MD = DECB71B84D66D71D7161BECB69BEC6C5559D09D9D76903C47B4217265589476A0A85B17B5B4F751E85CBF1998A96315F
j = 75
MD = 99EBE304E8E1C611BF7E22ED11A57C5D41DACDA93288AE4F82D01575B9F1B2D4C9E516B89EDB67F5F06596F371D5E33C
j = 76
MD = C7F47F3D04117F9533DBEB7C0F93CD9ECF16F839AF9D087EDC45B2E13AD55FF4D5BCC42A4B6DBBCBA5228F04B3EDF302
j = 77
MD = 6FBA7DF8BF3D70BACAFEFBAE50315F7E04E703644448992E22E4EF0139588395B8A4961A51B33816DA18FC0EDBD79E32
j = 78
MD = D1BE7CE387178FCD10008427110BC94264879304EB84E18823AEE66BEA092F86A932B4F1D6141DCE9990CB48B72F9359
j = 79
MD = A0908B09FE83E6771E16B768220AAEDBEFAF256BD3276BB7AD754924F5D8D3C71FBD2B59FBF5133044A164C6001F23FC
j = 80
MD = 09FFC19B0E1999ECD1CA4282E513F0AF6CF523C0DB8DEB4B83864439B81D7A3CC2FBCE53D274B980B9F9B4D3E5707590
j = 81
MD = D4540B10E52222325AA244C21D984942EC584F97CCB6639073352F037874287987A7259AFA65D6C62318BD2B85967071
j = 82
MD = FE01B7DC2BA7E60F1E4AC2289630B334966771CEF6B915710597A2514C5BBA6AFDB25CDD2B02AFD8D12E21FA6F56149F
j = 83
MD = 06E9C3055CE32F805342A48EB10779CBF24CC403C2E92F501673EDE31676EADBAE647DE17F4648A1D605C74AFB72CA04
j = 84
MD = AAB8320FA8F9D1761324B0C65B5226529042905E21A2483D9738292C196ED9D3B510301EABC7C6735A8E3B3125DD5D5B
j = 85
MD = 5B33936304C5CBC6F76DE3FDF953B65CBD832532A9E982B2D4B4446B14497BFC25ED775FFBAEA96329012AAA68B3E46B
j = 86
MD = 10AA4407D366D6167890F5DEF29FB580D22CD22C41768191000E7F3C851BCA1971BEC498D398ECB850E0061218895288
j = 87
MD = CD830DBE951C6247B5B6B322FC9F2F2190704146CD260F5C42C49D4CA70FB31964606D1B2D88493927D2AD6E8A476B80
j = 88
MD = 331920E0CCC2BC48931C76F9D9ABA26FC6727F9AF29E312546513E59239FBD64B39D32AE48269C7ED5F33C0FF561C1ED
j = 89
MD = 161F10868A6EED894CC832E8AAFF96291C1655181C385E93A410FB08E8E7C1AC7ED185CF434BB062DA0DB98EB8485E90
j = 90
MD = 571D02A4986EDDDC90DA037E0AB744133B866538715BD619EEFEF8DD6A9DEF802C2244C05A5D3C2E7AA675C0E09A22CE
j = 91
MD = 0114EFDA420ED806D0C5E7C29E3514D0E9816C9D2EE66A5BF893404720AF3B7B60E8B533EF407239DFFD7B9BD8F8B4AB
j = 92
MD = 19BAE959B19F14ED66537ED699EF6036CB359F5D724D1191826D0EE5582A11342B485DF06671B99657DCA8BECBEF2E26
j = 93
MD = DEB303750C07E2A4FAE462813518DE3A3C7154EBF3CE2F6178C51F3DD5B37E5F4033820B4D098ACC607C41674EA41CE4
j = 94
MD = 78A21EE9B3352705F50C6845FD21B4E18921DB0B2FEEA7F0B55066DCF9A283E424F0DD3DA2630BD2F1DEC68EC0834995
j = 95
MD = 399C3AA964DAF94E60FEE2C43400F3E428F79DA009323A55A8AACA5D7F23CCFA8303DAE08E3F84796C7724AC158904C5
j = 96
MD = 3DBE0446B6FABCC89E76D417ACBA473E3DFB9CCFE3C63E60F3779718F2B9AA1AB222B0844046F6AEC1D87CA65946B474
j = 97
MD = B3133532EE0C1A013220D99E1BCF2AF8ECC23DCCF08B0B0B5396AFE32E9E3D441E5706F21D2839EFAA797EF7C5C57F79
j = 98
MD = D3DE2BCD6715CE41362208B54B0D85C4F987572634AE0E5364D624106692F48854D9EFDC404900DDD10A181D8AB05C3E
j = 99
MD = 91DCB7FF3510F94CEE923D0934351EC225A2BB34F839F7CF56A1237E178F34032560C47CCCD75387F16D34C3B05A0C30

View File

@ -0,0 +1,305 @@
# MonteCarlo_512.txt
# Algorithm Name: SHABAL
# Principal Submitter: Saphir project represented by Jean-Francois Misarsky
Seed = 6CD4C0C5CB2CA2A0F1D1AECEBAC03B52E64EA03D1A1654372936545B92BBC5484A59DB74BB60F9C40CEB1A5AA35A6FAFE80349E14C253A4E8B1D77612DDD81ACE926AE8B0AF6E53176DBFFCC2A6B88C6BD765F939D3D178A9BDE9EF3AA131C61E31C1E42CDFAF4B4DCDE579A37E150EFBEF5555B4C1CB40439D835A724E2FAE7
j = 0
MD = D62B21EBF2C6A41062D79461857A39EBDC8A7CD659EC218722A809154581A9BAA760F8035407BA229DD1BFC943A051BE00BA4952E81FC028957F947F62496CC1
j = 1
MD = 1F1E2338FDE19C175AF3405202432AC0C3B01EAD833DC00F34AA9E0CC1BA32275513E07D5484879A642709E0082C3B121C36B4DCE8D5386A9782980C70FA6424
j = 2
MD = 8B81A50A5865AD7605B5CD888BCE76E2A04D9CF17A0EFFB0E7BDAAF5C451F459C6E504920D753313E3135889611B6D656060D7D3EF3742F65261AE98482FF206
j = 3
MD = 2A76894222B9F96A1A0C159FEE8DB4E8B4421747A8EC36F8D0B6D82CD5B2C271F3FDD5A44EBC664190638F724A72D89D1B51A795959FC407223534AE45A3FA37
j = 4
MD = DCD65FFA129DACEA0ED4EAABCE2126D1FC17071BC6D944FCB4E8CC503320208AA3A8252544A4D88F8E7D63077C4E37B65BDD66330875FF9F8F8F8C0E8C80FC6F
j = 5
MD = 4D578A7A7DE6C729A717292E4CBCB08B4144D272D246850D4C9401365F5A36D362F7AAA05C4AEC04B7E7F2905A3ED6D4B283661C6B1E614537005EE2134671C5
j = 6
MD = ACC3A863C147627C8CA1DE25CC80CA831D39BBCEE615F13101763E2F52B7837C084B13F74FC3C585A85142E0261FA7E61B6C6FF5789E47022D61137C69B583C8
j = 7
MD = 9E5262CD6803D339E273A96060988FF2E0AC7F5505F331D4C6D718FBC792027B2883361FFC38BC79130E91B926ED1E3F60643D65B3B56BCEE4DD3FED54AAB17F
j = 8
MD = 578C45F1AE0FF10F5324497C2EC7F81563E2F24ED8EF1A4EB19E996EA15D7DC25CE90A9E077E6D9CF239447FBD26DB22782F92B0DD9F8A6DB7C36C76E73E9A89
j = 9
MD = 92F17851F706E95934495905A082039413DDDB4A9C68EB21CF560C00F0F81F63D5966B25930D1D5DFD047E1579BC3CD08CB5AE2F45321AC831381D3D9235386A
j = 10
MD = 80119F475FAFA161F10EF9D8CA8A397D073EB35B8F9B15F579EBE302DAF443AFBBE094182F1CC6FD2AFBD27C7A26524C053D711191E53A4A5DF5B8AF22176626
j = 11
MD = 1997409026A72579155F548C2BB8FA1129067DAF4C04F60FB599A8C2F22035E3730567954AFC70CA64B2C184766C31033F54085CB090B316017D43195D887377
j = 12
MD = 2570D56022F9B7EA44A74A2B1D8661B12EE98AA51C27E2EB20B8824824A20491431F7C8A228F852B1948B2AB7BC77110CB0FC4EBB5F25803B1F788782530E086
j = 13
MD = 3AC36A8E0BC6ACBECFA7861E1683632F3268FB26B16BC9364C3A5EA2F9F7EE07898128229EA778693B795C9EF30BE0F9ABDE2F05218325BE0AE771C26E096038
j = 14
MD = A6B51DCB6D1D930929BC71EF9B022CAEEB16B97FF727444AFF2DABE66292BF38A029EFA81EFFFA6A037F6AE51C06C44268640C26AF081B58A9F02B0EB324D819
j = 15
MD = FBEAD29E032F37A0D82E7F93432963C68358133128596E815243A317FB6835CCA9D4CEC64D32964891F935FAF88F1A84130BC32663995806E75A28AC51977C3B
j = 16
MD = 19294AE85034715CF94191EA3EFECA65B8CE3AB0BFFC47D64657C2B4778D6A251C8B4F455C1D72CD727F2B43D7EFA5A62C4E541CD331D5BDCB5D29184061605F
j = 17
MD = E2E04526033452E4DBB39EF87AB98D65EE025B496159C4831F47F5E8F64F5B2CD8E0509029EB22B27036ABB1BD8BD037C19579A3BA6C935628C84D0E63232D9D
j = 18
MD = C97437FFA09F25146B39DD9FBE4F514165761FC7E39D70DD7AE3B365CF0128008858D71D62EF293A32EA8BB682AE0FFC844EC802F4FC9C9C6F05A3D6A9E01698
j = 19
MD = FC9D639FAE369E8E3E205761F2AA902E9B898840A4F493C9D25329BB83F8CAFE1063AF59F94377A4465706B3CA5B0A6E4C67A67A344D528F09530699B59D7676
j = 20
MD = FEF471F23416851BE4D1DE2DAB06AF986389DDD290EAE7010564E9B24EE4EF08DD8BBE81B8C0F4EC83A5CAE463E34A467AB7B54DD5EF057EA0999F90087CF204
j = 21
MD = B8AF87C48D7EFB512C6EB9A9EB3E5ACB66A5CE737115BB3BAAD3B51DACC817F10C3E6B8664479C6A243CCD847A36251F750728A2F9A10A280E7FFDDEEFE87C4E
j = 22
MD = C03051C4D2ACEE31E3A3C4EDB07A7B53CDCD1AF9BE6CA36306F16C1569AD91188D1262C63549FE974916426BE2D1F39468892FE7B956A86150E2FBCB26010FAA
j = 23
MD = D799640C21FAC503724A7F409B556632B19CD24A50AED1D17D0E87574DC887DBB22BA1A543C50639E52D900C71F73D4361F319D52B6A55AC8DD6BDC3E8D69AB0
j = 24
MD = CB868047C994A9000FB8C86993F7673811E579505622084C28D74C1AA1563B63F751B433E50772F3634B2D7466E462F883D170051C5A54B51F10E5118034DFD2
j = 25
MD = 06BF1F1347812ED4713755B4160176EEE933257527A935636B273BAB029052F83D2BC8967F0FD3EBEC1AD70F89CB8DD2B601990DD921EFD1E50911C29B08ED2B
j = 26
MD = 420BCF6C61320422CEA68A8AAD650DD93B27696F598A14F35479ED558B5A5FF84579BEFB8BE6AA4EE709CF0B18C7314A9CCE21E9C879BE022EA1123706EE693F
j = 27
MD = 14171D8A8EB78D73C87EC20DEC360F15C220C1E3507E132FDCBDF20BFC904F9CA96BE773E35A9816BAC68B189C2ED1A5285EF0695A5D4F60D919D301FFFBE07B
j = 28
MD = 1AF3026CC0E4984C72473900AA4E2555AC8DA0C4768065F6A68DC64CA1E5E0B7F9C93E03C2AAA8AD8DB1AB8D40DAB481D917219FFF1059CE8AD42DA0F5A87A0E
j = 29
MD = 81395EC85A607CE12DA6F32C451724811E6C1EB4CCC4BF9261C5F89E749EB2CC1ED52EB787EF67327ABD593FE73EF299C8F58C948EDE0DAF9EF5F6728491AF8F
j = 30
MD = 3FEB13AB58ACC7B838DF88C2DB07E637495A812321705A4CF8E2B94BB4919B5AAB12EBA311F2AAD3C8AC957A76A15849499E61C9C2001F27CE3351AB2C9520B0
j = 31
MD = 8A6878D32A31E67859A558B9516BCB8790786ED956A025D8D713EC152BA5AE412805AE82B1730CCB9F8E5E9C3AE1E50EB8A1622AC8FE6DCABDD342608F312AB3
j = 32
MD = 4AD5D2E6361808CDF9175B565831DB740E36FCEC8C83CD01453FD9FDE183F8961AB808E267B48E51FFE3B4C42587BF22B352BB4B3BF98B6A1690099F1F3A71A5
j = 33
MD = 188C5A6E681FFE12301AECD9F3C58263A50FE1FEC64CB31C28F1CC6831BDB47A5592B4B16AB3969F9FBF83C3A27050AA006F9C280732D5300D6D6A89B9BD2516
j = 34
MD = 4C14B0EC524DC4C8D049F90FA67693FB03BCE7ED35C6FF323C2494B73DEDD732D008BDE7523AB5181D6764D5DE92A019D4A2E76B64CB3DF6C3AAE602BBAA7A73
j = 35
MD = C26B04024E5C0A5C2CDAAEED67356601FDA52F243F0F163D1DDB0C18DF7E1FE12FFFB9EB9BF5D3FE658DDE9883250B929DFA7E8ED97D2C4F42DCC436DF2BA131
j = 36
MD = A95E349894426D65B7DD1C8A55EACEBC83E168A9C955B5C0E547F92A2906871AFB2138D13EFDCBE1C3CFFD6D7F38AAD45C92DBB47E2FEDF27E9264AF55267C89
j = 37
MD = EC3EFD5C7407D0323BD5AD679DBB1A0DD350C9951BF21AE53C48DF3C7275211CA38EEEAAE152643FF907C6F1BBCBEEC200FEACBF0AE222F9FAE634E3FB31862D
j = 38
MD = 5899887E0E213C041B207CD0D6F86571BA469642E2D415BB3483C494BE325A40DAF3C6F6F0F74AB8755ED21EA96D08EFFBF094A1F5C1F7BAC1E7FD194E195D95
j = 39
MD = 8A8663C842D5764B6C96BDE3AFBA8FE58210BC7263ECE8886EF8D5F0E39975C89F2D06A43D4DD8BD44AC0BFDB72B6CDE8B35FE99800DDBCC783B3EA019D8B41A
j = 40
MD = F95F9C785C11E235B693B5989384BF9F1CA17B66B16DF6A1E8A99D2C0BEE68B92C89B79DDBAD3F081B7E31C7C432941E0ED2A4DE61897438A34D03E0A03F3FF9
j = 41
MD = 59FABC2D42EFC1DFC78ED4AA6C66315405EB005309882F8139498876D1F601F5E53CE925CA16E4018ADFEF789E021594997C24D591C06E4D390FBC20D8EC4A67
j = 42
MD = 290AA6CBC84905FA4218679720057123D709900447D88596699E82E58AA572AAA302817416E0C23D16D961591B691DDC075AB5D00F32D1F68EEB895F681353BD
j = 43
MD = C5127476CB4067C589FE82430184833AF60566333C47E8E992FB6B7D345681CCADE9EA38AD013990AA69F7AE62A85F3F739C23F6BD495C6862BB873DA4C04EEA
j = 44
MD = 770D21A5D9B582CA0AC99A1EDCC98B3F50CF73837DA130313168A50B9534AB96964AB28C921FE4A4C75FB9427A66DC415C61D0CBBE0C5F8CCF92DF3EB6ED5090
j = 45
MD = 2AB46346A442175387DE7FB293E8475E96B816814827EDF39E712B3C23BFDE292CCF1B1AAC55D71E3B70E68983FF6DC508F1970CF4887454F9AB764B2043CD2F
j = 46
MD = B6FE4DDF3124E5667BF44AD840CECA2DD8619121BA25C1079823CD3D3FDE3C8C592B73378A208505F840BC64B698B75C67EEF46E7E93D2ACFDA7FA0E18B07433
j = 47
MD = 1AC2F156E2F3C1B695656126A0629CCD8A16D1697ECE69CF0F28BAD6D415B5788A1AA485B5579571748C077FEF6F24B51DFA5E23922FAEB7C7CCB29E26EC6DDB
j = 48
MD = 768CAC5E50C0A534AD58B723F54A340F5ABB252D74BEBBEB05BE983A03F8F54A10AD298DF61DD6B64D149E9BD3C6B3381DD46DE3F8E56610A90C96625740BACE
j = 49
MD = A9F510291E2AC47F311FD232B920CD66200B21A1F6C844FC1985D3E149812E5F35C1252126C653226E916E5E7F7BC9FCFE7B3AABB46872D7FEEC161B006A7F6B
j = 50
MD = B29325DD2315B88856E5872793087B19B3DBC010551F8B1B877D8C841ADD7653A83A2B230031CF088C1AF956B4B830E5F901CAB1E79772E4FC5506DF9753BE0A
j = 51
MD = A51196E5DCEBB417C12A93490DD15D913F993E5629250C3EA31E43E386FA8EBBC0F44ACFAFF7009B7B005D724BCB0C0F3E485523F6622450A89FD5BD53403442
j = 52
MD = 8D06383556A02BA1F487BDA23DCFD398232A65CABCD89609010AF4E55A4616A4B60B12752C648F6BBD4AAC7B5A9C50A57E5BBE12B2469CE9B699E472E0827D60
j = 53
MD = 2043D227C15CFBB3F881AFA5294378A95B488573365BCC3CD90114C57018762FDE3A2A361385CCE35B5F175715F4AA4C71D98FE092329905052028A7D8CF4A96
j = 54
MD = DA0C6AA64D1BF37013884DC65A9E04A03C2B1014B62CF19E4C25FB99387EA67B39E128B72002780B33C2DA4DFF18C9B9C56C44AF3AB51BE4EB67CF6BF92E833D
j = 55
MD = 52E84A22F4DC8AAD72E21002DE12C392131A16A265CDB1FBF71BBF0CDB6191E2C1160FDDFE0D22FAA1603A2748EDC652563EF2DD96BC4110EC48BD03395B981D
j = 56
MD = 7FF3452C7B1EB31ADD78DEB4573F76330484869DCF6B45A4B8741A6A16383F620EDE9DB23BCDE40C8322034F5EB8AC36D9C8623FDB8E8291DF8C0E019AC66D31
j = 57
MD = 89C6C9659255657A61C901038351C72C6B6BD27CBEFF6A8B915B13E3719245EAEC49CF60C8F5C06E6E8A491CB9B00ECC18FB507841112B93F8ACB42CB7867D43
j = 58
MD = 78BF747535E0F7399B05820A1F2DAB2E2F017A0F58C84EDA0D3CD340A646D43E15B4F7B531127E4B4B235EE3B49B613CAC21F6EA8DE43EDB0DB7FBAF2DAEEFFD
j = 59
MD = 6C3459409AB78D7B4F6BD7795AB1E8C1C701CA1ACB4ADE95D8F8FA9228F4250D3AA3AB47E6D114EE176C38FAD237CF9664D37D6931CCBED1A915CC8A625EB39A
j = 60
MD = 284E831A9198BB8F8A6B761FDE7AEC79DA991D591DEC2F1DC19CE9FB0CC6E6094E91A0F2B228C9606D619AEF837FA1A32C3FD1287E7106DAB9A37BE7BB2FC854
j = 61
MD = 8A95456B2C485BE637BB62DEEC8C5E7DACD31F4AE0FB6113D656D661E72807FBE718990C6E930C23B31AFB05EDB4DEAA3D93B615A57EBA0A5D70EDB9D882CBAB
j = 62
MD = AE7DC435693E2CA5049E78F43F898610ADD3F9EDD5E07531F4652956DD7C286FCC1A820AF4F1696C7B85CA32DF807BE368E39B983F3450062B689B3FCB64795A
j = 63
MD = 3F61AB1016DB69D6EB5A90FA19B3972F0DB5BC389F0E11141966DD50817ABC4F89AB8FE6D4464D86AE2B1B5896C6B483B1A35F673F7BD28DC20E88924FB4439D
j = 64
MD = D678FBE4E5D17EF5EE867807919E141A9F084DA0632FF2D48835DF0BEDE3153BB6B4B143695256EF6B9460F04FDBA21D5D35AEFE06A552CE19716521857C2713
j = 65
MD = CAE27D97B93A6CC5033181ECCF2A8C518876E9F12F080F5A60DCBD48EACDC1C9D1C40EACAA203C3B49132A4AC2DF4ECAD4E5AAA87CDE9938748C61FAAB1578D0
j = 66
MD = 378999008BA91CB2C06DE890BE9F3DE3D0F76E36F9CE6E278FCA9C1B0FF7EA1872ADD90D895A807B79487A642AB7CB6861E5A07FD8105CFF677A65A5046A94C5
j = 67
MD = DB55CEF2756B660FC1919021769A3994A82048064C0836825088A136BDC286464F6E3A9E151DDBA95E6ED2C70CAC43CE728BD1DE6CFA7B47703AC3447BB69762
j = 68
MD = E8C8225AB414776FC5501630973C07B0F8445D3FD7C2810B161C41C95AC7C3B7118FB20FF1F23C30E8EB9A21EC0D64BF3C0848632D2667F37FCC1E91CE9D9D6C
j = 69
MD = D475F58D463D682CF1D9A1F0C41B726F0D7C9FF409F8AB311069ABC3DEF41E374B4A5CC72A651D8C0EE786A73FD55F6701C14CE3BA568F5AC464AC7ACFB3D60F
j = 70
MD = 172FF1EECBFBFD13646407CB269F77F95772372BE9FC2A7BB3668BBE405BB833B45CE36245B98EA975CCD95BB7D628BE6383B8F034223D71418E1FABA1397D3A
j = 71
MD = 62C1BEDDF18FF60304A1E6D3FF2864C402A34CA350E1B45132534F43F14E4B59B60B295E14C9E494281620DA84F1BCBEAC901405AAF5BCCBCF5D394388500C47
j = 72
MD = DF62AA03FE418D1DCE655C77164169B880E05A7F9FD77B48E3B22E80B5D141E0DC003354390AE5A66E72CE85D416282E0A55839526908C621993FCDF005A6177
j = 73
MD = 8B0E9BE2CB7CCA932F26D79AC27953C8CC9A9C595A4FA70C7F0F751076D350228A272A53D9D2EA648C9EACD2C870A3B628D9997FEC3CCB8F18F5EF1F2970FF45
j = 74
MD = 46F9D313C50F58F32EE22560D2C8F7816521DAE6D16C98D81FDCE77CEA7AFF055ED7FFBA1B9AD967B6505E4097FAF9C5C93B065F328DA82740B5E17457C4C97A
j = 75
MD = B2535EB402F2CF1CCAC4D202325A2D0728D776842835FA96C9DA1FDC1F93A9174A9EA79D46D754E6160C916A505AE2DFFB33ED69B7F9401C802E78A2E2E3C787
j = 76
MD = 0AE0D4AB2325338587736A9CA4AB79A2E46FDB108BCCA225B79EAA7EAF14B4A8481BDCC67887F5902C8A698A93188793062BDBCD88A06806A5E2C2B2D7F11D27
j = 77
MD = 5FBB2A3470E912D93502CD8ED3B6CE25E0FEF15FF5CE6673E7007E35F8098CEC46D26DFEC63BEDF4AC78392DC7B6F4ECD5ED202DE83E8B2686E20DD2EDCBC510
j = 78
MD = 50C8D1CF8945001F5D2ED3AF1EB710E002856A3E1E7B9EDFE606E2D79D52676976E95A62A736956A2154DEB9631534ACAED8CBE3CC1D4082280D4031088E7422
j = 79
MD = 4334608A67EAD29E1124BE7DCDBD977ABB0077C358721D81EA79990AEDB99F609D3076952B062DFAC640BF97EB20BB049CA1B4AB21C81123B38D8C70BEE686A5
j = 80
MD = E706B7655B0F013FB97AB86C4E85DFE07EBC6D786E2155BE9B48D60B32ADDD15E60014CDE5381C4C26A77CC3C87BB6F34D69E5B476117CE315361F2F6E300BE0
j = 81
MD = BE916A2DDCE45E452D9511CA816E578D8509F9053576ED507CC2E34E93AB1F721CCEF6926408FE509F6E2F04CBF1F2FC83F248A865BE0D7501F2BED1E65CFA7D
j = 82
MD = 5BFF3FB08DE87563A19D66F343F4072EF9B8802F842839CCF1BB6C275702EB0817CE78F927B969507AB0D0BF52297A2B4BFA2BDF2D72951DD1E9DC4974798D40
j = 83
MD = B4C8F6C6682C4B684B1D823AA37664E101283780DD645DF5E34FE7E05E7F1ECB13B782F5E9BB49DE4AADC258DB96E90477AC1AC2B7C406B12CC215583C382DFC
j = 84
MD = 055C55781481C24A0B711D07DE8E01C160B38F1637392F2F6C91190599783B9B3D81CFB2485C404A5C8C2B5931E7E5CF971AAD9E043AE7D2C4D87772A220843D
j = 85
MD = 8CC9FFD1E02D2414E094E099075CA517399FD00B5BD9989662B585D8C13A9D5ECAFB1473CBAD8DB95531CF652F3B082F750C2DD9243FCB5162B88D88D447B2DA
j = 86
MD = 84A1AEFAA11CDD92FF504CC9C9803695CF5DB33B3F7A0AEE6390C7443D3F4273D4ECF91AC0829B5B2EA1E651A51C529D18CC579CB03421F0EA2B76A1FCA59CEC
j = 87
MD = 06E8308ABA40FCD460A1EB39D54D0BA9CE789B8A661AEF578180F3A93F3A7A182DDD061E80751893D5A82F23B48AAEF5CBC522ADD042CC82DC34462A2E9A6AF1
j = 88
MD = A46A404220AE35639FC9A496E906DA46940692C963B674DC8344278D50716D40A666BD73CD2324AFFBC1F31B5D695B069C029F889868AE409C2FCD5C00592265
j = 89
MD = 13D2876DCEAF0EB95D49D70031EFD378D8874ABCB46B051257716C4F2C8BB0BBF858A08D784B6DE36983EABFE91FF78D0740A2D2EA8C79BD0BADCAD1C91C7B7C
j = 90
MD = 483099C99755C5252EF569A5FAD2CB81A153464339542923009098E68FE1A21FB68D6AD8147211988E8FB9FC3E6707185B3EB549D2692B72E72109B1E2C98B8D
j = 91
MD = 1F55D0B8B9A242F6AB909C75CA310B9DABE96A16422D2C6634BE755A9B0CE0FB5DF4388474FE7EEBBB0B2F4C58387B4DDD7B80787DAB58EACB84C868B8DC449E
j = 92
MD = E6D048B140C7AC6C355BE58E4CB3F2818529966216B1B26C8BC86646481DB6575AA5F5F2EF28948CFD76DC656273B7489B4664058C1B2ECCFA6BFEA35D7B9C16
j = 93
MD = 601413333A8684E55C7D48E2857260B639B71AD89176DC30E1CC510F5CA2822C244D9D47D2C3727CA320018F3DB6159FAA571E91AF5A2C5E08F7E14831B48A6C
j = 94
MD = 5EB307755C6AF4C0A6C6CA6DF61857BAE63E8580252FCD3D518343E3009BE7701E42BC007569126FE5AF7AADF56D8C31029E6BAD9EFF2CCFD7074A73DADDE4E6
j = 95
MD = F6216C41384DA1FD7B728D3A2292EA09B14DF6110D35D0A5FCD15ABD45F3165E46098088AC264AB1CE4A6D2EE9D31B94668FC4D318671C2DC1E8D40A111C4C82
j = 96
MD = 81B4F0EB9359AB13237938B46EB28028FC44A66D8E1E7231E2F337658764B38A8601FEAC9049FE71AA5448AA5B2D04A5F4F171CCD4C24958FC30137D1BB0AED4
j = 97
MD = E43C6E7A6561F5E30DD385B9A15E1776DB7C8FEB9E81EF58B693264F5941EB5060673DB972AF443DCA4E2A9892A8E7A1E3EBDF3C3DDDCB320435572894AF3F63
j = 98
MD = DDA976A11BFCB8F19644F27D78CF5E3AE0E5900224D61E47B101F6601EFC0FC5ABB753D68B5A1D79DCDF16E524C8F73BABE39EBA6C796937A9ED837D01AA7050
j = 99
MD = 08AA6DEAC6ABC170EBC00927DEAC13EE10BADAB096142C743A4B8A2D720E2A582B80F61646D6D7AA87F1DD873BE25E48C79FD2C1BEAF31A514AAF256683DA880

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

View File

@ -17,10 +17,13 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* \file threefish.h
* \author Daniel Otte
* \email daniel.otte@rub.de
* \date 2009-03-12
* \license GPLv3 or later
* \brief Implementation of the Threefish block cipher
* \ingroup Threefish
*/
#ifndef THREEFISH_H_
@ -35,19 +38,34 @@
#define THREEFISH1024_BLOCKSIZE 1024
#define THREEFISH1024_BLOCKSIZE_B ((THREEFISH1024_BLOCKSIZE+7)/8)
/** \typedef threefish256_ctx_t
* \brief holds key data for Threefish-256
*
* A variable of this type may hold the key data for Threefish-256 encryption
* or decryption..
*/
typedef struct{
uint64_t k[5];
uint64_t t[3];
} threefish256_ctx_t;
/** \typedef threefish512_ctx_t
* \brief holds key data for Threefish-512
*
* A variable of this type may hold the key data for Threefish-512 encryption
* or decryption..
*/
typedef struct{
uint64_t k[9];
uint64_t t[3];
} threefish512_ctx_t;
/** \typedef threefish1024_ctx_t
* \brief holds key data for Threefish-1024
*
* A variable of this type may hold the key data for Threefish-1024 encryption
* or decryption..
*/
typedef struct{
uint64_t k[17];
uint64_t t[3];