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

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

?? pwdbased.h

?? 加密函數庫:包括多種加密解密算法,數字簽名,散列算法
?? H
字號:
// pwdbased.h - written and placed in the public domain by Wei Dai

#ifndef CRYPTOPP_PWDBASED_H
#define CRYPTOPP_PWDBASED_H

#include "cryptlib.h"
#include "hmac.h"

NAMESPACE_BEGIN(CryptoPP)

class PasswordBasedKeyDerivationFunction
{
public:
	virtual unsigned int MaxDerivedKeyLength() const =0;
	virtual void GeneralDeriveKey(byte *derived, unsigned int derivedLen, byte purpose, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen, unsigned int iterations) const =0;
};

//! PBKDF1 from PKCS #5, T should be a HashTransformation class
template <class T>
class PKCS5_PBKDF1 : public PasswordBasedKeyDerivationFunction
{
public:
	unsigned int MaxDerivedKeyLength() const {return T::DIGESTSIZE;}
	// PKCS #5 says PBKDF1 should only take 8-byte salts. This implementation allows salts of any length.
	void GeneralDeriveKey(byte *derived, unsigned int derivedLen, byte ignored, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen, unsigned int iterations) const
		{DeriveKey(derived, derivedLen, password, passwordLen, salt, saltLen, iterations);}
	void DeriveKey(byte *derived, unsigned int derivedLen, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen=8, unsigned int iterations=1000) const;
};

//! PBKDF2 from PKCS #5, T should be a HashTransformation class
template <class T>
class PKCS5_PBKDF2_HMAC : public PasswordBasedKeyDerivationFunction
{
public:
	unsigned int MaxDerivedKeyLength() const {return 0xffffffffU;}	// should multiply by T::DIGESTSIZE, but gets overflow that way
	void GeneralDeriveKey(byte *derived, unsigned int derivedLen, byte ignored, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen, unsigned int iterations) const
		{DeriveKey(derived, derivedLen, password, passwordLen, salt, saltLen, iterations);}
	void DeriveKey(byte *derived, unsigned int derivedLen, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen, unsigned int iterations=1000) const;
};

/*
class PBKDF2Params
{
public:
	SecByteBlock m_salt;
	unsigned int m_interationCount;
	ASNOptional<ASNUnsignedWrapper<word32> > m_keyLength;
};
*/

template <class T>
void PKCS5_PBKDF1<T>::DeriveKey(byte *derived, unsigned int derivedLen, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen, unsigned int iterations) const
{
	assert(derivedLen <= MaxDerivedLength());
	assert(iterations > 0);

	T hash;
	hash.Update(password, passwordLen);
	hash.Update(salt, saltLen);

	SecByteBlock buffer(hash.DigestSize());
	hash.Final(buffer);

	for (unsigned int i=1; i<iterations; i++)
		hash.CalculateDigest(buffer, buffer, buffer.size());

	memcpy(derived, buffer, derivedLen);
}

template <class T>
void PKCS5_PBKDF2_HMAC<T>::DeriveKey(byte *derived, unsigned int derivedLen, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen, unsigned int iterations) const
{
	assert(derivedLen <= MaxDerivedKeyLength());
	assert(iterations > 0);

	HMAC<T> hmac(password, passwordLen);
	SecByteBlock buffer(hmac.DigestSize());

	unsigned int i=1;
	while (derivedLen > 0)
	{
		hmac.Update(salt, saltLen);
		unsigned int j;
		for (j=0; j<4; j++)
		{
			byte b = i >> ((3-j)*8);
			hmac.Update(&b, 1);
		}
		hmac.Final(buffer);

		unsigned int segmentLen = STDMIN(derivedLen, (unsigned int)buffer.size());
		memcpy(derived, buffer, segmentLen);

		for (j=1; j<iterations; j++)
		{
			hmac.CalculateDigest(buffer, buffer, buffer.size());
			xorbuf(derived, buffer, segmentLen);
		}

		derived += segmentLen;
		derivedLen -= segmentLen;
		i++;
	}
}

//! PBKDF from PKCS #12, appendix B, T should be a HashTransformation class
template <class T>
class PKCS12_PBKDF : public PasswordBasedKeyDerivationFunction
{
public:
	unsigned int MaxDerivedKeyLength() const {return UINT_MAX;}
	void GeneralDeriveKey(byte *derived, unsigned int derivedLen, byte purpose, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen, unsigned int iterations) const
		{DeriveKey(derived, derivedLen, purpose, password, passwordLen, salt, saltLen, iterations);}
	void DeriveKey(byte *derived, unsigned int derivedLen, byte ID, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen, unsigned int iterations=1000) const;
};

template <class T>
void PKCS12_PBKDF<T>::DeriveKey(byte *derived, unsigned int derivedLen, byte ID, const byte *password, unsigned int passwordLen, const byte *salt, unsigned int saltLen, unsigned int iterations) const
{
	assert(derivedLen <= MaxDerivedKeyLength());
	assert(iterations > 0);

	const unsigned int v = T::BLOCKSIZE;	// v is in bytes rather than bits as in PKCS #12
	const unsigned int DLen = v, SLen = RoundUpToMultipleOf(saltLen, v);
	const unsigned int PLen = RoundUpToMultipleOf(passwordLen, v), ILen = SLen + PLen;
	SecByteBlock buffer(DLen + SLen + PLen);
	byte *D = buffer, *S = buffer+DLen, *P = buffer+DLen+SLen, *I = S;

	memset(D, ID, DLen);
	unsigned int i;
	for (i=0; i<SLen; i++)
		S[i] = salt[i % saltLen];
	for (i=0; i<PLen; i++)
		P[i] = password[i % passwordLen];


	T hash;
	SecByteBlock Ai(T::DIGESTSIZE), B(v);

	while (derivedLen > 0)
	{
		hash.CalculateDigest(Ai, buffer, buffer.size());
		for (i=1; i<iterations; i++)
			hash.CalculateDigest(Ai, Ai, Ai.size());
		for (i=0; i<B.size(); i++)
			B[i] = Ai[i % Ai.size()];

		Integer B1(B, B.size());
		++B1;
		for (i=0; i<ILen; i+=v)
			(Integer(I+i, v) + B1).Encode(I+i, v);

		unsigned int segmentLen = STDMIN(derivedLen, (unsigned int)Ai.size());
		memcpy(derived, Ai, segmentLen);
		derived += segmentLen;
		derivedLen -= segmentLen;
	}
}

NAMESPACE_END

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲电影中文字幕在线观看| 91黄色免费看| 国产精品小仙女| 精品一区二区免费在线观看| 久久精品国内一区二区三区| 紧缚捆绑精品一区二区| 精品一区二区三区免费视频| 成人激情电影免费在线观看| 国产成人小视频| 国产福利91精品| 成av人片一区二区| 91丨porny丨户外露出| 色偷偷久久人人79超碰人人澡| 91视频com| 欧美日韩一区 二区 三区 久久精品| 欧美三级蜜桃2在线观看| 欧美一区二区女人| 久久网这里都是精品| 国产精品毛片久久久久久| 国产精品第一页第二页第三页| 亚洲男同性视频| 日韩在线卡一卡二| 狠狠网亚洲精品| 99久久精品国产导航| 在线观看成人免费视频| 日韩一区二区免费在线电影| 久久综合九色综合97婷婷女人| 国产精品午夜春色av| 亚洲综合成人在线视频| 美女脱光内衣内裤视频久久网站 | 自拍偷自拍亚洲精品播放| 一区二区三区四区在线免费观看 | 狠狠色丁香久久婷婷综合丁香| 精品亚洲成a人在线观看| 国产白丝精品91爽爽久久| 色综合久久中文综合久久97| 欧美精品高清视频| 精品国产乱码久久| 一区二区在线观看不卡| 日韩av午夜在线观看| 国产69精品一区二区亚洲孕妇| 91成人免费在线视频| 日韩精品一区二区三区三区免费| 国产精品蜜臀av| 日韩高清电影一区| av一区二区三区| 欧美一二三区在线| 国产精品国产三级国产| 日本欧美一区二区在线观看| 不卡av在线免费观看| 91精品国产免费| 综合色天天鬼久久鬼色| 精品一区二区在线免费观看| 色女孩综合影院| 久久色中文字幕| 亚洲成人免费视频| 成人精品小蝌蚪| 欧美一级久久久| 亚洲一区国产视频| 欧洲色大大久久| 久久久激情视频| 日日欢夜夜爽一区| 色综合久久久久久久久| 久久网站热最新地址| 午夜久久久久久久久久一区二区| 成人免费视频免费观看| 欧美r级在线观看| 亚洲1区2区3区4区| 成人黄色大片在线观看| 精品国产第一区二区三区观看体验| 玉米视频成人免费看| 成人一道本在线| 精品欧美一区二区久久| 偷拍自拍另类欧美| 色综合欧美在线| 国产免费观看久久| 紧缚捆绑精品一区二区| 91精品国产一区二区人妖| 亚洲精品国产精华液| caoporn国产精品| 久久综合中文字幕| 美女在线观看视频一区二区| 538prom精品视频线放| 亚洲国产精品久久久久婷婷884| aaa国产一区| 亚洲国产成人一区二区三区| 久久99久久99精品免视看婷婷| 欧美羞羞免费网站| 亚洲另类在线一区| 99久久久久久| 自拍偷拍国产精品| av一本久道久久综合久久鬼色| 国产日韩欧美不卡在线| 国产在线视频一区二区| 欧美精品一区二区蜜臀亚洲| 蜜桃视频一区二区| 欧美电影精品一区二区| 麻豆精品一二三| 精品国产乱码久久久久久久久| 裸体健美xxxx欧美裸体表演| 欧美一三区三区四区免费在线看| 日韩国产欧美一区二区三区| 91麻豆精品久久久久蜜臀| 丝瓜av网站精品一区二区| 在线电影一区二区三区| 日韩综合小视频| 欧美一区二区精美| 韩日精品视频一区| 国产欧美一区二区精品性| 成人高清免费在线播放| 亚洲日韩欧美一区二区在线| 91黄色免费观看| 三级影片在线观看欧美日韩一区二区| 欧美区在线观看| 久久精品久久精品| 国产欧美日韩精品a在线观看| 成人激情小说网站| 亚洲特黄一级片| 欧美男生操女生| 美国一区二区三区在线播放| www日韩大片| 成人黄色777网| 亚洲一区二区三区视频在线播放| 日韩女优av电影在线观看| 国产精品456| 国产精品盗摄一区二区三区| 欧美影院午夜播放| 久久97超碰国产精品超碰| 国产女人18毛片水真多成人如厕| 色综合天天综合给合国产| 亚洲一区二区三区在线| 日韩免费看的电影| 成人h动漫精品一区二| 亚洲线精品一区二区三区八戒| 欧美一级黄色大片| 不卡av在线网| 日韩国产成人精品| 国产精品美女久久久久高潮| 欧美午夜精品一区| 激情小说欧美图片| 一区二区三区中文字幕精品精品| 日韩亚洲欧美高清| 99久久综合色| 日本欧美久久久久免费播放网| 久久精品欧美日韩| 精品视频色一区| 国产成人在线观看| 亚洲成人在线观看视频| 久久久国产精品午夜一区ai换脸| 91丨九色丨蝌蚪丨老版| 蜜臀av性久久久久蜜臀av麻豆| 国产欧美精品一区aⅴ影院| 欧美日本在线一区| caoporen国产精品视频| 日韩电影一二三区| 亚洲人成网站影音先锋播放| 欧美成人精品3d动漫h| 97精品国产露脸对白| 黑人精品欧美一区二区蜜桃| 亚洲线精品一区二区三区| 国产日韩视频一区二区三区| 欧美日本乱大交xxxxx| 成人av在线电影| 精品一区二区精品| 亚洲6080在线| 亚洲视频免费观看| 精品播放一区二区| 欧美日韩国产不卡| av成人免费在线观看| 久久国产尿小便嘘嘘| 午夜视频久久久久久| 亚洲视频图片小说| 国产亚洲精品免费| 欧美mv日韩mv国产| 欧美三级欧美一级| 91免费视频网| 成人精品在线视频观看| 国内不卡的二区三区中文字幕| 香港成人在线视频| 一区二区三区美女视频| 中文字幕高清一区| 久久综合久久鬼色| 欧美大片一区二区| 4438x成人网最大色成网站| 欧美中文字幕一区二区三区亚洲| 不卡一区中文字幕| 岛国av在线一区| 国产成人av自拍| 国产精品911| 国产高清在线观看免费不卡| 麻豆国产91在线播放| 秋霞午夜鲁丝一区二区老狼| 亚洲成a人片在线不卡一二三区| 亚洲免费视频中文字幕| 亚洲欧美另类小说视频| 综合久久久久久久| 亚洲人成影院在线观看| 亚洲欧美日韩久久| 亚洲欧美视频在线观看视频| 成人免费一区二区三区视频 |