You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
/* unused */ |
|
|
|
#include <stdio.h> |
|
#include <openssl/tmdiff.h> |
|
#include "bn_lcl.h" |
|
|
|
#define SIZE 256 |
|
#define NUM (8*8*8) |
|
#define MOD (8*8*8*8*8) |
|
|
|
main(argc, argv) |
|
int argc; |
|
char *argv[]; |
|
{ |
|
BN_CTX ctx; |
|
BIGNUM a, b, c, r, rr, t, l; |
|
int j, i, size = SIZE, num = NUM, mod = MOD; |
|
char *start, *end; |
|
BN_MONT_CTX mont; |
|
double d, md; |
|
|
|
BN_MONT_CTX_init(&mont); |
|
BN_CTX_init(&ctx); |
|
BN_init(&a); |
|
BN_init(&b); |
|
BN_init(&c); |
|
BN_init(&r); |
|
|
|
start = ms_time_new(); |
|
end = ms_time_new(); |
|
while (size <= 1024 * 8) { |
|
BN_rand(&a, size, 0, 0); |
|
BN_rand(&b, size, 1, 0); |
|
BN_rand(&c, size, 0, 1); |
|
|
|
BN_mod(&a, &a, &c, &ctx); |
|
|
|
ms_time_get(start); |
|
for (i = 0; i < 10; i++) |
|
BN_MONT_CTX_set(&mont, &c, &ctx); |
|
ms_time_get(end); |
|
md = ms_time_diff(start, end); |
|
|
|
ms_time_get(start); |
|
for (i = 0; i < num; i++) { |
|
/* bn_mull(&r,&a,&b,&ctx); */ |
|
/* BN_sqr(&r,&a,&ctx); */ |
|
BN_mod_exp_mont(&r, &a, &b, &c, &ctx, &mont); |
|
} |
|
ms_time_get(end); |
|
d = ms_time_diff(start, end) /* *50/33 */ ; |
|
printf("%5d bit:%6.2f %6d %6.4f %4d m_set(%5.4f)\n", size, |
|
d, num, d / num, (int)((d / num) * mod), md / 10.0); |
|
num /= 8; |
|
mod /= 8; |
|
if (num <= 0) |
|
num = 1; |
|
size *= 2; |
|
} |
|
|
|
}
|
|
|