/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

Reply via email to