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

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

?? idea.cpp

?? 各種加密算法的集合
?? CPP
字號:
// idea.cpp - modified by Wei Dai from: 
// Copyright 1992 by Colin Plumb.  Distributed with permission. 
 
/*      idea.c - C source code for IDEA block cipher. 
 *      IDEA (International Data Encryption Algorithm), formerly known as 
 *      IPES (Improved Proposed Encryption Standard). 
 *      Algorithm developed by Xuejia Lai and James L. Massey, of ETH Zurich. 
 *      This implementation modified and derived from original C code 
 *      developed by Xuejia Lai. 
 *      Zero-based indexing added, names changed from IPES to IDEA. 
 * 
 *  Optimized for speed 21 Oct 92 by Colin Plumb. 
 * 
 *      The IDEA(tm) block cipher is covered by a patent held by ETH and a 
 *      Swiss company called Ascom-Tech AG.  The Swiss patent number is 
 *      PCT/CH91/00117.  International patents are pending. IDEA(tm) is a 
 *      trademark of Ascom-Tech AG.  There is no license fee required for 
 *      noncommercial use.  Commercial users may obtain licensing details 
 *      from Dieter Profos, Ascom Tech AG, Solothurn Lab, Postfach 151, 4502 
 *      Solothurn, Switzerland, Tel +41 65 242885, Fax +41 65 235761. 
 * 
 *      The IDEA block cipher uses a 64-bit block size, and a 128-bit key 
 *      size.  It breaks the 64-bit cipher block into four 16-bit words 
 *      because all of the primitive inner operations are done with 16-bit 
 *      arithmetic.  It likewise breaks the 128-bit cipher key into eight 
 *      16-bit words. 
 * 
 *      For further information on the IDEA cipher, see these papers: 
 *      1) Xuejia Lai, "Detailed Description and a Software Implementation of 
 *         the IPES Cipher", Institute for Signal and Information 
 *         Processing, ETH-Zentrum, Zurich, Switzerland, 1991 
 *      2) Xuejia Lai, James L. Massey, Sean Murphy, "Markov Ciphers and 
 *         Differential Cryptanalysis", Advances in Cryptology- EUROCRYPT'91 
 * 
 *      This code assumes that each pair of 8-bit bytes comprising a 16-bit 
 *      word in the key and in the cipher block are externally represented 
 *      with the Most Significant Byte (MSB) first, regardless of the 
 *      internal native byte order of the target CPU. 
 */ 
 
#include "pch.h" 
#include "idea.h" 
 
NAMESPACE_BEGIN(CryptoPP) 
 
static const int IDEA_KEYLEN=(6*IDEA::ROUNDS+4);  // key schedule length in # of word16s 
 
#define low16(x) ((x)&0xffff)	// compiler should be able to optimize this away if word is 16 bits 
#define high16(x) ((x)>>16) 
 
// should use an inline function but macros are still faster in MSVC 4.0 
#define DirectMUL(a,b)					\ 
{										\ 
	assert(b <= 0xffff);				\ 
										\ 
	word32 p=(word32)low16(a)*b;		\ 
										\ 
	if (p)								\ 
	{									\ 
		p = low16(p) - high16(p);		\ 
		a = (word)p - (word)high16(p);	\ 
	}									\ 
	else								\ 
		a = 1-a-b;						\ 
} 
 
#ifdef IDEA_LARGECACHE 
bool IDEA::tablesBuilt = false; 
word16 IDEA::log[0x10000]; 
word16 IDEA::antilog[0x10000]; 
 
void IDEA::BuildLogTables() 
{ 
	if (tablesBuilt) 
		return; 
	else 
	{ 
		tablesBuilt = true; 
 
		word x=1; 
		word32 i; 
 
		for (i=0; i<0x10000; i++) 
		{ 
			antilog[i] = (word16)x; 
			DirectMUL(x, 3); 
		} 
 
		for (i=0; i<0x10000; i++) 
			log[antilog[i]] = (word16)i; 
	} 
} 
 
void IDEA::LookupKeyLogs() 
{ 
   word* Z=key; 
   int r=ROUNDS; 
   do 
   { 
	   Z[0] = log[Z[0]]; 
	   Z[3] = log[Z[3]]; 
	   Z[4] = log[Z[4]]; 
	   Z[5] = log[Z[5]]; 
	   Z+=6; 
   } while (--r); 
   Z[0] = log[Z[0]]; 
   Z[3] = log[Z[3]]; 
} 
 
inline void IDEA::LookupMUL(word &a, word b) 
{ 
	a = antilog[low16(log[low16(a)]+b)]; 
} 
#endif // IDEA_LARGECACHE 
 
IDEA::IDEA (const byte * userKey, CipherDir direction) 
	: key(IDEA_KEYLEN) 
{ 
#ifdef IDEA_LARGECACHE 
	BuildLogTables(); 
#endif 
 
	EnKey(userKey); 
 
	if (direction==DECRYPTION) 
		DeKey(); 
 
#ifdef IDEA_LARGECACHE 
	LookupKeyLogs(); 
#endif 
} 
 
void IDEA::EnKey (const byte *userKey) 
{ 
   int i, j; 
   word *Z=key; 
 
   for (j=0;j<8;j++) 
	   Z[j] = (userKey[2*j]<<8) + userKey[2*j+1]; 
   for (i=0;j<IDEA_KEYLEN;j++) 
   { 
	  i++; 
	  Z[i+7]=low16((Z[i&7] << 9) | (Z[i+1 & 7] >> 7)); 
	  Z+=i&8; 
	  i&=7; 
   } 
} 
 
static word inv(word x) 
{ 
	word y=x; 
	for (unsigned i=0; i<15; i++) 
	{ 
		DirectMUL(y,low16(y)); 
		DirectMUL(y,x); 
	} 
	return low16(y); 
} 
 
void IDEA::DeKey() 
{ 
   word *Z=key; 
   int j; 
   word t1,t2,t3; 
   SecBlock<word> tempKey(IDEA_KEYLEN); 
   word *p=tempKey+IDEA_KEYLEN; 
   t1=inv(*Z++); 
   t2=low16(0-*Z++); 
   t3=low16(0-*Z++); 
   *--p=inv(*Z++); 
   *--p=t3; 
   *--p=t2; 
   *--p=t1; 
   for (j=1;j<ROUNDS;j++) 
   { 
	  t1=*Z++; 
	  *--p=*Z++; 
	  *--p=t1; 
	  t1=inv(*Z++); 
	  t2=low16(0-*Z++); 
	  t3=low16(0-*Z++); 
	  *--p=inv(*Z++); 
	  *--p=t2; 
	  *--p=t3; 
	  *--p=t1; 
   } 
   t1=*Z++; 
   *--p=*Z++; 
   *--p=t1; 
   t1=inv(*Z++); 
   t2=low16(0-*Z++); 
   t3=low16(0-*Z++); 
   *--p=inv(*Z++); 
   *--p=t3; 
   *--p=t2; 
   *--p=t1; 
   /*copy and destroy temp copy*/ 
   memcpy(key, tempKey, IDEA_KEYLEN*sizeof(word)); 
} 
 
#ifdef IDEA_LARGECACHE 
#define MUL(a,b) LookupMUL(a,b) 
#else 
#define MUL(a,b) DirectMUL(a,b) 
#endif 
 
void IDEA::ProcessBlock(const byte *in, byte *out) const 
{ 
   word x1,x2,x3,x4,t1,t2; 
#ifdef IS_LITTLE_ENDIAN 
   x1=byteReverse(((word16 *)in)[0]); 
   x2=byteReverse(((word16 *)in)[1]); 
   x3=byteReverse(((word16 *)in)[2]); 
   x4=byteReverse(((word16 *)in)[3]); 
#else 
   x1=((word16 *)in)[0]; 
   x2=((word16 *)in)[1]; 
   x3=((word16 *)in)[2]; 
   x4=((word16 *)in)[3]; 
#endif 
 
   const word* Z=key; 
   int r=ROUNDS; 
   do 
   { 
	  MUL(x1,Z[0]); 
	  x2+=Z[1]; 
	  x3+=Z[2]; 
	  MUL(x4,Z[3]); 
	  t2=x1^x3; 
	  MUL(t2,Z[4]); 
	  t1=t2+(x2^x4); 
	  MUL(t1,Z[5]); 
	  Z+=6; 
	  t2+=t1; 
	  x1^=t1; 
	  x4^=t2; 
	  t2^=x2; 
	  x2=x3^t1; 
	  x3=t2; 
   } while (--r); 
   MUL(x1,Z[0]); 
   x3+=Z[1]; 
   x2+=Z[2]; 
   MUL(x4,Z[3]); 
 
#ifdef IS_LITTLE_ENDIAN 
   ((word16 *)out)[0]=byteReverse(word16(x1)); 
   ((word16 *)out)[1]=byteReverse(word16(x3)); 
   ((word16 *)out)[2]=byteReverse(word16(x2)); 
   ((word16 *)out)[3]=byteReverse(word16(x4)); 
#else 
   ((word16 *)out)[0]=x1; 
   ((word16 *)out)[1]=x3; 
   ((word16 *)out)[2]=x2; 
   ((word16 *)out)[3]=x4; 
#endif 
} 
 
NAMESPACE_END 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线电影院国产精品| 久久久午夜电影| 国产夜色精品一区二区av| 亚洲人精品午夜| 免费看精品久久片| zzijzzij亚洲日本少妇熟睡| 欧美一卡二卡在线| 亚洲视频免费看| 久久丁香综合五月国产三级网站| 色94色欧美sute亚洲线路一ni | 欧美国产乱子伦| 亚洲午夜激情av| 丁香婷婷综合色啪| 欧美一区二区高清| 亚洲成人中文在线| 色综合久久综合网| 成人欧美一区二区三区小说 | 日本一区二区三区四区| 石原莉奈一区二区三区在线观看| 91丨porny丨户外露出| 久久久久久久久久久久电影 | 欧美日韩精品一区二区三区四区| 国产精品久久久久久久久图文区| 九九视频精品免费| 欧美一区二区三区人| 午夜欧美2019年伦理| 99在线视频精品| 国产精品天干天干在线综合| 久久99国内精品| 91精品免费观看| 日韩在线观看一区二区| 欧美日本不卡视频| 亚洲va欧美va人人爽午夜| 欧美性受极品xxxx喷水| 亚洲一区在线电影| 欧美色图12p| 亚洲国产精品久久人人爱 | 欧美二区三区的天堂| 亚洲国产人成综合网站| 欧美欧美欧美欧美首页| 丝袜美腿亚洲综合| 欧美成人国产一区二区| 国产在线视频一区二区三区| 久久夜色精品国产噜噜av| 国产一区二区福利视频| 久久久久国产成人精品亚洲午夜 | 亚洲成人激情av| 欧美二区乱c少妇| 日韩av电影一区| 欧美一级日韩一级| 国产中文字幕精品| 亚洲美女在线国产| 欧美日韩激情一区二区| 麻豆免费精品视频| 日本一区二区高清| 色婷婷综合久久| 日产国产欧美视频一区精品| 久久久久久亚洲综合| 不卡在线观看av| 一区二区三区免费网站| 欧美女孩性生活视频| 国产中文字幕精品| 亚洲综合在线第一页| 91精品国产色综合久久不卡电影| 极品尤物av久久免费看| 国产精品色在线| 欧美日本一区二区在线观看| 国产一区二区三区不卡在线观看 | 蜜桃视频在线一区| 国产精品三级视频| 538prom精品视频线放| 国产成人免费高清| 亚洲成人激情av| 国产欧美精品一区二区色综合| 一本大道av一区二区在线播放| 美腿丝袜亚洲综合| 日韩一区在线看| 2024国产精品| 欧美色爱综合网| 豆国产96在线|亚洲| 天天操天天干天天综合网| 中文字幕电影一区| 欧美一区二区在线免费播放 | 国产伦精品一区二区三区视频青涩| 中文字幕在线观看一区| 精品理论电影在线观看| 色天天综合色天天久久| 大美女一区二区三区| 日本色综合中文字幕| 亚洲色图视频免费播放| 国产调教视频一区| 56国语精品自产拍在线观看| 91啪九色porn原创视频在线观看| 久久精品999| 亚洲777理论| 综合自拍亚洲综合图不卡区| 欧美精品一区男女天堂| 欧美日本一区二区三区四区| 色老汉一区二区三区| 成人天堂资源www在线| 国产一区二区在线视频| 日本欧洲一区二区| 亚洲不卡一区二区三区| 亚洲欧洲国产日韩| 久久久精品免费观看| 精品免费99久久| 日韩欧美亚洲国产另类| 日日夜夜精品视频天天综合网| 一区二区成人在线视频| 综合中文字幕亚洲| 亚洲视频在线一区二区| 亚洲欧美一区二区在线观看| 国产精品理论片| 国产欧美日韩在线观看| 国产精品羞羞答答xxdd| 久久av老司机精品网站导航| 久久精品国产一区二区三| 日韩成人av影视| 日韩电影免费在线看| 免费不卡在线视频| 奇米色一区二区三区四区| 喷水一区二区三区| 蜜臀国产一区二区三区在线播放| 日韩不卡一区二区三区| 青青草国产精品亚洲专区无| 奇米一区二区三区| 久久av中文字幕片| 处破女av一区二区| 色综合久久久久久久久久久| 色欧美乱欧美15图片| 日本韩国欧美在线| 欧美久久高跟鞋激| 久久久国产精华| 国产精品伦一区二区三级视频| 亚洲精品自拍动漫在线| 亚洲国产成人av好男人在线观看| 五月激情综合网| 国产一区二区三区四| 成人av高清在线| 一本高清dvd不卡在线观看| 日韩国产欧美视频| 国产福利一区二区三区视频在线| www.一区二区| 欧美日韩电影在线播放| 精品国产乱码久久| 自拍偷拍亚洲综合| 天堂成人国产精品一区| 国产黄人亚洲片| 91免费观看在线| 日韩一区二区在线观看| 国产日韩高清在线| 亚洲激情成人在线| 九九在线精品视频| 色婷婷国产精品| 久久精品一区二区三区不卡| 日本韩国一区二区三区视频| 日韩欧美国产系列| 中文av一区特黄| 午夜精品成人在线视频| 高清国产一区二区| 精品视频999| 国产精品天天看| 日本中文字幕一区| 91在线免费播放| 日韩欧美国产高清| 亚洲自拍偷拍网站| 国产精品自在在线| 欧美精品免费视频| 亚洲欧美影音先锋| 国产精品888| 91精品在线一区二区| 色综合久久综合网| 国产午夜精品一区二区三区嫩草| 一区二区三区.www| 99久久精品费精品国产一区二区| 91精品国产高清一区二区三区 | 亚洲欧洲av在线| 经典一区二区三区| 欧美日韩成人在线一区| 亚洲免费视频成人| 成人午夜又粗又硬又大| 日韩精品一区国产麻豆| 婷婷久久综合九色国产成人| 一区二区三区国产| 成人免费黄色大片| 久久毛片高清国产| 久久成人久久爱| 在线播放国产精品二区一二区四区| 国产精品成人午夜| 国产伦精品一区二区三区免费迷 | 日本黄色一区二区| 国产精品免费av| 国产专区综合网| 精品久久五月天| 三级欧美在线一区| 日韩精品一区二区三区中文不卡| 日韩美女视频一区二区在线观看| 午夜精品久久久久久不卡8050| 欧洲亚洲精品在线| 亚洲一区在线电影|