/rev/99ae184a2674
changeset: 1339:99ae184a2674
user: Marcel Keller <[email protected]>
date: Tue Oct 27 19:59:21 2009 +0100
summary: paillier: Optimized decryption by caching.
diffstat:
viff/paillier.py | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diffs (25 lines):
diff -r c7403cb56ace -r 99ae184a2674 viff/paillier.py
--- a/viff/paillier.py Tue Oct 27 19:25:33 2009 +0100
+++ b/viff/paillier.py Tue Oct 27 19:59:21 2009 +0100
@@ -62,10 +62,19 @@
nsq = n*n
return (pow(g, m, nsq)*pow(r, n, nsq)) % nsq
+#: Cache for ciphertext-independent factors.
+_decrypt_factors = {}
+
def decrypt(c, (n, g, lm)):
numer = L(pow(c, lm, n*n), n)
- denom = L(pow(g, lm, n*n), n)
- return (numer*gmpy.invert(denom, n)) % n
+ key = (n, g, lm)
+ try:
+ factor = _decrypt_factors[key]
+ except KeyError:
+ denom = L(pow(g, lm, n*n), n)
+ factor = gmpy.invert(denom, n)
+ _decrypt_factors[key] = factor
+ return (numer * factor) % n
class PaillierRuntime(Runtime):
_______________________________________________
viff-commits mailing list
[email protected]
http://lists.viff.dk/listinfo.cgi/viff-commits-viff.dk