Python Forum
Thread Rating:
  • 5 Vote(s) - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Can I do this faster?
#1
Hello!

I´m making a RSA-encrypting/decrypting program.

When I encrypt I use a list but t,e and n are big numbers so this take a while. Is there anyway python can do the exact same thing but faster?

wordlist_krypterad = [(t ** e) % n for t in wordlist_ascii_int]

Thanx!
/Gasimoe
Reply
#2
I'd start by making it functional.  Once it works that way, you can look into paralleling it to take advantage of multiple cpu cores.

Without actually testing the code, here's an example of making it functional:
transform = lambda t: (t**e) % n
wordlist_krypterad = map(transform, wordlist_ascii_int)
Reply
#3
https://docs.python.org/3/library/functions.html#pow
Reply
#4
Another way could be using numpy (if your t and n fit into int32) - you are doing exactly same operation on list of numbers, if you transform it to 1-D array, you can manipulate them all at once. I am not sure if there is modular exponentiation in numpy - if not, to avoid overflow (and to speed it) you will need to implement it. With  binary exponentiation it could by quite fast.
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020