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

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

?? misc.h

?? 加密函數庫:包括多種加密解密算法,數字簽名,散列算法
?? H
?? 第 1 頁 / 共 2 頁
字號:
#ifndef CRYPTOPP_MISC_H
#define CRYPTOPP_MISC_H

#include "config.h"
#include "cryptlib.h"
#include <assert.h>
#include <string.h>		// CodeWarrior doesn't have memory.h
#include <algorithm>
#include <string>

#ifdef INTEL_INTRINSICS
#include <stdlib.h>
#endif

NAMESPACE_BEGIN(CryptoPP)

// ************** compile-time assertion ***************

template <bool b>
struct CompileAssert
{
	static char dummy[2*b-1];
};

#define CRYPTOPP_COMPILE_ASSERT(assertion) CRYPTOPP_COMPILE_ASSERT_INSTANCE(assertion, __LINE__)
#define CRYPTOPP_COMPILE_ASSERT_INSTANCE(assertion, instance) static CompileAssert<(assertion)> CRYPTOPP_ASSERT_JOIN(cryptopp_assert_, instance)
#define CRYPTOPP_ASSERT_JOIN(X, Y) CRYPTOPP_DO_ASSERT_JOIN(X, Y)
#define CRYPTOPP_DO_ASSERT_JOIN(X, Y) X##Y

// ************** misc classes ***************

class Empty
{
};

template <class BASE1, class BASE2>
class TwoBases : public BASE1, public BASE2
{
};

template <class BASE1, class BASE2, class BASE3>
class ThreeBases : public BASE1, public BASE2, public BASE3
{
};

template <class T>
class ObjectHolder
{
protected:
	T m_object;
};

class NotCopyable
{
public:
	NotCopyable() {}
private:
    NotCopyable(const NotCopyable &);
    void operator=(const NotCopyable &);
};

// ************** misc functions ***************

// can't use std::min or std::max in MSVC60 or Cygwin 1.1.0
template <class _Tp> inline const _Tp& STDMIN(const _Tp& __a, const _Tp& __b)
{
	return __b < __a ? __b : __a;
}

template <class _Tp> inline const _Tp& STDMAX(const _Tp& __a, const _Tp& __b)
{
	return  __a < __b ? __b : __a;
}

#define RETURN_IF_NONZERO(x) unsigned int returnedValue = x; if (returnedValue) return returnedValue

// this version of the macro is fastest on Pentium 3 and Pentium 4 with MSVC 6 SP5 w/ Processor Pack
#define GETBYTE(x, y) (unsigned int)byte((x)>>(8*(y)))
// these may be faster on other CPUs/compilers
// #define GETBYTE(x, y) (unsigned int)(((x)>>(8*(y)))&255)
// #define GETBYTE(x, y) (((byte *)&(x))[y])

unsigned int Parity(unsigned long);
unsigned int BytePrecision(unsigned long);
unsigned int BitPrecision(unsigned long);
unsigned long Crop(unsigned long, unsigned int size);

inline unsigned int BitsToBytes(unsigned int bitCount)
{
	return ((bitCount+7)/(8));
}

inline unsigned int BytesToWords(unsigned int byteCount)
{
	return ((byteCount+WORD_SIZE-1)/WORD_SIZE);
}

inline unsigned int BitsToWords(unsigned int bitCount)
{
	return ((bitCount+WORD_BITS-1)/(WORD_BITS));
}

void xorbuf(byte *buf, const byte *mask, unsigned int count);
void xorbuf(byte *output, const byte *input, const byte *mask, unsigned int count);

template <class T>
inline bool IsPowerOf2(T n)
{
	return n > 0 && (n & (n-1)) == 0;
}

template <class T1, class T2>
inline T2 ModPowerOf2(T1 a, T2 b)
{
	assert(IsPowerOf2(b));
	return T2(a) & (b-1);
}

template <class T>
inline T RoundDownToMultipleOf(T n, T m)
{
	return n - (IsPowerOf2(m) ? ModPowerOf2(n, m) : (n%m));
}

template <class T>
inline T RoundUpToMultipleOf(T n, T m)
{
	return RoundDownToMultipleOf(n+m-1, m);
}

template <class T>
inline unsigned int GetAlignment(T *dummy=NULL)	// VC60 workaround
{
#if (_MSC_VER >= 1300)
	return __alignof(T);
#elif defined(__GNUC__)
	return __alignof__(T);
#else
	return sizeof(T);
#endif
}

inline bool IsAlignedOn(const void *p, unsigned int alignment)
{
	return IsPowerOf2(alignment) ? ModPowerOf2((unsigned int)p, alignment) == 0 : (unsigned int)p % alignment == 0;
}

template <class T>
inline bool IsAligned(const void *p, T *dummy=NULL)	// VC60 workaround
{
	return IsAlignedOn(p, GetAlignment<T>());
}

#ifdef IS_LITTLE_ENDIAN
	typedef LittleEndian NativeByteOrder;
#else
	typedef BigEndian NativeByteOrder;
#endif

inline ByteOrder GetNativeByteOrder()
{
	return NativeByteOrder::ToEnum();
}

inline bool NativeByteOrderIs(ByteOrder order)
{
	return order == GetNativeByteOrder();
}

template <class T>		// can't use <sstream> because GCC 2.95.2 doesn't have it
std::string IntToString(T a, unsigned int base = 10)
{
	if (a == 0)
		return "0";
	bool negate = false;
	if (a < 0)
	{
		negate = true;
		a = 0-a;	// VC .NET does not like -a
	}
	std::string result;
	while (a > 0)
	{
		T digit = a % base;
		result = char((digit < 10 ? '0' : ('a' - 10)) + digit) + result;
		a /= base;
	}
	if (negate)
		result = "-" + result;
	return result;
}

template <class T1, class T2>
inline T1 SaturatingSubtract(T1 a, T2 b)
{
	CRYPTOPP_COMPILE_ASSERT_INSTANCE(T1(-1)>0, 0);	// T1 is unsigned type
	CRYPTOPP_COMPILE_ASSERT_INSTANCE(T2(-1)>0, 1);	// T2 is unsigned type
	return T1((a > b) ? (a - b) : 0);
}

template <class T>
inline CipherDir GetCipherDir(const T &obj)
{
	return obj.IsForwardTransformation() ? ENCRYPTION : DECRYPTION;
}

// ************** rotate functions ***************

template <class T> inline T rotlFixed(T x, unsigned int y)
{
	assert(y < sizeof(T)*8);
	return (x<<y) | (x>>(sizeof(T)*8-y));
}

template <class T> inline T rotrFixed(T x, unsigned int y)
{
	assert(y < sizeof(T)*8);
	return (x>>y) | (x<<(sizeof(T)*8-y));
}

template <class T> inline T rotlVariable(T x, unsigned int y)
{
	assert(y < sizeof(T)*8);
	return (x<<y) | (x>>(sizeof(T)*8-y));
}

template <class T> inline T rotrVariable(T x, unsigned int y)
{
	assert(y < sizeof(T)*8);
	return (x>>y) | (x<<(sizeof(T)*8-y));
}

template <class T> inline T rotlMod(T x, unsigned int y)
{
	y %= sizeof(T)*8;
	return (x<<y) | (x>>(sizeof(T)*8-y));
}

template <class T> inline T rotrMod(T x, unsigned int y)
{
	y %= sizeof(T)*8;
	return (x>>y) | (x<<(sizeof(T)*8-y));
}

#ifdef INTEL_INTRINSICS

#pragma intrinsic(_lrotl, _lrotr)

template<> inline word32 rotlFixed<word32>(word32 x, unsigned int y)
{
	assert(y < 32);
	return y ? _lrotl(x, y) : x;
}

template<> inline word32 rotrFixed<word32>(word32 x, unsigned int y)
{
	assert(y < 32);
	return y ? _lrotr(x, y) : x;
}

template<> inline word32 rotlVariable<word32>(word32 x, unsigned int y)
{
	assert(y < 32);
	return _lrotl(x, y);
}

template<> inline word32 rotrVariable<word32>(word32 x, unsigned int y)
{
	assert(y < 32);
	return _lrotr(x, y);
}

template<> inline word32 rotlMod<word32>(word32 x, unsigned int y)
{
	return _lrotl(x, y);
}

template<> inline word32 rotrMod<word32>(word32 x, unsigned int y)
{
	return _lrotr(x, y);
}

#endif // #ifdef INTEL_INTRINSICS

#ifdef PPC_INTRINSICS

template<> inline word32 rotlFixed<word32>(word32 x, unsigned int y)
{
	assert(y < 32);
	return y ? __rlwinm(x,y,0,31) : x;
}

template<> inline word32 rotrFixed<word32>(word32 x, unsigned int y)
{
	assert(y < 32);
	return y ? __rlwinm(x,32-y,0,31) : x;
}

template<> inline word32 rotlVariable<word32>(word32 x, unsigned int y)
{
	assert(y < 32);
	return (__rlwnm(x,y,0,31));
}

template<> inline word32 rotrVariable<word32>(word32 x, unsigned int y)
{
	assert(y < 32);
	return (__rlwnm(x,32-y,0,31));
}

template<> inline word32 rotlMod<word32>(word32 x, unsigned int y)
{
	return (__rlwnm(x,y,0,31));
}

template<> inline word32 rotrMod<word32>(word32 x, unsigned int y)
{
	return (__rlwnm(x,32-y,0,31));
}

#endif // #ifdef PPC_INTRINSICS

// ************** endian reversal ***************

template <class T>
inline unsigned int GetByte(ByteOrder order, T value, unsigned int index)
{
	if (order == LITTLE_ENDIAN_ORDER)
		return GETBYTE(value, index);
	else
		return GETBYTE(value, sizeof(T)-index-1);
}

inline byte ByteReverse(byte value)
{
	return value;
}

inline word16 ByteReverse(word16 value)
{
	return rotlFixed(value, 8U);
}

inline word32 ByteReverse(word32 value)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
首页欧美精品中文字幕| 亚洲国产精品精华液2区45| 成人avav在线| 成人性色生活片| 盗摄精品av一区二区三区| 国产福利一区二区三区在线视频| 麻豆国产91在线播放| 精品一区二区三区不卡| 韩国精品主播一区二区在线观看| 久草这里只有精品视频| 国产传媒日韩欧美成人| av一区二区三区在线| 一本大道综合伊人精品热热 | 99国产精品久久久久| jizz一区二区| 色狠狠色狠狠综合| 91精品国产综合久久精品性色| 91精品国产丝袜白色高跟鞋| 91精品在线一区二区| xf在线a精品一区二区视频网站| 久久久精品影视| 亚洲天堂网中文字| 日韩不卡在线观看日韩不卡视频| 九九九精品视频| 99麻豆久久久国产精品免费优播| 在线观看日韩精品| 久久先锋资源网| 亚洲精品伦理在线| 捆绑调教美女网站视频一区| 粉嫩蜜臀av国产精品网站| 欧美视频一二三区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产综合色在线视频区| av不卡在线观看| 日韩一级高清毛片| 亚洲视频小说图片| 久久国产精品一区二区| 白白色 亚洲乱淫| 91麻豆精品国产91| 一区视频在线播放| 久草中文综合在线| 欧美伊人精品成人久久综合97| 亚洲精品一区二区三区在线观看| 国产欧美精品一区二区色综合朱莉| 一区二区三区欧美激情| 国产精品一品视频| 欧美日韩国产一二三| 综合激情成人伊人| 国产黄色精品视频| 日韩一区二区三区观看| 亚洲一区二区3| 成人福利视频网站| xvideos.蜜桃一区二区| 日韩福利视频网| 欧美日韩一区二区三区不卡 | 91福利视频在线| 亚洲国产精品成人综合色在线婷婷| 日韩电影一区二区三区四区| 欧美午夜一区二区三区免费大片| 欧美国产一区视频在线观看| 激情综合网av| 日韩一区二区三区四区| 午夜久久久影院| 欧美婷婷六月丁香综合色| 最新国产精品久久精品| 国产91高潮流白浆在线麻豆| 久久综合久久鬼色中文字| 免费成人在线观看视频| 884aa四虎影成人精品一区| 亚洲一区二区综合| 欧美三级中文字| 偷窥少妇高潮呻吟av久久免费| 日本道在线观看一区二区| 亚洲人成亚洲人成在线观看图片| 成a人片国产精品| 国产精品电影院| 99精品偷自拍| 亚洲欧美在线aaa| 成人app软件下载大全免费| 国产精品理论在线观看| 91欧美一区二区| 亚洲一二三四在线| 欧美精品xxxxbbbb| 精久久久久久久久久久| 久久九九国产精品| 99视频热这里只有精品免费| 亚洲老妇xxxxxx| 7777精品久久久大香线蕉| 人人爽香蕉精品| 国产日韩欧美激情| 色噜噜狠狠色综合欧洲selulu| 亚洲国产一区二区三区| 欧美成人女星排行榜| 国产aⅴ精品一区二区三区色成熟| 日本一二三四高清不卡| 欧美三日本三级三级在线播放| 日韩电影在线一区| 国产欧美一区二区三区沐欲| 91在线免费视频观看| 午夜精品久久久| 久久网站热最新地址| 97精品视频在线观看自产线路二| 亚洲超丰满肉感bbw| 精品国产91洋老外米糕| 91美女片黄在线观看| 青青草视频一区| 国产精品伦理一区二区| 欧美猛男gaygay网站| 国产传媒久久文化传媒| 亚洲国产日韩一级| 久久精品免费在线观看| 91久久一区二区| 国产91精品露脸国语对白| 亚洲成av人片在线观看| 中文字幕av免费专区久久| 欧美日韩一区二区三区四区 | 一区二区高清视频在线观看| www日韩大片| 欧美四级电影网| 粉嫩av一区二区三区在线播放 | 99久精品国产| 久久av中文字幕片| 亚洲v中文字幕| 亚洲精品高清视频在线观看| 久久久久国产精品人| 欧美久久久久久蜜桃| 色老头久久综合| 成人精品视频.| 国产高清不卡一区| 精品制服美女久久| 天天综合日日夜夜精品| 亚洲免费观看高清| 自拍偷拍国产亚洲| 国产精品区一区二区三| 国产亚洲一区二区三区在线观看| 欧美精品一二三区| 欧美人妖巨大在线| 欧美性生活一区| 91搞黄在线观看| 在线视频观看一区| 欧美亚洲图片小说| 日本高清免费不卡视频| 一本到不卡精品视频在线观看| 成人免费观看视频| 波多野结衣欧美| 成人午夜短视频| av毛片久久久久**hd| 成人动漫一区二区在线| 不卡视频在线看| 91在线免费播放| 99国产精品视频免费观看| 一本大道久久a久久精二百| 9i在线看片成人免费| 91麻豆自制传媒国产之光| 99久久精品一区二区| 一本在线高清不卡dvd| 色老汉一区二区三区| 欧美日韩成人在线一区| 欧美群妇大交群的观看方式| 69堂亚洲精品首页| 精品国产91久久久久久久妲己| 日韩精品专区在线影院重磅| 精品国产乱码久久久久久闺蜜| 久久九九国产精品| 亚洲欧洲av一区二区三区久久| 亚洲欧美日本韩国| 亚洲福利视频导航| 久久精品二区亚洲w码| 国产成人亚洲综合a∨猫咪| av在线不卡网| 777a∨成人精品桃花网| 久久久久久免费| 亚洲欧洲韩国日本视频| 亚洲国产精品久久不卡毛片| 秋霞电影一区二区| 风间由美中文字幕在线看视频国产欧美 | 国产精品伊人色| 99国产精品国产精品毛片| 91福利视频久久久久| 欧美一区二区三区爱爱| 久久精品人人做人人综合| 亚洲乱码国产乱码精品精小说 | 午夜精品福利一区二区蜜股av| 久久99精品久久久| 91色porny在线视频| 欧美一区二区三区四区在线观看| 久久亚洲一级片| 一区二区三区不卡视频在线观看| 久久国产精品色婷婷| 色吧成人激情小说| 91麻豆精品国产自产在线观看一区| 久久久一区二区三区捆绑**| 亚洲制服丝袜一区| 国产精品一区一区三区| 91电影在线观看| 中文字幕乱码日本亚洲一区二区| 亚洲精品videosex极品| 黑人巨大精品欧美黑白配亚洲| 91久久精品一区二区三区| 国产欧美日本一区视频|