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

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

?? mars.cpp

?? 加密函數(shù)庫:包括多種加密解密算法,數(shù)字簽名,散列算法
?? CPP
字號:
// mars.cpp - modified by Sean Woods from Brian Gladman's mars6.c for Crypto++
// key setup updated by Wei Dai to reflect IBM's "tweak" proposed in August 1999

/* This is an independent implementation of the MARS encryption         */
/* algorithm designed by a team at IBM as a candidate for the US        */
/* NIST Advanced Encryption Standard (AES) effort. The algorithm        */
/* is subject to Patent action by IBM, who intend to offer royalty      */
/* free use if a Patent is granted.                                     */
/*                                                                      */
/* 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      */
/* constraints that IBM place on the use of the MARS algorithm.         */
/*                                                                      */
/* Dr Brian Gladman (gladman@seven77.demon.co.uk) 4th October 1998      */

#include "pch.h"
#include "mars.h"
#include "misc.h"

NAMESPACE_BEGIN(CryptoPP)

ANONYMOUS_NAMESPACE_BEGIN
static word32 gen_mask(word32 x)
{
	word32	m;

	m = (~x ^ (x >> 1)) & 0x7fffffff;
	m &= (m >> 1) & (m >> 2); m &= (m >> 3) & (m >> 6); 

	if(!m)
		return 0;

	m <<= 1; m |= (m << 1); m |= (m << 2); m |= (m << 4);
	m |= (m << 1) & ~x & 0x80000000;

	return m & 0xfffffffc;
};
NAMESPACE_END

void MARS::Base::UncheckedSetKey(CipherDir direction, const byte *userKey, unsigned int length)
{
	AssertValidKeyLength(length);

	// Initialize T[] with the key data
	FixedSizeSecBlock<word32, 15> T;
	GetUserKey(LITTLE_ENDIAN_ORDER, T.begin(), 15, userKey, length);
	T[length/4] = length/4;

	for (unsigned int j=0; j<4; j++)	// compute 10 words of K[] in each iteration
	{
		unsigned int i;
		// Do linear transformation
		for (i=0; i<15; i++)
			T[i] = T[i] ^ rotlFixed(T[(i+8)%15] ^ T[(i+13)%15], 3) ^ (4*i+j);

		// Do four rounds of stirring
		for (unsigned int k=0; k<4; k++)
			for (i=0; i<15; i++)
			   T[i] = rotlFixed(T[i] + Sbox[T[(i+14)%15]%512], 9);

		// Store next 10 key words into K[]
		for (i=0; i<10; i++)
			EK[10*j+i] = T[4*i%15];
	}

	// Modify multiplication key-words
	for(unsigned int i = 5; i < 37; i += 2)
	{
		word32 w = EK[i] | 3;
		word32 m = gen_mask(w);
		if(m)
			w ^= (rotlMod(Sbox[265 + (EK[i] & 3)], EK[i-1]) & m);
		EK[i] = w;
	}
}

#define f_mix(a,b,c,d)					\
		r = rotrFixed(a, 8); 				\
		b ^= Sbox[a & 255];				\
		b += Sbox[(r & 255) + 256];		\
		r = rotrFixed(a, 16);				\
		a  = rotrFixed(a, 24);				\
		c += Sbox[r & 255];				\
		d ^= Sbox[(a & 255) + 256]

#define b_mix(a,b,c,d)					\
		r = rotlFixed(a, 8); 				\
		b ^= Sbox[(a & 255) + 256];		\
		c -= Sbox[r & 255];				\
		r = rotlFixed(a, 16);				\
		a  = rotlFixed(a, 24);				\
		d -= Sbox[(r & 255) + 256];		\
		d ^= Sbox[a & 255]

#define f_ktr(a,b,c,d,i)	\
	m = a + EK[i];			\
	a = rotlFixed(a, 13);		\
	r = a * EK[i + 1];		\
	l = Sbox[m & 511]; 		\
	r = rotlFixed(r, 5); 		\
	l ^= r; 				\
	c += rotlMod(m, r);		\
	r = rotlFixed(r, 5); 		\
	l ^= r; 				\
	d ^= r; 				\
	b += rotlMod(l, r)

#define r_ktr(a,b,c,d,i)	\
	r = a * EK[i + 1];		\
	a = rotrFixed(a, 13);		\
	m = a + EK[i];			\
	l = Sbox[m & 511]; 		\
	r = rotlFixed(r, 5); 		\
	l ^= r; 				\
	c -= rotlMod(m, r);		\
	r = rotlFixed(r, 5); 		\
	l ^= r; 				\
	d ^= r; 				\
	b -= rotlMod(l, r)

typedef BlockGetAndPut<word32, LittleEndian> Block;

void MARS::Enc::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const
{
	word32 a, b, c, d, l, m, r;
	
	Block::Get(inBlock)(a)(b)(c)(d);

	a += EK[0];
	b += EK[1];
	c += EK[2];
	d += EK[3];

	int i;
	for (i = 0; i < 2; i++) {
		f_mix(a,b,c,d);
		a += d;
		f_mix(b,c,d,a);
		b += c;
		f_mix(c,d,a,b);
		f_mix(d,a,b,c);
	}

	f_ktr(a,b,c,d, 4); f_ktr(b,c,d,a, 6); f_ktr(c,d,a,b, 8); f_ktr(d,a,b,c,10); 
	f_ktr(a,b,c,d,12); f_ktr(b,c,d,a,14); f_ktr(c,d,a,b,16); f_ktr(d,a,b,c,18); 
	f_ktr(a,d,c,b,20); f_ktr(b,a,d,c,22); f_ktr(c,b,a,d,24); f_ktr(d,c,b,a,26); 
	f_ktr(a,d,c,b,28); f_ktr(b,a,d,c,30); f_ktr(c,b,a,d,32); f_ktr(d,c,b,a,34); 

	for (i = 0; i < 2; i++) {
		b_mix(a,b,c,d);
		b_mix(b,c,d,a);
		c -= b;
		b_mix(c,d,a,b);
		d -= a;
		b_mix(d,a,b,c);
	}

	a -= EK[36];
	b -= EK[37];
	c -= EK[38];
	d -= EK[39];

	Block::Put(xorBlock, outBlock)(a)(b)(c)(d);
}

void MARS::Dec::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const
{
	word32 a, b, c, d, l, m, r;

	Block::Get(inBlock)(d)(c)(b)(a);
	
	d += EK[36];
	c += EK[37];
	b += EK[38];
	a += EK[39];

	int i;
	for (i = 0; i < 2; i++) {
		f_mix(a,b,c,d);
		a += d;
		f_mix(b,c,d,a);
		b += c;
		f_mix(c,d,a,b);
		f_mix(d,a,b,c);
	}

	r_ktr(a,b,c,d,34); r_ktr(b,c,d,a,32); r_ktr(c,d,a,b,30); r_ktr(d,a,b,c,28);
	r_ktr(a,b,c,d,26); r_ktr(b,c,d,a,24); r_ktr(c,d,a,b,22); r_ktr(d,a,b,c,20);
	r_ktr(a,d,c,b,18); r_ktr(b,a,d,c,16); r_ktr(c,b,a,d,14); r_ktr(d,c,b,a,12);
	r_ktr(a,d,c,b,10); r_ktr(b,a,d,c, 8); r_ktr(c,b,a,d, 6); r_ktr(d,c,b,a, 4);

	for (i = 0; i < 2; i++) {
		b_mix(a,b,c,d);
		b_mix(b,c,d,a);
		c -= b;
		b_mix(c,d,a,b);
		d -= a;
		b_mix(d,a,b,c);
	}

	d -= EK[0];
	c -= EK[1];
	b -= EK[2];
	a -= EK[3];

	Block::Put(xorBlock, outBlock)(d)(c)(b)(a);
}

NAMESPACE_END

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩三级视频| 亚洲视频在线一区观看| 国产精品国产自产拍高清av| 亚洲国产欧美日韩另类综合| 精品写真视频在线观看| 欧美在线播放高清精品| 国产喷白浆一区二区三区| 免费观看成人av| 色综合色综合色综合| 久久免费看少妇高潮| 蜜臀久久99精品久久久画质超高清| 91色|porny| 日本一区二区动态图| 亚洲一区二区视频| 色婷婷综合久久久中文字幕| 久久久久9999亚洲精品| 久久se这里有精品| 欧美一区二区三区免费大片| 亚洲国产精品久久久久秋霞影院| 99久久久久免费精品国产 | 国产永久精品大片wwwapp| 欧美日韩高清一区二区三区| 玉米视频成人免费看| 色8久久精品久久久久久蜜| 国产精品久久久久久久久免费樱桃| 国产老妇另类xxxxx| 精品精品欲导航| 久久99精品久久久久| 日韩欧美综合一区| 另类小说视频一区二区| 欧美成人乱码一区二区三区| 久久99精品一区二区三区 | 国产综合色精品一区二区三区| 日韩手机在线导航| 蜜桃视频免费观看一区| 欧美xxxx老人做受| 国产精品自拍av| 国产视频不卡一区| 成人免费毛片片v| 国产精品传媒在线| 在线这里只有精品| 亚洲成人中文在线| 91精品国产欧美一区二区成人| 日韩电影一区二区三区四区| 欧美电影免费提供在线观看| 国产成人在线观看| 国产精品久久久久久久久果冻传媒 | 成人av在线资源网| 亚洲日本护士毛茸茸| 欧美视频精品在线| 麻豆精品国产传媒mv男同| 久久亚洲精品小早川怜子| 99久久夜色精品国产网站| 亚洲精品欧美专区| 日韩欧美中文一区二区| 国产成人精品影视| 亚洲综合在线观看视频| 3d动漫精品啪啪| 国产精品夜夜爽| 洋洋成人永久网站入口| 日韩欧美一区二区三区在线| 成人av免费网站| 视频一区二区不卡| 国产女同互慰高潮91漫画| 欧洲精品视频在线观看| 精品午夜久久福利影院| 中文字幕亚洲精品在线观看| 欧美日本一区二区在线观看| 国产精品亚洲第一| 亚洲精品伦理在线| 精品国产污网站| 在线观看欧美日本| 国产激情91久久精品导航| 亚洲毛片av在线| 精品国产一区二区精华| 91精彩视频在线| 国产成人综合亚洲网站| 亚洲成人三级小说| 成人欧美一区二区三区在线播放| 91精品国产综合久久久久| www.日韩在线| 精品一区二区三区久久| 亚洲午夜视频在线| 国产精品天美传媒沈樵| 日韩一区二区三区在线| 91精品1区2区| 99re在线精品| 国产盗摄女厕一区二区三区| 天天av天天翘天天综合网色鬼国产| 国产午夜精品在线观看| 欧美成人vps| 91精品免费观看| 欧美制服丝袜第一页| 波多野结衣中文字幕一区| 国产在线视频一区二区三区| 蜜臀av在线播放一区二区三区 | 91国产免费观看| 国产999精品久久久久久绿帽| 欧美aaaaaa午夜精品| 亚洲高清在线精品| 一区二区三区产品免费精品久久75| 国产婷婷色一区二区三区在线| 91精品国产麻豆国产自产在线| 欧美日韩免费一区二区三区| 色婷婷久久一区二区三区麻豆| 成人av免费在线| 成人禁用看黄a在线| 国产99久久久国产精品免费看| 精品中文av资源站在线观看| 久久精品国产精品亚洲精品| 男男视频亚洲欧美| 麻豆精品精品国产自在97香蕉| 一区二区成人在线视频| 亚洲欧洲一区二区在线播放| 中文字幕国产一区二区| 中文字幕欧美日韩一区| 久久综合精品国产一区二区三区| 日韩一级大片在线观看| 欧美不卡在线视频| 久久免费午夜影院| 国产精品嫩草影院av蜜臀| 国产精品美女久久福利网站| 亚洲日本乱码在线观看| 亚洲资源在线观看| 日韩电影在线观看网站| 极品少妇一区二区| 懂色av一区二区夜夜嗨| 9人人澡人人爽人人精品| 色综合久久久久| 欧美日韩国产美女| 日韩精品中文字幕在线不卡尤物 | 欧美一区二区不卡视频| 欧美tk—视频vk| 国产女人aaa级久久久级| 亚洲人成精品久久久久| 亚洲chinese男男1069| 麻豆久久久久久久| 成人美女视频在线观看18| 欧美网站大全在线观看| 欧美精品色综合| 久久噜噜亚洲综合| 一区二区三区高清在线| 蜜臀av一区二区在线免费观看| 国产一区二区成人久久免费影院| 91香蕉国产在线观看软件| 欧美视频一区二| 久久久久久久国产精品影院| 亚洲日本韩国一区| 激情六月婷婷久久| 91视频免费看| 日韩精品一区二区三区老鸭窝| 亚洲欧洲日韩av| 麻豆极品一区二区三区| 91影院在线观看| 欧美videos中文字幕| 亚洲欧美日韩综合aⅴ视频| 奇米色一区二区三区四区| 成人av免费网站| 精品乱码亚洲一区二区不卡| 亚洲精品日韩专区silk | 偷窥国产亚洲免费视频| 国产激情精品久久久第一区二区| 在线观看免费亚洲| 国产欧美一区二区精品性色| 午夜精品一区二区三区电影天堂 | 久久99精品国产91久久来源| 91影院在线观看| 国产亚洲欧美日韩俺去了| 天堂成人国产精品一区| 91在线精品秘密一区二区| 久久综合久久99| 青青草国产精品97视觉盛宴| 色综合色综合色综合色综合色综合 | 日韩在线一区二区三区| aaa欧美大片| 久久精品一区二区三区四区| 蜜臀av性久久久久蜜臀aⅴ| 欧美无砖专区一中文字| 亚洲人成伊人成综合网小说| 粉嫩欧美一区二区三区高清影视| 日韩欧美中文字幕公布| 视频一区中文字幕| 欧美日韩另类一区| 亚洲自拍偷拍九九九| 色欲综合视频天天天| 国产精品国产三级国产普通话蜜臀| 久久er99精品| 日韩精品一区二区三区swag| 免费成人性网站| 91精品国产麻豆| 麻豆精品精品国产自在97香蕉| 在线91免费看| 五月天激情综合网| 欧美日韩一区二区三区四区五区| 亚洲激情成人在线| 91一区二区在线观看| 亚洲精品中文在线| 色综合久久久网| 亚洲高清免费在线| 欧美卡1卡2卡|