• 大小: 20KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-30
  • 语言: 其他
  • 标签: AES  CCM  

资源简介

CCM是CTR加密模式和CMAC认证算法的混合使用,常用在需要同时加密和认证的领域,比如WiFi安全中的WPE协议,它就使用了AES-CCM模式。

资源截图

代码片段和文件信息


/* This is an independent implementation of the encryption algorithm:   */
/*                                                                      */
/*         RIJNDAEL by Joan Daemen and Vincent Rijmen                   */
/*                                                                      */
/* which is a candidate algorithm in the Advanced Encryption Standard   */
/* programme of the US National Institute of Standards and Technology.  */
/*                                                                      */
/* Copyright in this implementation is held by Dr B R Gladman but I     */
/* hereby give permission for its free direct or derivative use subject */
/* to acknowledgment of its origin and compliance with any conditions   */
/* that the originators of the algorithm place on its exploitation.     */
/*                                                                      */
/* Dr Brian Gladman (gladman@seven77.demon.co.uk) 14th January 1999     */

#include “aes_defs.h“

/*------------------ DLW debug code */
#if _VERBOSE_
#include 
int rNum;
void ShowBlk(const u32b *bint final)
{
int  ij;
u32b x;
u08b a;

printf(“%s %2d: “(final) ? “Final“ : “Round“rNum++);
for (i=0;i<4;i++)
{
printf(“ “);
x = b[i]; /* always used internally as “little-endian“ */
for (j=0;j<4;j++)
{
a = byte(xj);
printf(“ %02X“a);
}
}
printf(“\n“);
}

void ShowKeySched(const u32b *keyint cntconst char *hdrMsg)
{
int  ij;
u32b x;
u08b a;

printf(“%s\n“hdrMsg);
for (i=0;i<4*cnt;i++)
{
x = key[i]; /* key always used as “little-endian“ */
printf(“ “);
for (j=0;j<4;j++)
{
a = byte(xj);
printf(“ %02X“a);
}
if ((i%4) == 3) printf(“\n“);
}
}
#define SetR(r) { rNum = r; }
#else
#define ShowBlk(bf)
#define SetR(r)
#define ShowKeySched(keycnthdrMsg)
#endif
/*---------------- end of DLW debug */


#define LARGE_TABLES

u08b  pow_tab[256];
u08b  log_tab[256];
u08b  sbx_tab[256];
u08b  isb_tab[256];
u32b  rco_tab[ 10];
u32b  ft_tab[4][256];
u32b  it_tab[4][256];

#ifdef  LARGE_TABLES
  u32b  fl_tab[4][256];
  u32b  il_tab[4][256];
#endif

u32b  tab_gen = 0;

u32b  k_len;
u32b  e_key[60];
u32b  d_key[60];

#define ff_mult(ab)    (a && b ? pow_tab[(log_tab[a] + log_tab[b]) % 255] : 0)

#define f_rn(bo bi n k)                          \
    bo[n] =  ft_tab[0][byte(bi[n]0)] ^             \
             ft_tab[1][byte(bi[(n + 1) & 3]1)] ^   \
             ft_tab[2][byte(bi[(n + 2) & 3]2)] ^   \
             ft_tab[3][byte(bi[(n + 3) & 3]3)] ^ *(k + n)

#define i_rn(bo bi n k)                          \
    bo[n] =  it_tab[0][byte(bi[n]0)] ^             \
             it_tab[1][byte(bi[(n + 3) & 3]1)] ^   \
             it_tab[2][byte(bi[(n + 2) & 3]2)] ^   \
             it_tab[3][byte(bi[(n + 1) & 3]3)] ^ *(k + n)

#ifdef LARGE_TABLES

#define ls_box(x)                \
    (

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      12704  2002-06-26 14:39  aes-ccm-1\aes.cpp

     文件       2136  2002-06-26 14:38  aes-ccm-1\aes_defs.h

     文件      42825  2002-06-26 10:07  aes-ccm-1\aes_vect.h

     文件      12109  2006-07-24 09:53  aes-ccm-1\ccm.cpp

     文件      14361  2007-07-04 14:42  aes-ccm-1\m_ccm.c

     目录          0  2018-05-30 17:56  aes-ccm-1

----------- ---------  ---------- -----  ----

                84135                    6


评论

共有 条评论