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

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

?? bench.cpp

?? 加密函數庫:包括多種加密解密算法,數字簽名,散列算法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// bench.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"

#include "crc.h"
#include "adler32.h"
#include "md2.h"
#include "md5.h"
#include "md5mac.h"
#include "sha.h"
#include "haval.h"
#include "tiger.h"
#include "ripemd.h"
#include "panama.h"
#include "idea.h"
#include "des.h"
#include "rc2.h"
#include "arc4.h"
#include "rc5.h"
#include "blowfish.h"
#include "diamond.h"
#include "wake.h"
#include "3way.h"
#include "safer.h"
#include "gost.h"
#include "shark.h"
#include "cast.h"
#include "square.h"
#include "skipjack.h"
#include "seal.h"
#include "rc6.h"
#include "mars.h"
#include "rijndael.h"
#include "twofish.h"
#include "serpent.h"
#include "hmac.h"
#include "xormac.h"
#include "cbcmac.h"
#include "dmac.h"
#include "blumshub.h"
#include "rsa.h"
#include "nr.h"
#include "dsa.h"
#include "luc.h"
#include "rabin.h"
#include "rw.h"
#include "eccrypto.h"
#include "ecp.h"
#include "ec2n.h"
#include "asn.h"
#include "rng.h"
#include "files.h"
#include "hex.h"
#include "modes.h"
#include "mdc.h"
#include "lubyrack.h"
#include "tea.h"
#include "dh.h"
#include "mqv.h"
#include "xtrcrypt.h"
#include "esign.h"

#include "bench.h"

#include <time.h>
#include <math.h>
#include <iostream>
#include <iomanip>

USING_NAMESPACE(CryptoPP)
USING_NAMESPACE(std)

#ifdef CLOCKS_PER_SEC
static const double CLOCK_TICKS_PER_SECOND = (double)CLOCKS_PER_SEC;
#elif defined(CLK_TCK)
static const double CLOCK_TICKS_PER_SECOND = (double)CLK_TCK;
#else
static const double CLOCK_TICKS_PER_SECOND = 1000000.0;
#endif

static const byte *const key=(byte *)"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";

static double logtotal = 0;
static unsigned int logcount = 0;

void OutputResultBytes(const char *name, unsigned long length, double timeTaken)
{
	double mbs = length / timeTaken / (1024*1024);
	cout << "<TR><TH>" << name;
	cout << "<TD>" << length;
	cout << setiosflags(ios::fixed);
	cout << "<TD>" << setprecision(3) << timeTaken;
	cout << "<TD>" << setprecision(3) << mbs << endl;
	cout << resetiosflags(ios::fixed);
	logtotal += log(mbs);
	logcount++;
}

void OutputResultOperations(const char *name, const char *operation, bool pc, unsigned long iterations, double timeTaken)
{
	cout << "<TR><TH>" << name << " " << operation << (pc ? " with precomputation" : "");
	cout << "<TD>" << iterations;
	cout << setiosflags(ios::fixed);
	cout << "<TD>" << setprecision(3) << timeTaken;
	cout << "<TD>" << setprecision(2) << (1000*timeTaken/iterations) << endl;
	cout << resetiosflags(ios::fixed);

	logtotal += log(iterations/timeTaken);
	logcount++;
}

void BenchMark(const char *name, BlockTransformation &cipher, double timeTotal)
{
	const int BUF_SIZE = RoundDownToMultipleOf(1024U, cipher.OptimalNumberOfParallelBlocks() * cipher.BlockSize());
	SecByteBlock buf(BUF_SIZE);
	const int nBlocks = BUF_SIZE / cipher.BlockSize();
	clock_t start = clock();

	unsigned long i=0, length=BUF_SIZE;
	double timeTaken;
	do
	{
		length *= 2;
		for (; i<length; i+=BUF_SIZE)
			cipher.ProcessAndXorMultipleBlocks(buf, NULL, buf, nBlocks);
		timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;
	}
	while (timeTaken < 2.0/3*timeTotal);

	OutputResultBytes(name, length, timeTaken);
}

void BenchMark(const char *name, StreamTransformation &cipher, double timeTotal)
{
	const int BUF_SIZE=1024;
	SecByteBlock buf(BUF_SIZE);
	clock_t start = clock();

	unsigned long i=0, length=BUF_SIZE;
	double timeTaken;
	do
	{
		length *= 2;
		for (; i<length; i+=BUF_SIZE)
			cipher.ProcessString(buf, BUF_SIZE);
		timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;
	}
	while (timeTaken < 2.0/3*timeTotal);

	OutputResultBytes(name, length, timeTaken);
}

void BenchMark(const char *name, HashTransformation &hash, double timeTotal)
{
	const int BUF_SIZE=1024;
	SecByteBlock buf(BUF_SIZE);
	LC_RNG rng(time(NULL));
	rng.GenerateBlock(buf, BUF_SIZE);
	clock_t start = clock();

	unsigned long i=0, length=BUF_SIZE;
	double timeTaken;
	do
	{
		length *= 2;
		for (; i<length; i+=BUF_SIZE)
			hash.Update(buf, BUF_SIZE);
		timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;
	}
	while (timeTaken < 2.0/3*timeTotal);

	OutputResultBytes(name, length, timeTaken);
}

void BenchMark(const char *name, BufferedTransformation &bt, double timeTotal)
{
	const int BUF_SIZE=1024;
	SecByteBlock buf(BUF_SIZE);
	LC_RNG rng(time(NULL));
	rng.GenerateBlock(buf, BUF_SIZE);
	clock_t start = clock();

	unsigned long i=0, length=BUF_SIZE;
	double timeTaken;
	do
	{
		length *= 2;
		for (; i<length; i+=BUF_SIZE)
			bt.Put(buf, BUF_SIZE);
		timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND;
	}
	while (timeTaken < 2.0/3*timeTotal);

	OutputResultBytes(name, length, timeTaken);
}

void BenchMarkEncryption(const char *name, PK_Encryptor &key, double timeTotal, bool pc=false)
{
	unsigned int len = 16;
	LC_RNG rng(time(NULL));
	SecByteBlock plaintext(len), ciphertext(key.CiphertextLength(len));
	rng.GenerateBlock(plaintext, len);

	clock_t start = clock();
	unsigned int i;
	double timeTaken;
	for (timeTaken=(double)0, i=0; timeTaken < timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)
		key.Encrypt(rng, plaintext, len, ciphertext);

	OutputResultOperations(name, "Encryption", pc, i, timeTaken);

	if (!pc && key.GetMaterial().SupportsPrecomputation())
	{
		key.AccessMaterial().Precompute(16);
		BenchMarkEncryption(name, key, timeTotal, true);
	}
}

void BenchMarkDecryption(const char *name, PK_Decryptor &priv, PK_Encryptor &pub, double timeTotal)
{
	unsigned int len = 16;
	LC_RNG rng(time(NULL));
	SecByteBlock ciphertext(pub.CiphertextLength(len));
	SecByteBlock plaintext(pub.MaxPlaintextLength(ciphertext.size()));
	rng.GenerateBlock(plaintext, len);
	pub.Encrypt(rng, plaintext, len, ciphertext);

	clock_t start = clock();
	unsigned int i;
	double timeTaken;
	for (timeTaken=(double)0, i=0; timeTaken < timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)
		priv.Decrypt(rng, ciphertext, ciphertext.size(), plaintext);

	OutputResultOperations(name, "Decryption", false, i, timeTaken);
}

void BenchMarkSigning(const char *name, PK_Signer &key, double timeTotal, bool pc=false)
{
	unsigned int len = 16;
	LC_RNG rng(time(NULL));
	SecByteBlock message(len), signature(key.SignatureLength());
	rng.GenerateBlock(message, len);

	clock_t start = clock();
	unsigned int i;
	double timeTaken;
	for (timeTaken=(double)0, i=0; timeTaken < timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)
		key.SignMessage(rng, message, len, signature);

	OutputResultOperations(name, "Signature", pc, i, timeTaken);

	if (!pc && key.GetMaterial().SupportsPrecomputation())
	{
		key.AccessMaterial().Precompute(16);
		BenchMarkSigning(name, key, timeTotal, true);
	}
}

void BenchMarkVerification(const char *name, const PK_Signer &priv, PK_Verifier &pub, double timeTotal, bool pc=false)
{
	unsigned int len = 16;
	LC_RNG rng(time(NULL));
	SecByteBlock message(len), signature(pub.SignatureLength());
	rng.GenerateBlock(message, len);
	priv.SignMessage(rng, message, len, signature);

	clock_t start = clock();
	unsigned int i;
	double timeTaken;
	for (timeTaken=(double)0, i=0; timeTaken < timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)
		pub.VerifyMessage(message, len, signature, signature.size());

	OutputResultOperations(name, "Verification", pc, i, timeTaken);

	if (!pc && pub.GetMaterial().SupportsPrecomputation())
	{
		pub.AccessMaterial().Precompute(16);
		BenchMarkVerification(name, priv, pub, timeTotal, true);
	}
}

void BenchMarkKeyGen(const char *name, SimpleKeyAgreementDomain &d, double timeTotal, bool pc=false)
{
	LC_RNG rng(time(NULL));
	SecByteBlock priv(d.PrivateKeyLength()), pub(d.PublicKeyLength());

	clock_t start = clock();
	unsigned int i;
	double timeTaken;
	for (timeTaken=(double)0, i=0; timeTaken < timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)
		d.GenerateKeyPair(rng, priv, pub);

	OutputResultOperations(name, "Key-Pair Generation", pc, i, timeTaken);

	if (!pc && d.GetMaterial().SupportsPrecomputation())
	{
		d.AccessMaterial().Precompute(16);
		BenchMarkKeyGen(name, d, timeTotal, true);
	}
}

void BenchMarkKeyGen(const char *name, AuthenticatedKeyAgreementDomain &d, double timeTotal, bool pc=false)
{
	LC_RNG rng(time(NULL));
	SecByteBlock priv(d.EphemeralPrivateKeyLength()), pub(d.EphemeralPublicKeyLength());

	clock_t start = clock();
	unsigned int i;
	double timeTaken;
	for (timeTaken=(double)0, i=0; timeTaken < timeTotal; timeTaken = double(clock() - start) / CLOCK_TICKS_PER_SECOND, i++)
		d.GenerateEphemeralKeyPair(rng, priv, pub);

	OutputResultOperations(name, "Key-Pair Generation", pc, i, timeTaken);

	if (!pc && d.GetMaterial().SupportsPrecomputation())
	{
		d.AccessMaterial().Precompute(16);
		BenchMarkKeyGen(name, d, timeTotal, true);
	}
}

void BenchMarkAgreement(const char *name, SimpleKeyAgreementDomain &d, double timeTotal, bool pc=false)
{
	LC_RNG rng(time(NULL));
	SecByteBlock priv1(d.PrivateKeyLength()), priv2(d.PrivateKeyLength());
	SecByteBlock pub1(d.PublicKeyLength()), pub2(d.PublicKeyLength());
	d.GenerateKeyPair(rng, priv1, pub1);
	d.GenerateKeyPair(rng, priv2, pub2);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产91久久久| 粉嫩蜜臀av国产精品网站| 麻豆91精品91久久久的内涵| 日韩一区二区在线观看| 久久久亚洲高清| 日韩一级二级三级| 亚洲欧美另类在线| 午夜欧美大尺度福利影院在线看| 欧美一区二区三区在| 成人国产一区二区三区精品| 亚洲一区二区三区爽爽爽爽爽| 欧美精品一区二区三区在线| **网站欧美大片在线观看| 国产精品视频一二三区| 一区二区欧美在线观看| 99精品视频一区二区三区| 亚洲视频在线一区| 久久精品男人天堂av| 欧美日本在线播放| jizz一区二区| 韩国在线一区二区| 美日韩一区二区| 久久精品人人做人人综合| 成人免费在线视频观看| 国产一区欧美日韩| 亚洲欧洲在线观看av| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 精油按摩中文字幕久久| 亚洲男人的天堂网| 亚洲成av人在线观看| 亚洲免费在线观看| 日本不卡中文字幕| 肉色丝袜一区二区| 亚洲黄网站在线观看| 中文字幕中文字幕一区| 欧美高清在线视频| 2021国产精品久久精品| 中文字幕二三区不卡| 亚洲影视在线播放| 久久99久久99| 在线观看国产91| 在线精品视频一区二区| 这里只有精品免费| 国产精品狼人久久影院观看方式| 性做久久久久久久久| 成人午夜av电影| 高清在线成人网| 欧美精品第1页| 正在播放亚洲一区| 亚洲精品中文在线| 国产精品一区二区久久不卡| 国产又粗又猛又爽又黄91精品| 91在线看国产| 精品国产一区a| 亚洲国产综合人成综合网站| 亚洲欧美日韩国产另类专区| 久久精品国产亚洲一区二区三区 | 欧美专区亚洲专区| 久久久久久久久久久黄色| 午夜精品久久久久影视| 中文字幕一区二区5566日韩| 国产精品一区三区| 成人免费在线播放视频| 欧美精品久久久久久久久老牛影院| 日本亚洲三级在线| 国产午夜精品久久久久久免费视| av福利精品导航| 玉米视频成人免费看| 日韩欧美电影在线| 日本最新不卡在线| 国产免费观看久久| 成人免费黄色大片| 五月天视频一区| 国产精品另类一区| 在线播放欧美女士性生活| 国产精品综合在线视频| 亚洲精品国产a| 精品日韩av一区二区| 理论片日本一区| 国产精品久久免费看| 91精品国产色综合久久| 99精品视频中文字幕| 久久精品噜噜噜成人av农村| 亚洲欧美日韩国产成人精品影院| 精品久久久久久久人人人人传媒 | 极品少妇xxxx偷拍精品少妇| 综合分类小说区另类春色亚洲小说欧美| 欧美日本在线视频| 99精品视频一区二区| 狠狠色狠狠色综合系列| 五月婷婷激情综合| 亚洲日本va午夜在线影院| 久久久久久免费网| 91精品在线一区二区| 91国偷自产一区二区开放时间| 亚洲第一主播视频| 在线播放日韩导航| 国产在线精品国自产拍免费| 国产日产欧美一区二区三区| 色综合久久久久综合体桃花网| 久久久.com| 成a人片亚洲日本久久| 亚洲日本免费电影| 91麻豆精品国产91久久久更新时间| 欧美一二三四在线| 成人久久18免费网站麻豆 | 日韩三级av在线播放| 色婷婷亚洲精品| 99久久免费视频.com| 国产suv精品一区二区三区| 久久99精品久久久久久国产越南| 午夜欧美在线一二页| 亚洲电影你懂得| 亚洲国产精品自拍| 一级做a爱片久久| 亚洲欧美另类在线| 依依成人综合视频| 一区二区三区丝袜| 亚洲黄色av一区| 亚洲一区二区在线播放相泽 | 337p日本欧洲亚洲大胆精品| 成熟亚洲日本毛茸茸凸凹| 亚洲一本大道在线| 国产精品国产三级国产aⅴ原创| 在线观看成人免费视频| 国产一区二区美女诱惑| 亚洲国产精品久久一线不卡| 日本一区二区三区国色天香 | 欧美成人bangbros| 欧美日韩一区二区电影| 天天色天天操综合| 国产精品白丝在线| 久久九九国产精品| 欧美草草影院在线视频| 欧美性生交片4| 日本aⅴ亚洲精品中文乱码| 日韩一区二区三区在线视频| 在线观看亚洲成人| 成人黄色小视频| 国产酒店精品激情| 奇米精品一区二区三区在线观看| 亚洲欧美另类小说视频| 中文字幕在线免费不卡| 国产网站一区二区| 欧美mv日韩mv| 欧美日韩一级大片网址| 色综合天天综合网国产成人综合天| 一区二区三区产品免费精品久久75| 国产偷国产偷亚洲高清人白洁| 91精品免费在线| 欧美日韩在线直播| 91精品1区2区| 91久久线看在观草草青青| 波多野结衣的一区二区三区| 国产成人综合亚洲网站| 亚洲综合色在线| 亚洲欧美另类综合偷拍| 一区av在线播放| 亚洲v中文字幕| 午夜天堂影视香蕉久久| 亚洲1区2区3区4区| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩精品乱码av一区二区| 亚洲成人动漫在线免费观看| 五月婷婷久久丁香| 蜜桃久久久久久| 国产v日产∨综合v精品视频| 国产成人精品免费| 91小视频在线| 国产在线不卡一区| 福利一区二区在线| 日韩精品一级二级| 久久国产精品免费| 欧美日韩国产天堂| 国产精品初高中害羞小美女文| 免费在线观看日韩欧美| 色又黄又爽网站www久久| 欧美一区二区三区系列电影| 亚洲欧洲韩国日本视频| 国产一区二区三区电影在线观看| 欧美日精品一区视频| 国产精品久久久久久久久图文区| 另类综合日韩欧美亚洲| 欧美色图免费看| 亚洲图片欧美激情| 懂色av一区二区三区免费看| 精品日韩在线观看| 天天av天天翘天天综合网色鬼国产| 99国产精品久久久久久久久久久| 久久新电视剧免费观看| 日本一不卡视频| 在线不卡一区二区| 夜夜嗨av一区二区三区中文字幕 | 麻豆精品国产91久久久久久| 欧美日韩另类国产亚洲欧美一级| 亚洲天堂2016| 色综合天天在线| 综合久久给合久久狠狠狠97色| 成人高清伦理免费影院在线观看| 久久久久99精品一区|