title: Implementing RSA in python
body: <p>i am trying to implement RSA in python(i am new to python) for my course, the problem i have is the code i have written does not work for numbers with more than 4 digits. any idea why this is happening? please advice</p>
  
  <pre><code>p =0
  q=0
  n=0#modules
  phyPQ = 0
  e = 0 #public key exponent
  d = 0#private key exponent
  c = ''
  m = ''
  
  def getPrimes():
      global p
      global q
      p = long(raw_input("Enter first prime p :   "))
      q = long(raw_input("Enter second prime q :  "))
  
  def computeModules(prime1,  prime2):
      global n
      n = prime1 * prime2
      print "Modules is = "+ `n`
      return n
  
  def computePhyPQ(prime1,  prime2):
      global phyPQ
      phyPQ = (prime1 -1) * (prime2 -1)
      print "The phyPQ is " + `phyPQ`
  
  def computePublickeyExponent(x):
      pubKeyExponentList= []
      for i in range(1, x):
          if  x % i != 0: 
              pubKeyExponentList.append(i)
      print pubKeyExponentList
      global e
      e =  long(raw_input("Pick a public key exponent from the list above :  "))
  
  def computePrivateKeyExponent(phyQP,  pubKeyExpo):
      flag = 1
      count = 0
      while flag == 1:
          count = count + 1
          if (count * phyQP + 1) % phyQP == 1:
              result = (count * phyQP + 1) / float(pubKeyExpo)
              if result % 1 == 0:
                  global d
                  d = long(result)
                  print 'The private key exponent exponent is:' +  `d`
                  flag = 0
  
  def encryptMessage(exponent,  modules):
      #c= m ^e mod n
      global c
      message= long(raw_input("Enter a value to be encrypted:"))
  
      c = long((message ** exponent) % modules)
      print'The encrypted message is :' + `c`
  
  def decryptMessage(modules,  privateKeyExpo, cryptedMessage):
      #m = c^d % n
      global m
      m = (cryptedMessage ** privateKeyExpo) % modules
      print 'message after decrypting is :' + `m`
  
  def mainMethod():
      getPrimes()
      computeModules(p, q)
      computePhyPQ(p,  q)
      computePublickeyExponent(phyPQ)
      computePrivateKeyExponent(phyPQ, e)
      encryptMessage(e, n)
      decryptMessage(n, d, c)
  
  mainMethod() 
  </code></pre>