· 6 years ago · Feb 11, 2019, 04:22 AM
1# -- coding: utf-8 --â€
2from charm.toolbox.integergroup import RSAGroup
3from charm.toolbox.pairinggroup import PairingGroup,ZR,G1,G2,GT,pair
4from charm.toolbox.ecgroup import ECGroup,ZR,G
5from charm.toolbox.eccurve import secp160r1
6from charm.toolbox.symcrypto import SymmetricCryptoAbstraction
7from charm.core.math.pairing import hashPair as extractor
8
9# from charm.core.math import integer
10import hashlib
11import hmac
12from charm.schemes.pkenc.pkenc_paillier99 import *
13
14import time
15
16
17
18
19no_of_experiments=range(1000)
20pairinggroup = PairingGroup('MNT159')
21ecgroup = ECGroup(secp160r1)
22rsagroup = RSAGroup()
23#######################################################################
24print ("pairing")
25print ("#"*20)
26g1=pairinggroup.random(G1)
27g2=pairinggroup.random(G2)
28t0 = time.time()
29for i in no_of_experiments:
30 pair(g1,g2)
31t1 = time.time()-t0
32print(('----Average pair(g1,g2) took %f milli seconds to run.\n') % t1) ;
33
34
35gt1=pairinggroup.random(GT)
36gt2=pairinggroup.random(GT)
37t0 = time.time()
38for i in no_of_experiments:
39 gt2*gt2
40t1 = time.time()-t0
41print(('----Average gt2*gt2 took %f milli seconds to run.\n') % t1) ;
42
43
44g1=pairinggroup.random(G1)
45g2=pairinggroup.random(G1)
46t0 = time.time()
47for i in no_of_experiments:
48 g1*g2
49t1 = time.time()-t0
50print(('----Average g1+g2 took %f milli seconds to run.\n') % t1) ;
51
52
53H = lambda x: ecgroup.hash(x, G)
54
55t0 = time.time()
56for i in no_of_experiments:
57 H('A')
58t1 = time.time()-t0
59
60print(('----Average H(a)->G1 took %f milli seconds to run.\n') % t1) ;
61
62
63a = pairinggroup.random(ZR)
64g1=pairinggroup.random(G1)
65t0 = time.time()
66for i in no_of_experiments:
67 g1**a
68t1 = time.time()-t0
69
70print(('----Average a*g1 took %f milli seconds to run.\n') % t1) ;
71
72# ######################################################################
73print ("Eliptic curve 160")
74print ("#"*20)
75g1=ecgroup.random(G)
76g2=ecgroup.random(G)
77t0 = time.time()
78for i in no_of_experiments:
79 g1*g2
80t1 = time.time()-t0
81print(('----Average ecgroup g1+g2 took %f milli seconds to run.\n') % t1) ;
82
83
84
85g1=ecgroup.random(G)
86a=ecgroup.random(ZR)
87t0 = time.time()
88for i in no_of_experiments:
89 g1**a
90t1 = time.time()-t0
91print(('----Average ecgroup a* g1 took %f milli seconds to run.\n') % t1) ;
92
93# #######################################################################
94print ("HMAC")
95print ("#"*20)
96KEY=b'key'
97MESSAGE=b'MAA'
98hmac = hmac.new(KEY, MESSAGE, hashlib.sha256)
99
100t0 = time.time()
101for i in no_of_experiments:
102 hmac.hexdigest()
103t1 = time.time()-t0
104
105print(('----Average hmac took %f milli seconds to run.\n') % t1) ;
106
107# #######################################################################
108print ("Pai99")
109print ("#"*20)
110
111group = RSAGroup()
112group.paramgen(secparam=1024)
113
114pai = Pai99(group)
115(public_key, secret_key) = pai.keygen()
116
117a=public_key['g']
118print(public_key['n2'])
119
120msg_1 = 12345678987654321
121
122t0 = time.time()
123for i in no_of_experiments:
124 pai.encrypt(public_key, msg_1)
125t1 = time.time()-t0
126
127print (('Average pai.encrypt time took %f milli seconds .\n')% (t1))
128
129cipher_1 = pai.encrypt(public_key, msg_1)
130t0 = time.time()
131for i in no_of_experiments:
132 pai.decrypt(public_key,secret_key, cipher_1)
133t1 = time.time()-t0
134
135print (('Average pai.decrypt time took %f milli seconds .\n')% (t1))
136
137
138msg_2 = 12345761234123409
139
140cipher_2 = pai.encrypt(public_key, msg_1)
141
142t0 = time.time()
143for i in no_of_experiments:
144 cipher_1+cipher_2
145t1 = time.time()-t0
146
147print (('Average cipher_1+cipher_2 time took %f milli seconds .\n')% (t1))
148
149a=group.random(ZR)
150
151t0 = time.time()
152for i in no_of_experiments:
153 cipher_2['c']**a
154t1 = time.time()-t0
155
156print (('Average cipher_2[c]**a time took %f milli seconds .\n')% (t1))
157
158# # #########################################################################################
159# print ("AES")
160# print ("#"*20)
161
162
163# r = pairinggroup.random(G1)
164# msg = b'iuoi'
165# symcrypt = SymmetricCryptoAbstraction(extractor(pairinggroup.random(G1)))
166
167# t0 = time.time()
168# for i in no_of_experiments:
169# symcrypt.encrypt(msg)
170# t1 = time.time()-t0
171
172# print (('Average aes encrypt time took %f milli seconds .\n')% (t1))
173
174# ct=symcrypt.encrypt(msg)
175
176# t0 = time.time()
177# for i in no_of_experiments:
178# symcrypt.decrypt(ct)
179# t1 = time.time()-t0
180
181# print (('Average aes encrypt time took %f milli seconds .\n')% (t1))
182
183# #########################################################################################
184print ("RSA Group")
185print ("#"*20)
186
187group = RSAGroup()
188group.paramgen(secparam=1024)
189g1 = group.random()
190g2 = group.random()
191a = group.random(ZR)
192
193t0 = time.time()
194for i in no_of_experiments:
195 g1**a
196t1 = time.time()-t0
197
198print (('Average RSA g**a time took %f milli seconds .\n')% (t1))
199
200
201
202t0 = time.time()
203for i in no_of_experiments:
204 g1*g2
205t1 = time.time()-t0
206
207print (('Average RSA g1*g2 time took %f milli seconds .\n')% (t1))