资源简介
SHA-3候选算法原理与实现SHA-3候选算法原理与实现SHA-3候选算法原理与实现SHA-3候选算法原理与实现
代码片段和文件信息
#include
#include
#include “stdint.h“
#include
#define U8TO32(p) \
(((uint32_t)((p)[0]) << 24) | ((uint32_t)((p)[1]) << 16) | \
((uint32_t)((p)[2]) << 8) | ((uint32_t)((p)[3]) ))
#define U32TO8(p v) \
(p)[0] = (uint8_t)((v) >> 24); (p)[1] = (uint8_t)((v) >> 16); \
(p)[2] = (uint8_t)((v) >> 8); (p)[3] = (uint8_t)((v) );
typedef struct {
uint32_t h[8] s[4] t[2];
int buflen nullt;
uint8_t buf[64];
} state;
//置换数组
const uint8_t sigma[][16] = {
{ 0 1 2 3 4 5 6 7 8 9101112131415 }
{1410 4 8 91513 6 112 0 211 7 5 3 }
{11 812 0 5 215131014 3 6 7 1 9 4 }
{ 7 9 3 113121114 2 6 510 4 015 8 }
{ 9 0 5 7 2 4101514 11112 6 8 313 }
{ 212 610 011 8 3 413 7 51514 1 9 }
{12 5 1151413 410 0 7 6 3 9 2 811 }
{1311 71412 1 3 9 5 015 4 8 6 210 }
{ 61514 911 3 0 812 213 7 1 410 5 }
{10 2 8 4 7 6 1 51511 914 31213 0 }
{ 0 1 2 3 4 5 6 7 8 9101112131415 }
{1410 4 8 91513 6 112 0 211 7 5 3 }
{11 812 0 5 215131014 3 6 7 1 9 4 }
{ 7 9 3 113121114 2 6 510 4 015 8 }};
const uint32_t cst[16] = {
0x243F6A880x85A308D30x13198A2E0x03707344
0xA40938220x299F31D00x082EFA980xEC4E6C89
0x452821E60x38D013770xBE5466CF0x34E90C6C
0xC0AC29B70xC97C50DD0x3F84D5B50xB5470917};
const uint8_t padding[] =
{0x800000000000000000000000000000000
0000000000000000 0000000000000000};
//blake256压缩函数
void blake256_compress( state *S const uint8_t *block ) {
uint32_t v[16] m[16] i;
#define ROT(xn) (((x)<<(32-n))|( (x)>>(n)))
#define G(abcde) \
v[a] += (m[sigma[i][e]] ^ cst[sigma[i][e+1]]) + v[b]; \
v[d] = ROT( v[d] ^ v[a]16); \
v[c] += v[d]; \
v[b] = ROT( v[b] ^ v[c]12); \
v[a] += (m[sigma[i][e+1]] ^ cst[sigma[i][e]])+v[b]; \
v[d] = ROT( v[d] ^ v[a] 8); \
v[c] += v[d]; \
v[b] = ROT( v[b] ^ v[c] 7);
for(i=0; i<16;++i) m[i] = U8TO32(block + i*4);
for(i=0; i< 8;++i) v[i] = S->h[i];
v[ 8] = S->s[0] ^ 0x243F6A88;
v[ 9] = S->s[1] ^ 0x85A308D3;
v[10] = S->s[2] ^ 0x13198A2E;
v[11] = S->s[3] ^ 0x03707344;
v[12] = 0xA4093822;
v[13] = 0x299F31D0;
v[14] = 0x082EFA98;
v[15] = 0xEC4E6C89;
if (S->nullt == 0) {
v[12] ^= S->t[0];
v[13] ^= S->t[0];
v[14] ^= S->t[1];
v[15] ^= S->t[1];
}
for(i=0; i<14; ++i) {
G( 0 4 812 0);
G( 1 5 913 2);
G( 2 61014 4);
G( 3 71115 6);
G( 3 4 91414);
G( 2 7 81312);
G( 0 51015 8);
G( 1 6111210);
}
for(i=0; i<16;++i) S->h[i%8] ^= v[i];
for(i=0; i<8 ;++i) S->h[i] ^= S->s[i%4];
}
//blake256初始化,为链接变量、盐、计数器赋初始值
void blake256_init( state *S ) {
S->h[0]=0x6A09E667;
S->h[1]=0xBB67AE85;
S->h[2]=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-10-02 10:07 第十三章 SHA-3候选算法原理与实现\
目录 0 2017-10-02 10:07 第十三章 SHA-3候选算法原理与实现\blake\
文件 6997 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\blake256.c
文件 3423 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\blake\blake256.dsp
文件 524 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\blake\blake256.dsw
文件 50176 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\blake256.ncb
文件 53760 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\blake256.opt
文件 754 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\blake256.plg
目录 0 2017-10-02 10:07 第十三章 SHA-3候选算法原理与实现\blake\Debug\
文件 221331 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\Debug\blake256.exe
文件 235720 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\Debug\blake256.ilk
文件 16873 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\Debug\blake256.obj
文件 190032 2013-10-09 16:47 第十三章 SHA-3候选算法原理与实现\blake\Debug\blake256.pch
文件 549888 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\Debug\blake256.pdb
文件 1539 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\blake\Debug\test.obj
文件 58368 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\Debug\vc60.idb
文件 53248 2013-10-09 16:48 第十三章 SHA-3候选算法原理与实现\blake\Debug\vc60.pdb
文件 8288 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\blake\stdint.h
文件 83 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\blake\test.c
文件 139962 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\blake\test.txt
目录 0 2017-10-02 10:07 第十三章 SHA-3候选算法原理与实现\Groestl\
目录 0 2017-10-02 10:07 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\
文件 187 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\api.h
文件 0 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\crypto_hash.h
文件 93 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\crypto_uint32.h
文件 97 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\crypto_uint64.h
文件 91 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\crypto_uint8.h
目录 0 2017-10-02 10:07 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\Debug\
文件 50176 2013-10-07 18:07 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\Debug\hash.bsc
文件 237724 2013-10-09 16:49 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\Debug\hash.exe
文件 233488 2013-10-09 16:49 第十三章 SHA-3候选算法原理与实现\Groestl\Groestl256\Debug\hash.ilk
............此处省略120个文件信息
评论
共有 条评论