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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? md5.h

?? ice中間件 文件傳輸原代碼 更新為服務形式
?? H
?? 第 1 頁 / 共 5 頁
字號:
    des_crypt( ctx->dsk, input, output );
}

int des3_set_2keys( des3_context *ctx, uint8 key1[8], uint8 key2[8] )
{
    int i;
    des_main_ks( ctx->esk     , key1 );
    des_main_ks( ctx->dsk + 32, key2 );

    for( i = 0; i < 32; i += 2 )
    {
        ctx->dsk[i     ] = ctx->esk[30 - i];
        ctx->dsk[i +  1] = ctx->esk[31 - i];

        ctx->esk[i + 32] = ctx->dsk[62 - i];
        ctx->esk[i + 33] = ctx->dsk[63 - i];

        ctx->esk[i + 64] = ctx->esk[     i];
        ctx->esk[i + 65] = ctx->esk[ 1 + i];

        ctx->dsk[i + 64] = ctx->dsk[     i];
        ctx->dsk[i + 65] = ctx->dsk[ 1 + i];
    }

    return  SUCCESS;
}

int des3_set_3keys( des3_context *ctx, uint8 key1[8], uint8 key2[8],
                                       uint8 key3[8] )
{
    int i;
    des_main_ks( ctx->esk     , key1 );
    des_main_ks( ctx->dsk + 32, key2 );
    des_main_ks( ctx->esk + 64, key3 );

    for( i = 0; i < 32; i += 2 )
    {
        ctx->dsk[i     ] = ctx->esk[94 - i];
        ctx->dsk[i +  1] = ctx->esk[95 - i];

        ctx->esk[i + 32] = ctx->dsk[62 - i];
        ctx->esk[i + 33] = ctx->dsk[63 - i];

        ctx->dsk[i + 64] = ctx->esk[30 - i];
        ctx->dsk[i + 65] = ctx->esk[31 - i];
    }

    return  SUCCESS;
}

void des3_crypt( uint32 SK[96], uint8 input[8], uint8 output[8] )
{
    uint32 X, Y, T;

    GET_UINT32( X, input, 0 );
    GET_UINT32( Y, input, 4 );

    DES_IP( X, Y );

    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );

    DES_ROUND( X, Y );  DES_ROUND( Y, X );
    DES_ROUND( X, Y );  DES_ROUND( Y, X );
    DES_ROUND( X, Y );  DES_ROUND( Y, X );
    DES_ROUND( X, Y );  DES_ROUND( Y, X );
    DES_ROUND( X, Y );  DES_ROUND( Y, X );
    DES_ROUND( X, Y );  DES_ROUND( Y, X );
    DES_ROUND( X, Y );  DES_ROUND( Y, X );
    DES_ROUND( X, Y );  DES_ROUND( Y, X );

    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );
    DES_ROUND( Y, X );  DES_ROUND( X, Y );

    DES_FP( Y, X );

    PUT_UINT32( Y, output, 0 );
    PUT_UINT32( X, output, 4 );
}

void des3_encrypt( des3_context *ctx, uint8 input[8], uint8 output[8] )
{
    des3_crypt( ctx->esk, input, output );
}

void des3_decrypt( des3_context *ctx, uint8 input[8], uint8 output[8] )
{
    des3_crypt( ctx->dsk, input, output );
}


int DESEncrypt(OUT unsigned char *Out,IN unsigned char *In,IN unsigned long datalen,IN unsigned char *KeyData)
{
	des_context  DESctx;
	long	i,j;
	unsigned long fill_len = 0;
	unsigned char temp1[8] = {0};
	unsigned char temp2[8] = {0};
	
	if (datalen <= 0)
		return PARAMETER;
	if( !( Out && In && KeyData   ) )
		return PARAMETER;
	
		
	if(datalen>8)
	{
		memcpy(DES3_keys[0],KeyData,8);
		des_set_key( &DESctx,DES3_keys[0]);
		for(i=0,j=datalen/8; i<j; ++i,Out+=8,In+=8)
			des_encrypt( &DESctx, In, Out);
		
		//處理后幾個字節(jié),也就是進行填充
		fill_len = datalen/8*8 + datalen%8 - 8;
		memmove(temp1,Out-8+datalen%8, 8-datalen%8);
		memmove(temp1+8-datalen%8,In,datalen%8);
		des_encrypt( &DESctx,temp1,Out-8+datalen%8 );
	}
	else
	{
		memcpy(DES3_keys[0],KeyData,8);
		des_set_key( &DESctx,DES3_keys[0]);
		des_encrypt( &DESctx, In, Out);
//		des_encrypt( &DESctx, vi, temp1);
//		for(fill_len=0; fill_len<datalen;fill_len++)
//			Out[fill_len] = temp1[fill_len]^In[fill_len];
	}
	
	return SUCCESS;
}


int DESDecrypt(OUT unsigned char *Out,IN unsigned char *In,IN unsigned long datalen,IN unsigned char *KeyData)
{
	des_context  DESctx;
	long	i,j;
	unsigned long fill_len = 0;
	unsigned char temp1[8] = {0};
	unsigned char temp2[8] = {0};
	
	if (datalen <= 0)
		return PARAMETER;
	if( !( Out && In && KeyData   ) )
		return PARAMETER;
	
	
	if(datalen>8)
	{
		memcpy(DES3_keys[0],KeyData,8);
		des_set_key( &DESctx,DES3_keys[0]);
		for(i=0,j=datalen/8-1; i<j; ++i,Out+=8,In+=8)
			des_decrypt( &DESctx, In, Out);
		
		//處理后幾個字節(jié),也就是進行填充
		memcpy(temp1,In+datalen%8,8);
		des_decrypt( &DESctx,temp1,temp2);
		memcpy(Out+8,temp2+8-datalen%8,datalen%8);
		
		memcpy(temp1,In,datalen%8);
		memcpy(temp1+datalen%8,temp2,8-datalen%8);
		des_decrypt( &DESctx,temp1,temp2);
		memcpy(Out,temp2,8);
	}
	else
	{
		memcpy(DES3_keys[0],KeyData,8);
		des_set_key( &DESctx,DES3_keys[0]);
//		des_encrypt( &DESctx, vi, temp1);
			des_decrypt( &DESctx, In, Out);
//		for(fill_len=0; fill_len<datalen;fill_len++)
//			Out[fill_len] = temp1[fill_len]^In[fill_len];
	}
	
	return SUCCESS;
}


int DES3Encrypt(OUT unsigned char *Out,IN unsigned char *In,IN unsigned long datalen,IN unsigned char *KeyData)
{
	des3_context DES3ctx;
	long	i,j;
	unsigned long fill_len = 0;
	unsigned char temp1[8] = {0};
	unsigned char temp2[8] = {0};
	
	if (datalen <= 0)
		return PARAMETER;
	if( !( Out && In && KeyData   ) )
		return PARAMETER;
	

	if(datalen>8)
	{
		memcpy(DES3_keys[0],KeyData,8);
		memcpy(DES3_keys[1],KeyData+8,8);
		des3_set_2keys( &DES3ctx, DES3_keys[0],DES3_keys[1] );
		for(i=0,j=datalen/8; i<j; ++i,Out+=8,In+=8)
			des3_encrypt( &DES3ctx, In, Out );
		//處理后幾個字節(jié),也就是進行填充
		fill_len = datalen/8*8 + datalen%8 - 8;
		memmove(temp1,Out-8+datalen%8, 8-datalen%8);
		memmove(temp1+8-datalen%8,In,datalen%8);
		des3_encrypt( &DES3ctx,temp1,Out-8+datalen%8 );
	}
	else
	{
		memcpy(DES3_keys[0],KeyData,8);
		memcpy(DES3_keys[1],KeyData+8,8);
		des3_set_2keys( &DES3ctx, DES3_keys[0],DES3_keys[1] );
		des3_encrypt( &DES3ctx, vi, temp1);
		for(fill_len=0; fill_len<datalen;fill_len++)
			Out[fill_len] = temp1[fill_len]^In[fill_len];
	}
	
	return SUCCESS;
}


int DES3Decrypt(OUT unsigned char *Out,IN unsigned char *In,IN unsigned long datalen,IN unsigned char *KeyData)
{
	des3_context DES3ctx;
	long	i,j;
	unsigned long fill_len = 0;
	unsigned char temp1[8] = {0};
	unsigned char temp2[8] = {0};
	
	if (datalen <= 0)
		return PARAMETER;
	if( !( Out && In && KeyData   ) )
		return PARAMETER;
	
	
	if(datalen>8)
	{
		memcpy(DES3_keys[0],KeyData,8);
		memcpy(DES3_keys[1],KeyData+8,8);
		des3_set_2keys( &DES3ctx, DES3_keys[0],DES3_keys[1] );
		for(i=0,j=datalen/8-1; i<j; ++i,Out+=8,In+=8)
			des3_decrypt( &DES3ctx, In, Out );
		//處理后幾個字節(jié),也就是進行填充
		memcpy(temp1,In+datalen%8,8);
		des3_decrypt( &DES3ctx,temp1,temp2);
		memcpy(Out+8,temp2+8-datalen%8,datalen%8);
		
		memcpy(temp1,In,datalen%8);
		memcpy(temp1+datalen%8,temp2,8-datalen%8);
		des3_decrypt( &DES3ctx,temp1,temp2);
		memcpy(Out,temp2,8);
	}
	else
	{
		memcpy(DES3_keys[0],KeyData,8);
		memcpy(DES3_keys[1],KeyData+8,8);
		des3_set_2keys( &DES3ctx, DES3_keys[0],DES3_keys[1] );
		des3_encrypt( &DES3ctx, vi, temp1);
		for(fill_len=0; fill_len<datalen;fill_len++)
			Out[fill_len] = temp1[fill_len]^In[fill_len];
	}
	
	return SUCCESS;
}


/************************************************************************/
/* 產(chǎn)生隨機數(shù)接口                                                       */
/************************************************************************/
/************************************************************************/
/* 產(chǎn)生隨機的整數(shù)                                                       */
/************************************************************************/
void genrandinteruse (unsigned long * RandStr, unsigned long StrLen)
{
	unsigned long i;
	
	const unsigned long a = 65539;
	const unsigned long b = 65539; 
	
	unsigned long seed0;
	unsigned long seed1;
	
	srand( (unsigned)time( NULL ) );
	
	seed0 = rand();
	seed1 = rand();
	
	for(i=0; i<StrLen; i++)
	{
		RandStr[i] = a * seed1 + b * seed0 ;
		seed0 = seed1;
		seed1 =  RandStr[i];
	}	
}     

/************************************************************************/
/* 產(chǎn)生隨機的數(shù)據(jù)                                                       */
/************************************************************************/
void R_memset (POINTER output,  int value,  unsigned int len)  
{
	if (len)
		memset (output, value, len);
}

void R_memcpy (	POINTER output,                                           
				POINTER input,                                            
				unsigned int len)
{
	if (len)
		memcpy (output, input, len);
}

int R_memcmp (	POINTER firstBlock, 
				POINTER secondBlock,
				unsigned int len)
{
	if (len)
		return (memcmp (firstBlock, secondBlock, len));
	else
		return (0);
}

void InitRandomStruct (R_RANDOM_STRUCT *randomStruct)
{
	
	R_memset ((POINTER)randomStruct, 0, sizeof (*randomStruct));
	genrandinteruse((UINT4 *)&randomStruct->state, 4);
	
}

int R_RandomInit (R_RANDOM_STRUCT *randomStruct)
{
  randomStruct->bytesNeeded = RANDOM_BYTES_NEEDED;
  R_memset ((POINTER)randomStruct->state, 0, sizeof (randomStruct->state));
  randomStruct->outputAvailable = 0;
  
  return (0);
}

int R_RandomUpdate (R_RANDOM_STRUCT *randomStruct, unsigned char *block, unsigned int blockLen)                       
{
  MD5_CTX context;
  unsigned char digest[16];
  unsigned int i, x;
  
  MD5Init (&context);
  MD5Update (&context, block, blockLen);
  MD5Final (digest, &context);

  x = 0;
  for (i = 0; i < 16; i++) {
    x += randomStruct->state[15-i] + digest[15-i];
    randomStruct->state[15-i] = (unsigned char)x;
    x >>= 8;
  }
  
  if (randomStruct->bytesNeeded < blockLen)
    randomStruct->bytesNeeded = 0;
  else
    randomStruct->bytesNeeded -= blockLen;
  
  R_memset ((POINTER)digest, 0, sizeof (digest));
  x = 0;
  
  return (0);
}

int R_GetRandomBytesNeeded (unsigned int *bytesNeeded, R_RANDOM_STRUCT *randomStruct)      
{
  *bytesNeeded = randomStruct->bytesNeeded;
  
  return (0);
}


int R_GenerateBytes (unsigned char *block, unsigned int blockLen, R_RANDOM_STRUCT *randomStruct)                 
{
  MD5_CTX context;
  unsigned int available, i;
  
  if (randomStruct->bytesNeeded)
    return (RE_NEED_RANDOM);
  
  available = randomStruct->outputAvailable;
  
  while (blockLen > available) {
    R_memcpy
      ((POINTER)block, (POINTER)&randomStruct->output[16-available],
       available);
    block += available;
    blockLen -= available;

    MD5Init (&context);
    MD5Update (&context, randomStruct->state, 16);
    MD5Final (randomStruct->output, &context);
    available = 16;

    for (i = 0; i < 16; i++)
      if (randomStruct->state[15-i]++)
        break;
  }

  R_memcpy 
    ((POINTER)block, (POINTER)&randomStruct->output[16-available], blockLen);
  randomStruct->outputAvailable = available - blockLen;

  return (0);
}

void R_RandomFinal (R_RANDOM_STRUCT *randomStruct)
{
  R_memset ((POINTER)randomStruct, 0, sizeof (*randomStruct));
}

/************************************************************************/
/* 非對稱算法函數(shù)接口RSA                                                */
/************************************************************************/
/************************************************************************/
/* RSA結(jié)構(gòu)定義                                                          */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品1区2区在线观看| 91丝袜美腿高跟国产极品老师 | 免费成人在线播放| 亚洲综合一二区| 亚洲在线一区二区三区| 亚洲精品伦理在线| 伊人色综合久久天天人手人婷| 中文字幕av一区二区三区| 久久一区二区三区四区| 国产日韩欧美制服另类| 中文字幕欧美国产| 中文字幕一区二区三区av| 一区在线观看视频| 亚洲国产精品一区二区久久| 亚洲成人av免费| 精品一区二区三区视频在线观看| 国产一区高清在线| 99精品国产视频| 欧美浪妇xxxx高跟鞋交| 欧美一区二区网站| 中文字幕国产精品一区二区| 亚洲欧洲另类国产综合| 亚洲高清中文字幕| 激情图片小说一区| 色婷婷综合中文久久一本| 欧美一区二区网站| 国产精品久久精品日日| 首页国产欧美久久| 成人晚上爱看视频| 欧美一区二区黄色| 最新热久久免费视频| 免费高清成人在线| 91成人网在线| 日韩精品中文字幕一区二区三区 | 欧美一区二区二区| 亚洲国产精品高清| 日本v片在线高清不卡在线观看| 风间由美一区二区三区在线观看 | 亚洲成人777| 成人免费毛片app| 精品国产乱子伦一区| 一区二区三区在线看| 国内久久婷婷综合| 欧美精品亚洲二区| 亚洲日本在线天堂| 国产福利不卡视频| 欧美一区二区三区婷婷月色| 日韩一区在线播放| 国产 欧美在线| 精品少妇一区二区三区在线播放| 亚洲天堂网中文字| 国产精品77777竹菊影视小说| 欧美日韩高清一区| 亚洲精品中文在线影院| 国产高清精品在线| 日韩欧美一二三| 亚洲国产精品久久一线不卡| av男人天堂一区| 欧美国产日韩亚洲一区| 国产精品资源在线| 久久精品男人天堂av| 九一九一国产精品| 欧美r级电影在线观看| 视频一区在线视频| 欧美一区二区三区影视| 婷婷六月综合网| 欧美蜜桃一区二区三区| 亚洲最大的成人av| 欧美视频精品在线| 午夜不卡av在线| 91精品国产91热久久久做人人 | 国产成人啪免费观看软件| 在线播放欧美女士性生活| 亚洲中国最大av网站| 色久综合一二码| 亚洲精选免费视频| 欧美日韩一区三区四区| 午夜精品久久一牛影视| 欧美日韩午夜影院| 三级不卡在线观看| 日韩欧美专区在线| 国产制服丝袜一区| 国产精品免费视频网站| 91免费国产在线观看| 国产精品成人免费在线| 91黄色免费版| 日本不卡不码高清免费观看| 精品国产乱子伦一区| 国产成人亚洲综合色影视| 中文字幕欧美一| 欧美日精品一区视频| 蜜桃视频一区二区三区在线观看| 精品久久久网站| 成人午夜激情影院| 亚洲一区二区三区四区不卡| 91麻豆精品国产91久久久| 国产一区二区三区美女| 国产精品久久久久久亚洲伦 | 日本不卡免费在线视频| 精品免费国产一区二区三区四区| 国产麻豆视频精品| 亚洲乱码国产乱码精品精98午夜 | 色94色欧美sute亚洲线路一ni | 北岛玲一区二区三区四区| 亚洲精品少妇30p| 日韩一区二区免费视频| 成人深夜在线观看| 视频在线在亚洲| 国产精品视频你懂的| 欧美性猛交xxxx黑人交| 国产精品1区二区.| 日韩有码一区二区三区| 国产欧美日韩激情| 日韩一区二区精品葵司在线| 成人精品在线视频观看| 日韩中文字幕一区二区三区| 久久精品欧美日韩精品| 91精品国产一区二区三区蜜臀| 国产一区二区女| 视频一区二区三区在线| 亚洲欧洲精品一区二区精品久久久 | 午夜久久福利影院| 国产精品毛片大码女人| 精品国产免费久久| 欧美电影在线免费观看| 9色porny自拍视频一区二区| 另类中文字幕网| 午夜不卡av免费| 亚洲自拍都市欧美小说| 亚洲少妇中出一区| 国产精品美女久久久久高潮| 欧美大胆一级视频| 91精品国产高清一区二区三区| 在线一区二区三区四区| 99国产欧美久久久精品| 国产成人在线视频免费播放| 久久99国产精品麻豆| 亚洲18女电影在线观看| 亚洲国产另类av| 亚洲高清视频的网址| 尤物av一区二区| 一区二区三区精品在线观看| 亚洲色图欧洲色图| 亚洲欧洲日产国码二区| 一色屋精品亚洲香蕉网站| 国产精品久久久久精k8 | 日韩视频免费观看高清完整版| 在线亚洲欧美专区二区| 99re这里只有精品首页| yourporn久久国产精品| 成+人+亚洲+综合天堂| 成人精品免费网站| 99精品视频免费在线观看| 成人av资源在线观看| 99riav一区二区三区| 色8久久人人97超碰香蕉987| 在线观看日产精品| 欧美人与禽zozo性伦| 欧美日韩激情一区二区| 欧美一区二区国产| 精品sm在线观看| 中文字幕精品综合| 一区二区三区国产| 亚洲午夜久久久久久久久久久| 亚洲制服欧美中文字幕中文字幕| 亚洲一区二区三区四区在线免费观看 | 欧美一区二视频| 精品国产一区二区三区不卡| 久久尤物电影视频在线观看| 久久精品人人爽人人爽| 日韩理论在线观看| 日韩精品欧美成人高清一区二区| 老司机免费视频一区二区三区| 国产主播一区二区| 91麻豆国产香蕉久久精品| 欧美日韩亚洲综合在线| 久久午夜电影网| 一区二区免费看| 黄一区二区三区| 在线看国产一区二区| 日韩一本二本av| 国产精品免费免费| 人禽交欧美网站| eeuss鲁一区二区三区| 欧美日韩三级视频| 国产视频911| 五月激情六月综合| 风间由美一区二区三区在线观看| 欧美性一二三区| 欧美激情艳妇裸体舞| 午夜精品久久久| 波多野洁衣一区| 2020日本不卡一区二区视频| 亚洲精品一卡二卡| 国产精品自在在线| 欧美日韩国产三级| 日韩一区在线看| 国产成人无遮挡在线视频| 欧美一区二区三区精品| 亚洲激情在线激情|