python - AttributeError: 'Rsa' object has no attribute 'n' -


i getting error:

traceback (most recent call last):   file "/users/aditya/desktop/pycharm /fire_tech_camp/rsa/rsamainframe.py", line 7, in <module>     rsa = rsaencryptionanddecryption.rsa()   file "/users/aditya/desktop/pycharm /fire_tech_camp/rsa/rsaencryptionanddecryption.py", line 8, in __init__     self.p, self.q = self.findingpandq()   file "/users/aditya/desktop/pycharm /fire_tech_camp/rsa/rsaencryptionanddecryption.py", line 80, in findingpandq     while not self.isprime(self.a):   file "/users/aditya/desktop/pycharm /fire_tech_camp/rsa/rsaencryptionanddecryption.py", line 14, in isprime     in range(2,int(self.n**0.5)+1): attributeerror: 'rsa' object has no attribute 'n' 

what trying create class function (isprime()) check primes. in seperate function check if prime (generate_keys()). class being called in seperate file.

code: main file call class:

from rsa import rsaencryptionanddecryption appjar import gui  app = gui() rsa = rsaencryptionanddecryption.rsa()  def encode(name):     msg = app.getentry('input encode here')     if msg != '':         p, q = rsa.findingpandq()          while p == q:             p, q = rsa.findingpandq()          n, e, d = rsa.generate_keys(p, q)          print(n, e, d) 

i run function in this

   app.addbutton('encode', encode, 3, 3) 

the class code here:

import random math import gcd  class rsa:      def __init__(self):         self.p, self.q = self.findingpandq()         self.n = self.p * self.q         self.phi = (self.p - 1) * (self.q - 1)         self.e = 0      def isprime(self, n):         in range(2,int(self.n**0.5)+1):             if self.n%i == 0:                 return false          return true      def modreverse(self, phi, e):         self.pos00 = self.phi         self.pos01 = self.phi         self.pos10 = self.e         self.pos11 = 1         self.newpos10 = 0           while self.newpos10 != 1:             self.pos00pos10int = self.pos00 // self.pos10             self.inttimespos10 = self.pos00pos10int * self.pos10             self.inttimespos11 = self.pos00pos10int * self.pos11              self.newpos10 = self.pos00 - self.inttimespos10             if self.newpos10 < 0:                 self.newpos10 %= phi                 self.newpos11 = self.pos01 - self.inttimespos11             if self.newpos11 < 0:                 self.newpos11 %= phi                  self.pos00 = self.pos10                 self.pos01 = self.pos11                 self.pos10 = self.newpos10                 self.pos11 = self.newpos11           return self.newpos11      def coprime(self, a, b):         return gcd(self.a, self.b) == 1      def findingpandq(self):         self.a = random.randint(10,100)         while not self.isprime(self.a):             self.a = random.randint(10,100)              self.b = random.randint(10,100)         while not self.isprime(self.b):             self.b = random.randint(10,100)         return self.a, self.b      def generate_keys(self, p, q):           in range(self.phi):             if self.isprime(i):                 if self.coprime(i, self.phi):                     self.e =          self.d = self.modreverse(self.phi, self.e)          while self.e == self.d:             self.p, self.q = self.findingpandq(self.p, self.q)              while self.p == self.q:                 self.p, self.q = self.findingpandq(self.p, self.q)                 self.n, self.e, self.d = self.generate_keys(self.p, self.q)         return self.n, self.e, self.d 

you calling functions before have set self.n:

def __init__(self):     self.p, self.q = self.findingpandq()     self.n = self.p * self.q 

self.n set after called findingpandq(). because call isprime() findingpandq(), , isprime() assumes self.n exists, fails.

you made simple error; should using n (the argument passed isprime(), , not self.n:

def isprime(self, n):     in range(2, int(n ** 0.5) + 1):         if n % == 0:             return false     return true 

Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -