passphera-core 0.3.4__tar.gz → 0.5.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {passphera-core-0.3.4 → passphera-core-0.5.0}/PKG-INFO +2 -2
- {passphera-core-0.3.4 → passphera-core-0.5.0}/README.md +1 -1
- passphera-core-0.5.0/passphera_core/__init__.py +2 -0
- {passphera-core-0.3.4 → passphera-core-0.5.0}/passphera_core/exceptions.py +1 -1
- {passphera-core-0.3.4 → passphera-core-0.5.0}/passphera_core/generator.py +26 -44
- {passphera-core-0.3.4 → passphera-core-0.5.0}/passphera_core.egg-info/PKG-INFO +2 -2
- {passphera-core-0.3.4 → passphera-core-0.5.0}/setup.py +1 -1
- passphera-core-0.3.4/passphera_core/__init__.py +0 -2
- {passphera-core-0.3.4 → passphera-core-0.5.0}/passphera_core.egg-info/SOURCES.txt +0 -0
- {passphera-core-0.3.4 → passphera-core-0.5.0}/passphera_core.egg-info/dependency_links.txt +0 -0
- {passphera-core-0.3.4 → passphera-core-0.5.0}/passphera_core.egg-info/top_level.txt +0 -0
- {passphera-core-0.3.4 → passphera-core-0.5.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: passphera-core
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.5.0
|
4
4
|
Summary: The core system of passphera project
|
5
5
|
Home-page: https://github.com/passphera/core
|
6
6
|
Author: Fathi Abdelmalek
|
@@ -14,6 +14,6 @@ Classifier: Topic :: Security
|
|
14
14
|
Classifier: Topic :: Security :: Cryptography
|
15
15
|
Description-Content-Type: text/markdown
|
16
16
|
|
17
|
-
# passphera-
|
17
|
+
# passphera-core
|
18
18
|
|
19
19
|
The core system of passphera project
|
@@ -9,29 +9,30 @@ 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
|
-
|
16
|
-
|
17
|
-
|
14
|
+
key: str = "hill",
|
15
|
+
algorithm: str = 'hill',
|
16
|
+
characters_replacements: dict = None,
|
17
|
+
text: str = None,
|
18
18
|
):
|
19
19
|
"""
|
20
|
-
:param text: plain text to be ciphered
|
21
20
|
:param shift: number of characters to shift each character (default 3)
|
22
21
|
:param multiplier: number of characters to shift each character (default 3)
|
23
|
-
:param
|
24
|
-
:param key_iter: cipher key matrix (default (9, 4, 5, 7))
|
22
|
+
:param key: cipher key string (default "secret")
|
25
23
|
:param algorithm: main cipher algorithm name (default 'playfair')
|
24
|
+
:param characters_replacements: replace characters with the given values (default {})
|
25
|
+
:param text: plain text to be ciphered
|
26
26
|
"""
|
27
|
-
|
28
|
-
|
27
|
+
if characters_replacements is None:
|
28
|
+
characters_replacements = {}
|
29
29
|
self._shift: int = shift
|
30
30
|
self._multiplier: int = multiplier
|
31
|
-
self.
|
32
|
-
self._key_iter: iter = key_iter
|
31
|
+
self._key: str = key
|
33
32
|
self._algorithm_name: str = algorithm.lower()
|
34
33
|
self._algorithm = self._set_algorithm()
|
34
|
+
self._characters_replacements: dict = characters_replacements
|
35
|
+
self._text: str = text
|
35
36
|
if text:
|
36
37
|
self._password: str = f"secret{self._text.replace(' ', '')}secret"
|
37
38
|
else:
|
@@ -96,42 +97,23 @@ class PasswordGenerator:
|
|
96
97
|
self._multiplier = multiplier
|
97
98
|
|
98
99
|
@property
|
99
|
-
def
|
100
|
+
def key(self) -> str:
|
100
101
|
"""
|
101
102
|
Returns the key string for the cipher algorithm
|
102
103
|
Eg: ```key_str = pg.key_str```
|
103
104
|
:return: str: The key string for the cipher algorithm
|
104
105
|
"""
|
105
|
-
return self.
|
106
|
+
return self._key
|
106
107
|
|
107
|
-
@
|
108
|
-
def
|
108
|
+
@key.setter
|
109
|
+
def key(self, key: str) -> None:
|
109
110
|
"""
|
110
111
|
Sets the key string for the cipher algorithm
|
111
|
-
Eg: ```pg.
|
112
|
-
:param
|
113
|
-
:return:
|
114
|
-
"""
|
115
|
-
self._key_str = key_str
|
116
|
-
|
117
|
-
@property
|
118
|
-
def key_iter(self) -> iter:
|
119
|
-
"""
|
120
|
-
Returns the key matrix for the cipher algorithm
|
121
|
-
Eg: ```key_iter = pg.key_iter```
|
122
|
-
:return: iter: The key matrix for the cipher algorithm
|
123
|
-
"""
|
124
|
-
return self._key_iter
|
125
|
-
|
126
|
-
@key_iter.setter
|
127
|
-
def key_iter(self, key_iter: iter) -> None:
|
128
|
-
"""
|
129
|
-
Sets the key matrix for the cipher algorithm
|
130
|
-
Eg: ```pg.key_iter = (9, 5, 2, 4)```
|
131
|
-
:param key_iter: The key matrix for the cipher algorithm
|
112
|
+
Eg: ```pg.key = 'secret key'```
|
113
|
+
:param key: The key string for the cipher algorithm
|
132
114
|
:return:
|
133
115
|
"""
|
134
|
-
self.
|
116
|
+
self._key = key
|
135
117
|
|
136
118
|
@property
|
137
119
|
def algorithm(self) -> str:
|
@@ -160,7 +142,7 @@ class PasswordGenerator:
|
|
160
142
|
Eg: ```print(pg.characters_replacements) # {'a': '@1', 'b': '#2'}```
|
161
143
|
:return: dict: The dictionary of the characters replacements
|
162
144
|
"""
|
163
|
-
return self.
|
145
|
+
return self._characters_replacements
|
164
146
|
|
165
147
|
def _set_algorithm(self):
|
166
148
|
"""
|
@@ -173,9 +155,9 @@ class PasswordGenerator:
|
|
173
155
|
case 'affine':
|
174
156
|
return AffineCipher(self._multiplier, self._shift)
|
175
157
|
case 'playfair':
|
176
|
-
return PlayfairCipher(self.
|
158
|
+
return PlayfairCipher(self._key)
|
177
159
|
case 'hill':
|
178
|
-
return HillCipher(self.
|
160
|
+
return HillCipher(self._key)
|
179
161
|
case _:
|
180
162
|
raise InvalidAlgorithmException(self._algorithm_name)
|
181
163
|
|
@@ -193,7 +175,7 @@ class PasswordGenerator:
|
|
193
175
|
:param replacement: The (character|set of characters) to replace the first one
|
194
176
|
:return:
|
195
177
|
"""
|
196
|
-
self.
|
178
|
+
self._characters_replacements[char[0]] = replacement
|
197
179
|
|
198
180
|
def reset_character(self, char: str) -> None:
|
199
181
|
"""
|
@@ -201,8 +183,8 @@ class PasswordGenerator:
|
|
201
183
|
:param char: The character to be reset to its original value
|
202
184
|
:return:
|
203
185
|
"""
|
204
|
-
if char in self.
|
205
|
-
del self.
|
186
|
+
if char in self._characters_replacements:
|
187
|
+
del self._characters_replacements[char]
|
206
188
|
|
207
189
|
def generate_raw_password(self) -> str:
|
208
190
|
"""
|
@@ -225,6 +207,6 @@ class PasswordGenerator:
|
|
225
207
|
for char in self._password:
|
226
208
|
if char in self._text:
|
227
209
|
self._password = self._password.replace(char, char.upper())
|
228
|
-
for char, replacement in self.
|
210
|
+
for char, replacement in self._characters_replacements.items():
|
229
211
|
self._password = self._password.replace(char, replacement)
|
230
212
|
return self._password
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: passphera-core
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.5.0
|
4
4
|
Summary: The core system of passphera project
|
5
5
|
Home-page: https://github.com/passphera/core
|
6
6
|
Author: Fathi Abdelmalek
|
@@ -14,6 +14,6 @@ Classifier: Topic :: Security
|
|
14
14
|
Classifier: Topic :: Security :: Cryptography
|
15
15
|
Description-Content-Type: text/markdown
|
16
16
|
|
17
|
-
# passphera-
|
17
|
+
# passphera-core
|
18
18
|
|
19
19
|
The core system of passphera project
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|