-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtesttime.go
executable file
·126 lines (114 loc) · 2.73 KB
/
testtime.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package btcec
import (
"fmt"
"math/big"
"time"
)
var testdata = make([]*PrivateKey, 4096)
var testfieldx = make([]*FieldVal, 4096)
var testfieldy = make([]*FieldVal, 4096)
var testbigaffx = make([]*big.Int, 4096)
var testbigaffy = make([]*big.Int, 4096)
// 计算仿射坐标下的k*G
func TestKG() {
c := S256()
start1 := time.Now()
for i := 0; i < 1000; i++ {
testbigaffx[i], testbigaffy[i] = c.ScalarBaseMult(testdata[i].D.Bytes())
}
cost1 := time.Since(start1)
fmt.Printf("k*G 1000 num cost=[%s]\n", cost1)
}
// 访射坐标求-P
func Test_P() {
c := S256()
start1 := time.Now()
for i := 0; i < 4096; i++ {
inv_P := new(big.Int)
inv_P.Add(c.P, inv_P)
inv_P.Sub(inv_P, testdata[i].PublicKey.Y)
}
cost1 := time.Since(start1)
fmt.Printf("-P 4096 num cost=[%s]\n", cost1)
}
// 雅可比坐标到仿射坐标
func Test_F_to_B() {
c := S256()
z := new(FieldVal)
z.SetInt(1)
start1 := time.Now()
for i := 0; i < 4096; i++ {
_, _ = c.fieldJacobianToBigAffine(testfieldx[i], testfieldy[i], z)
}
cost1 := time.Since(start1)
fmt.Printf("雅可比到访射坐标 4096 num cost=[%s]\n", cost1)
}
// 访射坐标到雅可比坐标
func Test_B_to_F() {
c := S256()
start1 := time.Now()
for i := 0; i < 4096; i++ {
testfieldx[i], testfieldy[i] = c.bigAffineToField(testdata[i].PublicKey.X, testdata[i].PublicKey.Y)
}
cost1 := time.Since(start1)
fmt.Printf("仿射到雅可比坐标 4096 num cost=[%s]\n", cost1)
}
// 雅可比坐标求逆
func F_Inverse() {
start1 := time.Now()
for i := 0; i < 1000; i++ {
testfieldx[i].Inverse()
}
cost1 := time.Since(start1)
fmt.Printf("雅可比坐标求逆 1000 num cost=[%s]\n", cost1/1000)
}
// 雅可比坐标相加
func F_Add() {
start1 := time.Now()
for i := 0; i < 1000; i++ {
testfieldx[i].Add(testfieldy[i])
}
cost1 := time.Since(start1)
fmt.Printf("雅可比坐标相加 1000 num cost=[%s]\n", cost1/1000)
}
func F_Mul() {
start1 := time.Now()
for i := 0; i < 1000; i++ {
testfieldx[i].Mul2(testfieldx[i], testfieldy[i])
}
cost1 := time.Since(start1)
fmt.Printf("雅可比坐标相乘 1000 num cost=[%s]\n", cost1/1000)
}
func B_Mul() {
//c := S256()
start1 := time.Now()
for i := 0; i < 4096; i++ {
new(big.Int).Mul(testbigaffx[i], testbigaffy[i])
//a.Mod(a, c.P)
}
cost1 := time.Since(start1)
fmt.Printf("仿射坐标相乘 4096 num cost=[%s]\n", cost1)
}
func B_Add() {
start1 := time.Now()
for i := 0; i < 4096; i++ {
new(big.Int).Add(testbigaffx[i], testbigaffy[i])
}
cost1 := time.Since(start1)
fmt.Printf("坐标相加 4096 num cost=[%s]\n", cost1)
}
func TestTime() {
c := S256()
for i := 0; i < 4096; i++ {
testdata[i], _ = NewPrivateKey(c)
}
TestKG()
Test_B_to_F()
F_Mul()
F_Add()
F_Inverse()
Test_F_to_B()
Test_P()
//B_Mul()
//B_Add()
}