passphera-core 0.4.0__py3-none-any.whl → 0.6.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,50 +9,28 @@ class PasswordGenerator:
9
9
  """
10
10
  def __init__(
11
11
  self,
12
- text: str = None,
13
12
  shift: int = 3,
14
13
  multiplier: int = 3,
15
14
  key: str = "hill",
16
- algorithm: str = 'hill'
15
+ algorithm: str = 'hill',
16
+ characters_replacements: dict = None,
17
17
  ):
18
18
  """
19
- :param text: plain text to be ciphered
20
19
  :param shift: number of characters to shift each character (default 3)
21
20
  :param multiplier: number of characters to shift each character (default 3)
22
21
  :param key: cipher key string (default "secret")
23
22
  :param algorithm: main cipher algorithm name (default 'playfair')
23
+ :param characters_replacements: replace characters with the given values (default {})
24
+ :param text: plain text to be ciphered
24
25
  """
25
- self._chars_replacements: dict = {}
26
- self._text: str = text
26
+ if characters_replacements is None:
27
+ characters_replacements = {}
27
28
  self._shift: int = shift
28
29
  self._multiplier: int = multiplier
29
30
  self._key: str = key
30
31
  self._algorithm_name: str = algorithm.lower()
31
32
  self._algorithm = self._set_algorithm()
32
- if text:
33
- self._password: str = f"secret{self._text.replace(' ', '')}secret"
34
- else:
35
- self._password: str = f'secret'
36
-
37
- @property
38
- def text(self) -> str:
39
- """
40
- Returns the text to be ciphered into a password
41
- Eg: ```password = pg.text```
42
- :return: str: The text to be ciphered into a password
43
- """
44
- return self._text
45
-
46
- @text.setter
47
- def text(self, text: str) -> None:
48
- """
49
- Sets the text to be ciphered into a password
50
- Eg: ```pg.text = 'secret 2024 password'```
51
- :param text: The text to be ciphered into a password
52
- :return:
53
- """
54
- self._text = text
55
- self._password: str = f"secret{self._text.replace(' ', '')}secret"
33
+ self._characters_replacements: dict = characters_replacements
56
34
 
57
35
  @property
58
36
  def shift(self) -> int:
@@ -138,7 +116,7 @@ class PasswordGenerator:
138
116
  Eg: ```print(pg.characters_replacements) # {'a': '@1', 'b': '#2'}```
139
117
  :return: dict: The dictionary of the characters replacements
140
118
  """
141
- return self._chars_replacements
119
+ return self._characters_replacements
142
120
 
143
121
  def _set_algorithm(self):
144
122
  """
@@ -171,7 +149,7 @@ class PasswordGenerator:
171
149
  :param replacement: The (character|set of characters) to replace the first one
172
150
  :return:
173
151
  """
174
- self._chars_replacements[char[0]] = replacement
152
+ self._characters_replacements[char[0]] = replacement
175
153
 
176
154
  def reset_character(self, char: str) -> None:
177
155
  """
@@ -179,30 +157,30 @@ class PasswordGenerator:
179
157
  :param char: The character to be reset to its original value
180
158
  :return:
181
159
  """
182
- if char in self._chars_replacements:
183
- del self._chars_replacements[char]
160
+ if char in self._characters_replacements:
161
+ del self._characters_replacements[char]
184
162
 
185
- def generate_raw_password(self) -> str:
163
+ def generate_raw_password(self, text: str) -> str:
186
164
  """
187
165
  Generate a raw password string using the given parameters
188
166
  :return: str: The generated raw password
189
167
  """
190
168
  self._update_algorithm_properties()
191
- return self._algorithm.encrypt(self._password)
169
+ return self._algorithm.encrypt(f"secret{text}secret")
192
170
 
193
- def generate_password(self) -> str:
171
+ def generate_password(self, text: str) -> str:
194
172
  """
195
173
  Generate a strong password string using the raw password (add another layer of encryption to it)
196
174
  :return: str: The generated strong password
197
175
  """
198
176
  old_algorithm = self._algorithm_name
199
177
  self._algorithm_name = 'affine'
200
- self._password = self.generate_raw_password()
178
+ password = self.generate_raw_password(text)
201
179
  self._algorithm_name = old_algorithm
202
- self._password = self.generate_raw_password()
203
- for char in self._password:
204
- if char in self._text:
205
- self._password = self._password.replace(char, char.upper())
206
- for char, replacement in self._chars_replacements.items():
207
- self._password = self._password.replace(char, replacement)
208
- return self._password
180
+ password = self.generate_raw_password(password)
181
+ for char in password:
182
+ if char in text:
183
+ password = password.replace(char, char.upper())
184
+ for char, replacement in self._characters_replacements.items():
185
+ password = password.replace(char, replacement)
186
+ return password
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: passphera-core
3
- Version: 0.4.0
3
+ Version: 0.6.0
4
4
  Summary: The core system of passphera project
5
5
  Home-page: https://github.com/passphera/core
6
6
  Author: Fathi Abdelmalek
@@ -0,0 +1,7 @@
1
+ passphera_core/__init__.py,sha256=ND2D_sTQk5mroNRsKm03PXhx0HNf0740hOtZ4_U98OQ,119
2
+ passphera_core/exceptions.py,sha256=PPZhy05QMVnN3mm6EGj-RgWanMaF3E6aKN4lcpNOJY8,158
3
+ passphera_core/generator.py,sha256=s0Uc4S3SCT97xwQ0Gcw4hogGFIzTG5W0QX6Hs01iXII,6478
4
+ passphera_core-0.6.0.dist-info/METADATA,sha256=e_eLSaPhPv2kwOHyPQOyLS7RADfmTQ5ni-VBLpoJ1sU,628
5
+ passphera_core-0.6.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
6
+ passphera_core-0.6.0.dist-info/top_level.txt,sha256=aDUX2iWGOyfzyf6XakLWTbgeWqNrypMHO074Qratyds,15
7
+ passphera_core-0.6.0.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- passphera_core/__init__.py,sha256=ND2D_sTQk5mroNRsKm03PXhx0HNf0740hOtZ4_U98OQ,119
2
- passphera_core/exceptions.py,sha256=PPZhy05QMVnN3mm6EGj-RgWanMaF3E6aKN4lcpNOJY8,158
3
- passphera_core/generator.py,sha256=_OjRbToWw20nOOzBCc7kPg3DwCURK_HoTkI4Dyv7Rls,7036
4
- passphera_core-0.4.0.dist-info/METADATA,sha256=9olDGxoeUkzJGImvwSVLwVW7bjUkXBiYwr7fC2vnfQg,628
5
- passphera_core-0.4.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
6
- passphera_core-0.4.0.dist-info/top_level.txt,sha256=aDUX2iWGOyfzyf6XakLWTbgeWqNrypMHO074Qratyds,15
7
- passphera_core-0.4.0.dist-info/RECORD,,