• 大小: 1.76MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-17
  • 语言: 其他
  • 标签: SHA-3  

资源简介

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个文件信息

评论

共有 条评论