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

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

?? seckey.h

?? 此壓縮包內(nèi)有cast、blowfish、simple、des、cryptlib、rsa、mqueue、xtrcrypt、gf256、base32,base64、modexppc、network等一些的
?? H
字號:
// seckey.h - written and placed in the public domain by Wei Dai

// This file contains helper classes/functions for implementing secret key algorithms.

#ifndef CRYPTOPP_SECKEY_H
#define CRYPTOPP_SECKEY_H

#include "cryptlib.h"
#include "misc.h"
#include "simple.h"

NAMESPACE_BEGIN(CryptoPP)

inline CipherDir ReverseCipherDir(CipherDir dir)
{
	return (dir == ENCRYPTION) ? DECRYPTION : ENCRYPTION;
}

//! to be inherited by block ciphers with fixed block size
template <unsigned int N>
class FixedBlockSize
{
public:
	CRYPTOPP_CONSTANT(BLOCKSIZE = N)
};

// ************** rounds ***************

//! to be inherited by ciphers with fixed number of rounds
template <unsigned int R>
class FixedRounds
{
public:
	CRYPTOPP_CONSTANT(ROUNDS = R)
};

//! to be inherited by ciphers with variable number of rounds
template <unsigned int D, unsigned int N=1, unsigned int M=INT_MAX>		// use INT_MAX here because enums are treated as signed ints
class VariableRounds
{
public:
	CRYPTOPP_CONSTANT(DEFAULT_ROUNDS = D)
	CRYPTOPP_CONSTANT(MIN_ROUNDS = N)
	CRYPTOPP_CONSTANT(MAX_ROUNDS = M)
	static unsigned int StaticGetDefaultRounds(size_t keylength) {return DEFAULT_ROUNDS;}

protected:
	inline void ThrowIfInvalidRounds(int rounds, const Algorithm *alg)
	{
		if (rounds < MIN_ROUNDS || rounds > MAX_ROUNDS)
			throw InvalidRounds(alg->AlgorithmName(), rounds);
	}

	inline unsigned int GetRoundsAndThrowIfInvalid(const NameValuePairs &param, const Algorithm *alg)
	{
		int rounds = param.GetIntValueWithDefault("Rounds", DEFAULT_ROUNDS);
		ThrowIfInvalidRounds(rounds, alg);
		return (unsigned int)rounds;
	}
};

// ************** key length ***************

//! to be inherited by keyed algorithms with fixed key length
template <unsigned int N, unsigned int IV_REQ = SimpleKeyingInterface::NOT_RESYNCHRONIZABLE, unsigned int IV_L = 0>
class FixedKeyLength
{
public:
	CRYPTOPP_CONSTANT(KEYLENGTH=N)
	CRYPTOPP_CONSTANT(MIN_KEYLENGTH=N)
	CRYPTOPP_CONSTANT(MAX_KEYLENGTH=N)
	CRYPTOPP_CONSTANT(DEFAULT_KEYLENGTH=N)
	CRYPTOPP_CONSTANT(IV_REQUIREMENT = IV_REQ)
	CRYPTOPP_CONSTANT(IV_LENGTH = IV_L)
	static size_t CRYPTOPP_API StaticGetValidKeyLength(size_t) {return KEYLENGTH;}
};

/// support query of variable key length, template parameters are default, min, max, multiple (default multiple 1)
template <unsigned int D, unsigned int N, unsigned int M, unsigned int Q = 1, unsigned int IV_REQ = SimpleKeyingInterface::NOT_RESYNCHRONIZABLE, unsigned int IV_L = 0>
class VariableKeyLength
{
	// make these private to avoid Doxygen documenting them in all derived classes
	CRYPTOPP_COMPILE_ASSERT(Q > 0);
	CRYPTOPP_COMPILE_ASSERT(N % Q == 0);
	CRYPTOPP_COMPILE_ASSERT(M % Q == 0);
	CRYPTOPP_COMPILE_ASSERT(N < M);
	CRYPTOPP_COMPILE_ASSERT(D >= N);
	CRYPTOPP_COMPILE_ASSERT(M >= D);

public:
	CRYPTOPP_CONSTANT(MIN_KEYLENGTH=N)
	CRYPTOPP_CONSTANT(MAX_KEYLENGTH=M)
	CRYPTOPP_CONSTANT(DEFAULT_KEYLENGTH=D)
	CRYPTOPP_CONSTANT(KEYLENGTH_MULTIPLE=Q)
	CRYPTOPP_CONSTANT(IV_REQUIREMENT=IV_REQ)
	CRYPTOPP_CONSTANT(IV_LENGTH=IV_L)

	static size_t CRYPTOPP_API StaticGetValidKeyLength(size_t n)
	{
		if (n < (size_t)MIN_KEYLENGTH)
			return MIN_KEYLENGTH;
		else if (n > (size_t)MAX_KEYLENGTH)
			return (size_t)MAX_KEYLENGTH;
		else
		{
			n += KEYLENGTH_MULTIPLE-1;
			return n - n%KEYLENGTH_MULTIPLE;
		}
	}
};

/// support query of key length that's the same as another class
template <class T, unsigned int IV_REQ = SimpleKeyingInterface::NOT_RESYNCHRONIZABLE, unsigned int IV_L = 0>
class SameKeyLengthAs
{
public:
	CRYPTOPP_CONSTANT(MIN_KEYLENGTH=T::MIN_KEYLENGTH)
	CRYPTOPP_CONSTANT(MAX_KEYLENGTH=T::MAX_KEYLENGTH)
	CRYPTOPP_CONSTANT(DEFAULT_KEYLENGTH=T::DEFAULT_KEYLENGTH)
	CRYPTOPP_CONSTANT(IV_REQUIREMENT=IV_REQ)
	CRYPTOPP_CONSTANT(IV_LENGTH=IV_L)

	static size_t CRYPTOPP_API StaticGetValidKeyLength(size_t keylength)
		{return T::StaticGetValidKeyLength(keylength);}
};

// ************** implementation helper for SimpleKeyed ***************

//! _
template <class BASE, class INFO = BASE>
class CRYPTOPP_NO_VTABLE SimpleKeyingInterfaceImpl : public BASE
{
public:
	size_t MinKeyLength() const {return INFO::MIN_KEYLENGTH;}
	size_t MaxKeyLength() const {return (size_t)INFO::MAX_KEYLENGTH;}
	size_t DefaultKeyLength() const {return INFO::DEFAULT_KEYLENGTH;}
	size_t GetValidKeyLength(size_t n) const {return INFO::StaticGetValidKeyLength(n);}
	SimpleKeyingInterface::IV_Requirement IVRequirement() const {return (SimpleKeyingInterface::IV_Requirement)INFO::IV_REQUIREMENT;}
	unsigned int IVSize() const {return INFO::IV_LENGTH;}
};

template <class INFO, class BASE = BlockCipher>
class CRYPTOPP_NO_VTABLE BlockCipherImpl : public AlgorithmImpl<SimpleKeyingInterfaceImpl<TwoBases<BASE, INFO> > >
{
public:
	unsigned int BlockSize() const {return this->BLOCKSIZE;}
};

//! _
template <CipherDir DIR, class BASE>
class BlockCipherFinal : public ClonableImpl<BlockCipherFinal<DIR, BASE>, BASE>
{
public:
 	BlockCipherFinal() {}
	BlockCipherFinal(const byte *key)
		{this->SetKey(key, this->DEFAULT_KEYLENGTH);}
	BlockCipherFinal(const byte *key, size_t length)
		{this->SetKey(key, length);}
	BlockCipherFinal(const byte *key, size_t length, unsigned int rounds)
		{this->SetKeyWithRounds(key, length, rounds);}

	bool IsForwardTransformation() const {return DIR == ENCRYPTION;}
};

//! _
template <class BASE, class INFO = BASE>
class MessageAuthenticationCodeImpl : public AlgorithmImpl<SimpleKeyingInterfaceImpl<BASE, INFO>, INFO>
{
};

//! _
template <class BASE>
class MessageAuthenticationCodeFinal : public ClonableImpl<MessageAuthenticationCodeFinal<BASE>, MessageAuthenticationCodeImpl<BASE> >
{
public:
 	MessageAuthenticationCodeFinal() {}
	MessageAuthenticationCodeFinal(const byte *key)
		{this->SetKey(key, this->DEFAULT_KEYLENGTH);}
	MessageAuthenticationCodeFinal(const byte *key, size_t length)
		{this->SetKey(key, length);}
};

// ************** documentation ***************

//! These objects usually should not be used directly. See CipherModeDocumentation instead.
/*! Each class derived from this one defines two types, Encryption and Decryption, 
	both of which implement the BlockCipher interface. */
struct BlockCipherDocumentation
{
	//! implements the BlockCipher interface
	typedef BlockCipher Encryption;
	//! implements the BlockCipher interface
	typedef BlockCipher Decryption;
};

/*! \brief Each class derived from this one defines two types, Encryption and Decryption, 
	both of which implement the SymmetricCipher interface. Two types of classes derive
	from this class: stream ciphers and block cipher modes. Stream ciphers can be used
	alone, cipher mode classes need to be used with a block cipher. See CipherModeDocumentation
	for more for information about using cipher modes and block ciphers. */
struct SymmetricCipherDocumentation
{
	//! implements the SymmetricCipher interface
	typedef SymmetricCipher Encryption;
	//! implements the SymmetricCipher interface
	typedef SymmetricCipher Decryption;
};

NAMESPACE_END

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性猛交xxxx黑人交| 麻豆国产欧美日韩综合精品二区| 91精品国产色综合久久不卡电影| 欧美在线不卡一区| 欧美伊人久久大香线蕉综合69| 久久亚洲精精品中文字幕早川悠里 | 国产网红主播福利一区二区| 欧美精品丝袜中出| 欧美一区二区三区视频| 国产精品久久99| 亚洲国产精品尤物yw在线观看| 秋霞电影网一区二区| 久久国产精品一区二区| 国产成都精品91一区二区三| 91蜜桃在线观看| 在线不卡中文字幕播放| 亚洲欧美综合色| 日韩福利视频导航| 国产成人精品免费看| 91蝌蚪porny| 亚洲国产精品激情在线观看| 玉米视频成人免费看| 久久99精品视频| 91美女片黄在线观看| 欧美精彩视频一区二区三区| 亚洲欧美日韩一区二区 | 欧美精品一二三四| 亚洲激情第一区| 一本久久精品一区二区| 91精品国产欧美一区二区18 | av高清不卡在线| 欧美日韩国产小视频| 国产日韩欧美电影| 国产福利一区在线| 欧美国产日韩在线观看| 国产福利91精品一区| 久久精品在线免费观看| 国产成人亚洲综合a∨婷婷| 国产日韩欧美一区二区三区乱码| 国产白丝精品91爽爽久久| 国产日产欧美一区| av一区二区三区黑人| √…a在线天堂一区| 日本韩国一区二区| 国产精品美女一区二区在线观看| 免费观看久久久4p| www欧美成人18+| 东方欧美亚洲色图在线| 国产精品久久福利| 欧美午夜精品一区| 久久国产人妖系列| 国产日韩欧美制服另类| 色婷婷亚洲精品| 日韩二区三区四区| 国产亚洲视频系列| 在线观看亚洲精品| 麻豆传媒一区二区三区| 欧美国产一区在线| 欧美日韩综合不卡| 亚洲视频一区二区在线| 播五月开心婷婷综合| 久久精品夜色噜噜亚洲aⅴ| 成人动漫av在线| 性久久久久久久| 欧美精品丝袜中出| 国产精品亚洲综合一区在线观看| 精品日韩成人av| 国产在线观看一区二区| 精品国产免费一区二区三区四区| 免费的国产精品| 国产精品毛片久久久久久久| 欧美午夜视频网站| 国产精品一区在线| 亚洲午夜久久久久久久久电影院| 欧美大胆一级视频| 久久国产精品色| 一区二区三区丝袜| 欧美日韩国产精品成人| 国产成人在线视频网站| 亚洲成av人**亚洲成av**| 久久亚区不卡日本| 欧美精品vⅰdeose4hd| 成人综合婷婷国产精品久久蜜臀| 国产精品午夜电影| 在线综合亚洲欧美在线视频| 精品制服美女丁香| 亚洲一区二区三区四区在线| 6080国产精品一区二区| proumb性欧美在线观看| 麻豆91在线看| 亚洲成人你懂的| 亚洲日本乱码在线观看| 国产无人区一区二区三区| 91精品在线免费观看| 91麻豆.com| 风间由美一区二区三区在线观看 | 国产宾馆实践打屁股91| 久久99久久久久久久久久久| 亚洲国产精品久久艾草纯爱 | 精品美女一区二区三区| 在线观看日韩电影| 91丝袜呻吟高潮美腿白嫩在线观看| 国产乱码精品一品二品| 免费在线视频一区| 日韩精品一二区| 久久综合一区二区| 欧美电视剧在线看免费| 91麻豆精品国产无毒不卡在线观看 | 亚洲精品日日夜夜| 中文字幕一区二区视频| 中文无字幕一区二区三区| 久久毛片高清国产| 色婷婷狠狠综合| 国产不卡一区视频| 国产一区不卡视频| 精品中文字幕一区二区小辣椒| 日日噜噜夜夜狠狠视频欧美人| 亚洲国产日韩av| 亚洲国产精品一区二区久久恐怖片 | 亚洲精品一区二区精华| 欧美一区二区国产| 日韩一区二区三区视频| 丰满放荡岳乱妇91ww| 极品少妇xxxx精品少妇偷拍| 精品在线你懂的| 国产乱子伦视频一区二区三区 | 亚洲色图丝袜美腿| 玉米视频成人免费看| 午夜精品一区二区三区三上悠亚| 欧美精品一区二区三区蜜桃视频| 欧美草草影院在线视频| 久久女同性恋中文字幕| 国产欧美日韩在线视频| 国产精品久久久久久久午夜片 | 久久综合999| 国产精品热久久久久夜色精品三区| 国产欧美日韩激情| 亚洲少妇30p| 亚洲国产一区二区三区青草影视| 午夜精品久久久久久久久| 久久精品国产亚洲高清剧情介绍 | 成人免费看的视频| 91欧美一区二区| 欧美一区二区三区在线视频 | 国内精品免费在线观看| 日本免费在线视频不卡一不卡二| 美女网站一区二区| 国产ts人妖一区二区| 色婷婷国产精品久久包臀| 欧美电影在线免费观看| 国产欧美日产一区| 亚洲伊人色欲综合网| 麻豆国产欧美一区二区三区| 成人黄色777网| 欧美疯狂性受xxxxx喷水图片| 国产欧美一区二区三区在线老狼| 亚洲一区二区三区小说| 国产剧情一区二区三区| 91污在线观看| 26uuu亚洲综合色| 一区二区三区欧美视频| 久久99精品久久久久久动态图| 成人成人成人在线视频| 日韩一区二区三区观看| 亚洲欧美日韩在线播放| 国产一区二区看久久| 欧美日韩成人在线一区| 中文字幕欧美日韩一区| 奇米精品一区二区三区在线观看 | 国产精品66部| 欧美精品1区2区3区| 国产精品全国免费观看高清| 视频一区二区国产| 色偷偷一区二区三区| 久久久久国产精品麻豆| 首页国产丝袜综合| 欧美午夜精品久久久久久孕妇| 久久噜噜亚洲综合| 免播放器亚洲一区| 欧美色视频在线| 亚洲欧美日韩国产成人精品影院| 国产一区二区三区电影在线观看| 欧美一区二区视频在线观看2020| 亚洲精品视频免费看| 国产91清纯白嫩初高中在线观看| 欧美一区二区三区在线| 五月综合激情网| 欧美日韩免费视频| 一级日本不卡的影视| 91丨porny丨在线| 最新中文字幕一区二区三区| 成人午夜大片免费观看| 久久在线观看免费| 久久精品国产99久久6| 欧美电影一区二区| 日韩成人一级大片| 日韩一区二区电影网| 蜜桃久久av一区| 日韩一区二区影院| 久久电影网电视剧免费观看|