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

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

?? descore.c

?? DES encryption source, for chaining and block crypt
?? C
字號:
/* des.c
 *
 * The des block cipher.
 *
 * $Id: des.c,v 1.6 2002/01/14 16:02:38 nisse Exp $
 */

/* nettle, low-level cryptographics library
 *
 * Copyright (C) 2001 Niels M?ler
 *  
 * The nettle library is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or (at your
 * option) any later version.
 * 
 * The nettle library 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 Lesser General Public
 * License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with the nettle library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 * MA 02111-1307, USA.
 */

/*	des - fast & portable DES encryption & decryption.
 *	Copyright (C) 1992  Dana L. How
 *	Please see the file `descore.README' for the complete copyright notice.
 */

#include "des3.h"
#include "desCode.h"


//#include <assert.h>


static ENCRYPT(DesSmallFipsEncrypt,TEMPSMALL, LOADFIPS,KEYMAPSMALL,SAVEFIPS)
static DECRYPT(DesSmallFipsDecrypt,TEMPSMALL, LOADFIPS,KEYMAPSMALL,SAVEFIPS)

/* various tables */

const uint32_t
des_keymap[] = {
#include	"keymap.h"
};

static const uint8_t
rotorsdes[] = {
#include	"rotors.h"
};

#if 0
static const uint8_t
rotorss2ita[] = {
#include	"rotorss2ita.h"
};
#endif

static const char
parity[] = {
#include	"parity.h"
};

void
des_fix_parity(unsigned length, uint8_t *dst,
	       const uint8_t *src)
{
  unsigned i;
  for (i = 0; i<length; i++)
    dst[i] = src[i] ^ (parity[src[i]] == 8);
}

int
des_set_key_internal(struct des_ctx *ctx, const uint8_t *key, const uint8_t *rotors)
{
  register uint32_t n, w;
  register char * b0, * b1;
  char bits0[56], bits1[56];
  uint32_t *method;
  const uint8_t *k;

  {
    register const char *b;
    /* check for bad parity and weak keys */
    b = parity;
    n  = b[key[0]]; n <<= 4;
    n |= b[key[1]]; n <<= 4;
    n |= b[key[2]]; n <<= 4;
    n |= b[key[3]]; n <<= 4;
    n |= b[key[4]]; n <<= 4;
    n |= b[key[5]]; n <<= 4;
    n |= b[key[6]]; n <<= 4;
    n |= b[key[7]];
    w  = 0x88888888l;
  }
  
  /* report bad parity in key */
  if ( n & w )
    {
      ctx->status = DES_BAD_PARITY;
      return 0;
    }
  ctx->status = DES_OK; 

  /* report a weak or semi-weak key */
  if ( !((n - (w >> 3)) & w) ) {	/* 1 in 10^10 keys passes this test */
    if ( n < 0X41415151 ) {
      if ( n < 0X31312121 ) {
	if ( n < 0X14141515 ) {
	  /* 01 01 01 01 01 01 01 01 */
	  if ( n == 0X11111111 ) goto weak;
	  /* 01 1F 01 1F 01 0E 01 0E */
	  if ( n == 0X13131212 ) goto weak;
	} else {
	  /* 01 E0 01 E0 01 F1 01 F1 */
	  if ( n == 0X14141515 ) goto weak;
	  /* 01 FE 01 FE 01 FE 01 FE */
	  if ( n == 0X16161616 ) goto weak;
	}
      } else {
	if ( n < 0X34342525 ) {
	  /* 1F 01 1F 01 0E 01 0E 01 */
	  if ( n == 0X31312121 ) goto weak;
	  /* 1F 1F 1F 1F 0E 0E 0E 0E */	/* ? */
	  if ( n == 0X33332222 ) goto weak;
	} else {
	  /* 1F E0 1F E0 0E F1 0E F1 */
	  if ( n == 0X34342525 ) goto weak;
	  /* 1F FE 1F FE 0E FE 0E FE */
	  if ( n == 0X36362626 ) goto weak;
	}
      }
    } else {
      if ( n < 0X61616161 ) {
	if ( n < 0X44445555 ) {
	  /* E0 01 E0 01 F1 01 F1 01 */
	  if ( n == 0X41415151 ) goto weak;
	  /* E0 1F E0 1F F1 0E F1 0E */
	  if ( n == 0X43435252 ) goto weak;
	} else {
	  /* E0 E0 E0 E0 F1 F1 F1 F1 */	/* ? */
	  if ( n == 0X44445555 ) goto weak;
	  /* E0 FE E0 FE F1 FE F1 FE */
	  if ( n == 0X46465656 ) goto weak;
	}
      } else {
	if ( n < 0X64646565 ) {
	  /* FE 01 FE 01 FE 01 FE 01 */
	  if ( n == 0X61616161 ) goto weak;
	  /* FE 1F FE 1F FE 0E FE 0E */
	  if ( n == 0X63636262 ) goto weak;
	} else {
	  /* FE E0 FE E0 FE F1 FE F1 */
	  if ( n == 0X64646565 ) goto weak;
	  /* FE FE FE FE FE FE FE FE */
	  if ( n == 0X66666666 )
          {
          weak:
            ctx->status = DES_WEAK_KEY;
          }
	}
      }
    }
  }

  /* NOTE: We go on and expand the key, even if it was weak */
  /* explode the bits */
  n = 56;
  b0 = bits0;
  b1 = bits1;
  do {
    w = (256 | *key++) << 2;
    do {
      --n;
      b1[n] = 8 & w;
      w >>= 1;
      b0[n] = 4 & w;
    } while ( w >= 16 );
  } while ( n );

  /* put the bits in the correct places */
  n = 16;
  k = rotors;
  method = ctx->key;
  
  do {
    w   = (b1[k[ 0   ]] | b0[k[ 1   ]]) << 4;
    w  |= (b1[k[ 2   ]] | b0[k[ 3   ]]) << 2;
    w  |=  b1[k[ 4   ]] | b0[k[ 5   ]];
    w <<= 8;
    w  |= (b1[k[ 6   ]] | b0[k[ 7   ]]) << 4;
    w  |= (b1[k[ 8   ]] | b0[k[ 9   ]]) << 2;
    w  |=  b1[k[10   ]] | b0[k[11   ]];
    w <<= 8;
    w  |= (b1[k[12   ]] | b0[k[13   ]]) << 4;
    w  |= (b1[k[14   ]] | b0[k[15   ]]) << 2;
    w  |=  b1[k[16   ]] | b0[k[17   ]];
    w <<= 8;
    w  |= (b1[k[18   ]] | b0[k[19   ]]) << 4;
    w  |= (b1[k[20   ]] | b0[k[21   ]]) << 2;
    w  |=  b1[k[22   ]] | b0[k[23   ]];

    method[0] = w;

    w   = (b1[k[ 0+24]] | b0[k[ 1+24]]) << 4;
    w  |= (b1[k[ 2+24]] | b0[k[ 3+24]]) << 2;
    w  |=  b1[k[ 4+24]] | b0[k[ 5+24]];
    w <<= 8;
    w  |= (b1[k[ 6+24]] | b0[k[ 7+24]]) << 4;
    w  |= (b1[k[ 8+24]] | b0[k[ 9+24]]) << 2;
    w  |=  b1[k[10+24]] | b0[k[11+24]];
    w <<= 8;
    w  |= (b1[k[12+24]] | b0[k[13+24]]) << 4;
    w  |= (b1[k[14+24]] | b0[k[15+24]]) << 2;
    w  |=  b1[k[16+24]] | b0[k[17+24]];
    w <<= 8;
    w  |= (b1[k[18+24]] | b0[k[19+24]]) << 4;
    w  |= (b1[k[20+24]] | b0[k[21+24]]) << 2;
    w  |=  b1[k[22+24]] | b0[k[23+24]];

    ROR(w, 4, 28);		/* could be eliminated */
    method[1] = w;

    k	+= 48;
    method	+= 2;
  } while ( --n );

  return (ctx->status == DES_OK);
}

int
des_set_key(struct des_ctx *ctx, const uint8_t *key)
{
	return des_set_key_internal(ctx, key, rotorsdes);
}

#if 0
int
des_set_key_s2ita(struct des_ctx *ctx, const uint8_t *key)
{
	return des_set_key_internal(ctx, key, rotorss2ita);
}
#endif


void
des_encrypt(struct des_ctx *ctx,
	    unsigned length, uint8_t *dst,
	    const uint8_t *src)
{
  //assert(!(length % DES_BLOCK_SIZE));
  //assert(ctx->status == DES_OK);
  
  while (length)
    {
      DesSmallFipsEncrypt(dst, ctx->key, src);
      length -= DES_BLOCK_SIZE;
      src += DES_BLOCK_SIZE;
      dst += DES_BLOCK_SIZE;
    }
}

void
des_decrypt(struct des_ctx *ctx,
	    unsigned length, uint8_t *dst,
	    const uint8_t *src)
{
  //assert(!(length % DES_BLOCK_SIZE));
  //assert(ctx->status == DES_OK);

  while (length)
    {
      DesSmallFipsDecrypt(dst, ctx->key, src);
      length -= DES_BLOCK_SIZE;
      src += DES_BLOCK_SIZE;
      dst += DES_BLOCK_SIZE;
    }
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美综合另类在线卡通| 欧美亚洲综合另类| 午夜精品久久久久久不卡8050| 国产婷婷色一区二区三区在线| 精品国产乱码久久久久久图片| 欧美欧美午夜aⅴ在线观看| 色婷婷综合久久| 91久久久免费一区二区| 在线区一区二视频| 91精品1区2区| 欧美日韩免费一区二区三区视频| 欧美三区在线观看| 欧美日韩午夜在线视频| 91精品国产综合久久精品图片| 678五月天丁香亚洲综合网| 91精品国产一区二区三区香蕉| 国产大陆精品国产| 免费一级欧美片在线观看| 日韩av午夜在线观看| 日本视频一区二区| 国产一区二区三区黄视频| 极品少妇一区二区三区精品视频| 美日韩一级片在线观看| 久久激情五月激情| 精品夜夜嗨av一区二区三区| 青青草国产精品亚洲专区无| 国内成人精品2018免费看| 国产乱国产乱300精品| 粉嫩高潮美女一区二区三区| 成人免费看视频| 一本在线高清不卡dvd| 欧美日韩黄色影视| 日韩一区二区三区视频在线| 国产亚洲一二三区| 国产精品视频麻豆| 欧美久久久久免费| 久久免费看少妇高潮| 国产精品热久久久久夜色精品三区 | 欧美日韩国产精选| 精品成人a区在线观看| 国产日韩欧美亚洲| 亚洲图片另类小说| 视频一区二区中文字幕| 国模一区二区三区白浆| 色94色欧美sute亚洲线路一ni| 欧美久久久一区| 欧美高清在线一区二区| 午夜电影网亚洲视频| 国产精品白丝av| 在线精品视频免费播放| 久久综合国产精品| 亚洲男人都懂的| 午夜在线电影亚洲一区| 国产a久久麻豆| 7777精品伊人久久久大香线蕉的 | 国模冰冰炮一区二区| 91偷拍与自偷拍精品| 精品国产伦一区二区三区观看体验 | 欧美一级国产精品| 亚洲精品国久久99热| 国产综合久久久久久鬼色| 欧美色图免费看| 亚洲乱码中文字幕| 国产成人在线影院| 欧美一区二区三级| 国产精品美女久久久久高潮| 精品一区二区免费| 欧美日韩一级二级| 亚洲国产成人午夜在线一区 | 久久91精品国产91久久小草| 欧美日韩在线播| 成人免费视频在线观看| 国产很黄免费观看久久| 91精品欧美综合在线观看最新| √…a在线天堂一区| 成人一二三区视频| 国产午夜三级一区二区三| 蜜臀av一级做a爰片久久| 欧美日韩亚洲丝袜制服| 一区av在线播放| 色偷偷88欧美精品久久久| 亚洲欧洲国产专区| 99久久精品国产观看| 国产精品二三区| www.欧美色图| 日韩伦理电影网| 91无套直看片红桃| 亚洲理论在线观看| 日本韩国一区二区| 亚洲综合免费观看高清完整版在线 | 国产一区在线精品| 久久综合九色综合97婷婷| 韩国精品主播一区二区在线观看 | 久久er99精品| 久久综合丝袜日本网| 国产精品一级在线| 国产精品麻豆99久久久久久| av中文字幕不卡| 亚洲九九爱视频| 欧美日韩国产不卡| 精品在线免费观看| 国产精品麻豆网站| 一本到三区不卡视频| 婷婷一区二区三区| 日韩视频免费观看高清完整版 | 亚洲综合色自拍一区| 欧美日本乱大交xxxxx| 麻豆精品国产传媒mv男同| 2023国产精品视频| 91久久久免费一区二区| 亚洲视频一区二区免费在线观看| 欧美亚洲一区二区在线| 精品一区二区精品| 亚洲乱码国产乱码精品精的特点 | 日韩美女一区二区三区| 成人精品视频网站| 性欧美疯狂xxxxbbbb| 久久只精品国产| 欧美三区在线视频| 国产a久久麻豆| 日韩经典一区二区| 国产精品第13页| 欧美mv日韩mv国产网站app| www.亚洲色图.com| 麻豆国产精品777777在线| 国产精品久久久久久福利一牛影视 | 国产一区二区三区黄视频| 亚洲综合成人在线| 中文字幕二三区不卡| 欧美一区二区在线视频| 91麻豆免费在线观看| 精品一区二区三区日韩| 亚洲国产一区二区三区 | 精品视频在线免费| av亚洲精华国产精华| 国产一区二区三区免费看| 亚洲18色成人| 一区二区日韩电影| 国产精品初高中害羞小美女文 | 成人午夜激情影院| 久久99九九99精品| 日韩在线卡一卡二| 亚洲精品一二三区| 国产精品久久久久久妇女6080| 久久老女人爱爱| 精品国产91亚洲一区二区三区婷婷| 欧美日韩一区视频| 欧美在线免费观看亚洲| 色又黄又爽网站www久久| 粗大黑人巨茎大战欧美成人| 激情文学综合丁香| 极品美女销魂一区二区三区 | 欧美亚洲国产怡红院影院| 波多野结衣在线aⅴ中文字幕不卡| 国产一区视频在线看| 久久国产乱子精品免费女| 欧美aⅴ一区二区三区视频| 亚洲综合色视频| 国产精品久久久久久久浪潮网站| 亚洲免费看黄网站| 综合久久久久久| 国产欧美综合在线| 欧美一区二区在线免费观看| 99精品国产99久久久久久白柏| 日本视频免费一区| 亚洲一区国产视频| 1000部国产精品成人观看| 久久综合九色综合欧美亚洲| 国产一区不卡在线| 亚洲成人福利片| 日韩一级黄色片| 欧美日韩国产欧美日美国产精品| 成人ar影院免费观看视频| 国产一区二区电影| 激情综合网av| 久久精品国产在热久久| 亚洲成av人片一区二区| 亚洲主播在线播放| 亚洲国产综合人成综合网站| 一区二区成人在线观看| 国产精品网站一区| 日韩欧美一区二区在线视频| 3751色影院一区二区三区| 欧美三电影在线| 欧美日韩精品三区| 制服.丝袜.亚洲.中文.综合| 666欧美在线视频| 日韩区在线观看| 欧美一区三区四区| 欧美一区二区三区播放老司机| 日韩欧美中文字幕精品| 91在线观看一区二区| 欧美三电影在线| 91精品国产91久久综合桃花| 日韩一本二本av| 久久亚洲一级片| **网站欧美大片在线观看| 亚洲精品美腿丝袜| 偷拍日韩校园综合在线| 蜜桃免费网站一区二区三区|