亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aesimpl.c

?? IBE是一種非對稱密碼技術
?? C
?? 第 1 頁 / 共 3 頁
字號:
static UInt32 RT2[256] = { RT };
#undef V

#define V(a,b,c,d) 0x##b##c##d##a
static UInt32 RT3[256] = { RT };
#undef V

#undef RT

/* round constants */

static UInt32 RCON[10] =
{
    0x01000000, 0x02000000, 0x04000000, 0x08000000,
    0x10000000, 0x20000000, 0x40000000, 0x80000000,
    0x1B000000, 0x36000000
};

/* key schedule tables */

/* platform-independant 32-bit integer manipulation macros */

#define GET_UINT32(n,b,i)                       \
{                                               \
    (n) = ( (UInt32) (b)[(i)    ] << 24 )       \
        | ( (UInt32) (b)[(i) + 1] << 16 )       \
        | ( (UInt32) (b)[(i) + 2] <<  8 )       \
        | ( (UInt32) (b)[(i) + 3]       );      \
}

#define PUT_UINT32(n,b,i)                       \
{                                               \
    (b)[(i)    ] = (unsigned char) ( (n) >> 24 );       \
    (b)[(i) + 1] = (unsigned char) ( (n) >> 16 );       \
    (b)[(i) + 2] = (unsigned char) ( (n) >>  8 );       \
    (b)[(i) + 3] = (unsigned char) ( (n)       );       \
}

/* AES key scheduling routine
 */

void AESInit (
   VoltLibCtx *libCtx,
   VoltAESCtx *ctx,
   unsigned int encryptFlag,
   VtItem *keyData
   )
{
  unsigned int index, wordCount;
  UInt32 *RK, *SK;
  UInt32 KT0[256];
  UInt32 KT1[256];
  UInt32 KT2[256];
  UInt32 KT3[256];
  UInt32 dKeyTable[64];

  switch (keyData->len)
  {
    case 24:
      ctx->rounds = 12;
      wordCount = 6;
      break;

    case 32:
      ctx->rounds = 14;
      wordCount = 8;
      break;

    case 16:
    default:
      ctx->rounds = 10;
      wordCount = 4;
  }

  RK = ctx->keyTable;

  /* Copy the key into the key table.
   */
  for (index = 0; index < wordCount; ++index)
  {
    GET_UINT32 (RK[index], keyData->data, index * 4 );
  }

  /* Set up the encryption key table.
   */
  switch (keyData->len)
  {
    case 16:

      /* Build the next 4 words of the key table, then move the temp
       * key table pointer up 4 words.
       */
      for (index = 0; index < 10; ++index, RK += 4)
      {
        RK[4]  = RK[0] ^ RCON[index] ^
          ( FSb[ (unsigned char) ( RK[3] >> 16 ) ] << 24 ) ^
          ( FSb[ (unsigned char) ( RK[3] >>  8 ) ] << 16 ) ^
          ( FSb[ (unsigned char) ( RK[3]       ) ] <<  8 ) ^
          ( FSb[ (unsigned char) ( RK[3] >> 24 ) ]       );

        RK[5]  = RK[1] ^ RK[4];
        RK[6]  = RK[2] ^ RK[5];
        RK[7]  = RK[3] ^ RK[6];
      }
      break;

    case 24:

      /* Build the next 6 words of the key table, then move the temp
       * key table pointer up 6 words.
       */
      for (index = 0; index < 8; ++index, RK += 6 )
      {
        RK[6]  = RK[0] ^ RCON[index] ^
          ( FSb[ (unsigned char) ( RK[5] >> 16 ) ] << 24 ) ^
          ( FSb[ (unsigned char) ( RK[5] >>  8 ) ] << 16 ) ^
          ( FSb[ (unsigned char) ( RK[5]       ) ] <<  8 ) ^
          ( FSb[ (unsigned char) ( RK[5] >> 24 ) ]       );

        RK[7]  = RK[1] ^ RK[6];
        RK[8]  = RK[2] ^ RK[7];
        RK[9]  = RK[3] ^ RK[8];
        RK[10] = RK[4] ^ RK[9];
        RK[11] = RK[5] ^ RK[10];
      }
      break;

    case 32:

      /* Build the next 8 words of the key table, then move the temp
       * key table pointer up 8 words.
       */
      for (index = 0; index < 7; ++index, RK += 8 )
      {
        RK[8]  = RK[0] ^ RCON[index] ^
          ( FSb[ (unsigned char) ( RK[7] >> 16 ) ] << 24 ) ^
          ( FSb[ (unsigned char) ( RK[7] >>  8 ) ] << 16 ) ^
          ( FSb[ (unsigned char) ( RK[7]       ) ] <<  8 ) ^
          ( FSb[ (unsigned char) ( RK[7] >> 24 ) ]       );

        RK[9]  = RK[1] ^ RK[8];
        RK[10] = RK[2] ^ RK[9];
        RK[11] = RK[3] ^ RK[10];

        RK[12] = RK[4] ^
          ( FSb[ (unsigned char) ( RK[11] >> 24 ) ] << 24 ) ^
          ( FSb[ (unsigned char) ( RK[11] >> 16 ) ] << 16 ) ^
          ( FSb[ (unsigned char) ( RK[11] >>  8 ) ] <<  8 ) ^
          ( FSb[ (unsigned char) ( RK[11]       ) ]       );

        RK[13] = RK[5] ^ RK[12];
        RK[14] = RK[6] ^ RK[13];
        RK[15] = RK[7] ^ RK[14];
      }
      break;
  }

  /* If this is encrypting, we're done.
   */
  if (encryptFlag == VOLT_AES_ENCRYPT)
    return;

  /* Set up the decryption key table.
   */
  for (index = 0; index < 256; ++index )
  {
    KT0[index] = RT0[ FSb[index] ];
    KT1[index] = RT1[ FSb[index] ];
    KT2[index] = RT2[ FSb[index] ];
    KT3[index] = RT3[ FSb[index] ];
  }

  SK = dKeyTable;

  *SK++ = *RK++;
  *SK++ = *RK++;
  *SK++ = *RK++;
  *SK++ = *RK++;

  for (index = 1; index < ctx->rounds; ++index )
  {
    RK -= 8;

    *SK++ = KT0[ (unsigned char) ( *RK >> 24 ) ] ^
      KT1[ (unsigned char) ( *RK >> 16 ) ] ^
      KT2[ (unsigned char) ( *RK >>  8 ) ] ^
      KT3[ (unsigned char) ( *RK       ) ]; RK++;

    *SK++ = KT0[ (unsigned char) ( *RK >> 24 ) ] ^
      KT1[ (unsigned char) ( *RK >> 16 ) ] ^
      KT2[ (unsigned char) ( *RK >>  8 ) ] ^
      KT3[ (unsigned char) ( *RK       ) ]; RK++;

    *SK++ = KT0[ (unsigned char) ( *RK >> 24 ) ] ^
      KT1[ (unsigned char) ( *RK >> 16 ) ] ^
      KT2[ (unsigned char) ( *RK >>  8 ) ] ^
      KT3[ (unsigned char) ( *RK       ) ]; RK++;

    *SK++ = KT0[ (unsigned char) ( *RK >> 24 ) ] ^
      KT1[ (unsigned char) ( *RK >> 16 ) ] ^
      KT2[ (unsigned char) ( *RK >>  8 ) ] ^
      KT3[ (unsigned char) ( *RK       ) ]; RK++;
  }

  RK -= 8;

  *SK++ = *RK++;
  *SK++ = *RK++;
  *SK++ = *RK++;
  *SK++ = *RK++;

  /* Copy the decryption key table into the context key table.
   */
  Z2Memcpy (ctx->keyTable, dKeyTable, 256);
  Z2Memset (dKeyTable, 0, 256);
}

int AESEncryptInit (
   VoltAlgorithmObject *algObj,
   VoltKeyObject *keyObj
   )
{
  int status;
  VtItem *keyData;
  VoltCipherClassCtx *cipherCtx = (VoltCipherClassCtx *)(algObj->classCtx);
  VoltBlockCipherCtx *blockCtx =
    (VoltBlockCipherCtx *)(cipherCtx->localCipherCtx);
  VoltAESCtx *aesCtx = (VoltAESCtx *)(blockCtx->algCtx);
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Make sure the key matches the algorithm object.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_KEY_OBJ;
    if ((keyObj->keyType & VOLT_KEY_TYPE_MASK_SYM_ALG) != VOLT_KEY_ALG_AES)
      break;

    /* We need data (status is still set to VT_ERROR_INVALID_KEY_OBJ if we
     * can't get the data out).
     */
    keyData = (VtItem *)(keyObj->keyData);
    if ((keyObj->keyType & VOLT_KEY_TYPE_MASK_DATA) != VOLT_KEY_TYPE_DATA)
    {
      if (keyObj->GetKeyData == (VGetKeyData)0)
        break;

      VOLT_SET_ERROR_TYPE (errorType, 0)
      VOLT_SET_FNCT_LINE (fnctLine)
      status = keyObj->GetKeyData (
        (VtKeyObject)keyObj, (Pointer *)&keyData);
      if (status != 0)
        break;
    }

    AESInit (
      (VoltLibCtx *)(algObj->voltObject.libraryCtx), aesCtx,
      VOLT_AES_ENCRYPT, keyData);
    status = 0;

  } while (0);

  VOLT_LOG_ERROR_COMPARE (
    status, algObj->voltObject.libraryCtx, status, errorType, fnctLine,
    "AESEncryptInit", (char *)0)

  return (status);
}

int AESEncryptUpdate (
   VoltAlgorithmObject *algObj,
   VtRandomObject random,
   unsigned char *dataToEncrypt,
   unsigned int dataToEncryptLen,
   unsigned char *encryptedData
   )
{
  VoltCipherClassCtx *cipherCtx = (VoltCipherClassCtx *)(algObj->classCtx);
  VoltBlockCipherCtx *blockCtx =

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va国产va欧美va观看| 不卡的电影网站| 欧美无砖专区一中文字| 中文字幕一区二区三区在线播放| 一区二区三区在线视频观看58 | 一区二区三区欧美日| 国产精品18久久久久久久久| 99综合电影在线视频| 国产精品久久二区二区| 99re66热这里只有精品3直播| 亚洲欧洲无码一区二区三区| 99麻豆久久久国产精品免费优播| 亚洲色图另类专区| 蜜桃精品视频在线| 精品国免费一区二区三区| 国产乱码一区二区三区| 欧美国产日产图区| 久久成人免费日本黄色| 久久精品免费在线观看| 91网上在线视频| 热久久免费视频| 91久久精品午夜一区二区| 久久亚洲精品小早川怜子| 高清久久久久久| 亚洲国产三级在线| 99久久久无码国产精品| 亚洲一级不卡视频| 成人午夜在线视频| 2020国产精品自拍| 日韩av电影免费观看高清完整版| 精品国产一区二区三区忘忧草| 不卡免费追剧大全电视剧网站| 一区二区三区中文免费| 久久色.com| 久久精品久久99精品久久| 国产精品福利一区| 欧美另类一区二区三区| 成人午夜大片免费观看| 久久久不卡网国产精品二区| 日韩一本二本av| 成人黄色综合网站| 日韩电影在线免费看| 在线亚洲+欧美+日本专区| 国产又粗又猛又爽又黄91精品| 亚洲精品国产第一综合99久久 | 3d动漫精品啪啪| 亚洲图片有声小说| 欧美激情一区二区三区| 91精品国产综合久久福利软件| eeuss鲁片一区二区三区| 日韩电影一区二区三区| 亚洲黄色免费网站| 欧美三区免费完整视频在线观看| 亚洲同性同志一二三专区| 色婷婷av一区二区三区软件 | 中文字幕一区二区三区不卡| 日韩视频在线观看一区二区| 一本大道久久a久久综合婷婷 | 日本一区二区免费在线观看视频| 欧美高清视频不卡网| 婷婷中文字幕综合| 亚洲乱码国产乱码精品精小说| 国产日韩视频一区二区三区| 日韩小视频在线观看专区| 欧美手机在线视频| 在线欧美小视频| 天堂成人国产精品一区| 日韩一区二区精品葵司在线| 久久se精品一区二区| 国产蜜臀av在线一区二区三区| 91精品欧美久久久久久动漫| 色婷婷亚洲精品| 色综合中文综合网| 久久国产三级精品| 久久久久久**毛片大全| 欧美一级搡bbbb搡bbbb| 日本成人在线一区| 欧美成人video| 欧美日韩亚洲国产综合| 精品视频1区2区| 青青草国产成人99久久| 久久美女艺术照精彩视频福利播放| 777xxx欧美| 风间由美一区二区三区在线观看| 国产乱国产乱300精品| 精品一区二区三区久久| 亚洲免费电影在线| 亚洲精品国产第一综合99久久 | 国产成人亚洲综合a∨猫咪| 国产精华液一区二区三区| 国产最新精品精品你懂的| 亚洲伦在线观看| 亚洲精品乱码久久久久久黑人| 亚洲免费毛片网站| 午夜视频久久久久久| 国产亚洲成av人在线观看导航 | 国产传媒欧美日韩成人| 精品动漫一区二区三区在线观看| 精品欧美乱码久久久久久1区2区| 色婷婷综合久久| 国产福利一区在线观看| 一区二区三区四区中文字幕| 精品国产一区二区亚洲人成毛片| 久久午夜免费电影| 欧美三级韩国三级日本一级| 欧美精品在线观看播放| 久久午夜国产精品| 亚洲欧美福利一区二区| 亚洲精品在线一区二区| 欧美激情在线一区二区| 日韩视频123| 亚洲国产精品黑人久久久| 日韩午夜激情视频| 在线免费观看日本一区| 欧美一二三四区在线| 在线观看视频一区二区欧美日韩| 欧美精品亚洲一区二区在线播放| 99国内精品久久| 91麻豆精品国产91久久久久久久久 | 337p粉嫩大胆色噜噜噜噜亚洲| 欧美日韩国产另类一区| 久久综合视频网| 一区二区三区精品| 精品一区二区三区免费视频| 粉嫩13p一区二区三区| 欧美日韩一区二区三区高清| 久久精品夜色噜噜亚洲aⅴ| 亚洲三级免费电影| 成人欧美一区二区三区视频网页| 亚洲成av人影院| 婷婷六月综合亚洲| 91蜜桃视频在线| 色香蕉久久蜜桃| 在线免费精品视频| 欧美日韩在线观看一区二区| 欧美在线观看一区| 欧美性视频一区二区三区| 色噜噜狠狠色综合中国 | 久久人人爽人人爽| 国产欧美一二三区| 日本欧美一区二区| 日本久久一区二区三区| 国产亚洲制服色| 麻豆国产精品官网| 欧美日韩在线亚洲一区蜜芽| ...av二区三区久久精品| 国产成人精品网址| 成人福利视频在线| 91影院在线免费观看| 亚洲国产一区二区a毛片| 一区二区三区欧美激情| 国产成人综合网站| 正在播放一区二区| 日韩毛片高清在线播放| 亚洲一区二区三区在线| 亚洲欧美另类图片小说| 亚洲视频一区二区在线| 日韩一区欧美一区| 亚洲欧美日本在线| 亚洲一二三区在线观看| 亚洲国产成人精品视频| 国产美女精品人人做人人爽| 欧洲精品一区二区| 国产欧美视频一区二区三区| 国产乱子伦视频一区二区三区| 在线观看国产日韩| 中文字幕一区二区三区视频| 国产真实乱子伦精品视频| 欧美天天综合网| 3751色影院一区二区三区| 欧美videofree性高清杂交| 亚洲国产一二三| 日本韩国欧美在线| 亚洲高清视频的网址| 色偷偷一区二区三区| 欧美日韩午夜精品| 精品国产免费视频| 热久久免费视频| 欧美日韩一区二区欧美激情| 日韩视频一区在线观看| 日韩国产欧美在线播放| 91免费在线视频观看| 日韩欧美久久久| 国产日韩v精品一区二区| 国产精品免费网站在线观看| 国产激情精品久久久第一区二区 | 99久久国产综合精品麻豆| 久久综合给合久久狠狠狠97色69| 国产精品色在线观看| 亚洲一区免费在线观看| 97久久超碰国产精品| 国产精品久久久久久亚洲伦| 亚洲福利视频三区| 欧美肥胖老妇做爰| 久久久精品免费免费| 国产**成人网毛片九色 | 久久成人久久爱| 国产欧美精品一区| av高清不卡在线| 亚洲色图欧洲色图|