Cryptomania 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,81 @@
1
+ Metadata-Version: 2.4
2
+ Name: Cryptomania
3
+ Version: 0.1.0
4
+ Summary: A library to code and encode messages and strings!
5
+ Requires-Python: >=3.11
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: termcolor>=3.3.0
8
+
9
+ # CryptoMania
10
+ ## Un sistema de encriptación de mensajes junto a su librería original
11
+
12
+ ---
13
+
14
+ CryptoMania sirve para programadores que quieren encriptar sus mensajes de manera rapida y sencilla usando POO
15
+
16
+ CryptoMania posee como funciones principales encriptar en cifrados o sistemas de encriptación comúnmente conocidos como el cifrado cesar o el cifrado Hash
17
+
18
+ ---
19
+
20
+ # Conceptos de POO Utilizados en CryptoMania
21
+
22
+ 1. Encapsulamiento
23
+ Linea 10 de cryptomania.py
24
+ ```python
25
+ self.__message = message
26
+ ```
27
+
28
+ 2. Herencia
29
+ Se utiliza en general en la libreria de CryptoMania y en la GUI heredando esta de mainGUI.py
30
+
31
+ 3. Abstracción
32
+ Linea 1 -> 18 de template.py
33
+ ```python
34
+ from abc import ABC, abstractmethod
35
+
36
+
37
+ class CryptoTemplate(ABC):
38
+ def __init__(self, message : str):
39
+ self.__message = message
40
+ if not isinstance(self.__message, str):
41
+ raise TypeError("The Attributes must be its types!")
42
+
43
+ @abstractmethod
44
+ def encode(self):
45
+ pass
46
+
47
+ def return_encoded_message(self):
48
+ return self.encode()
49
+
50
+ def return_original_message(self):
51
+ return self.__message
52
+ ```
53
+
54
+ 4. Polimorfismo
55
+ Se puede apreciar en el codigo anterior siendo una plantilla del resto de Metodos de encriptación
56
+
57
+ ---
58
+ ## Criterios de Aceptación
59
+
60
+ 1. El sistema debe permitir al usuario ingresar un mensaje de texto y
61
+ seleccionar un método de encriptación desde el menú de consola,
62
+ retornando el mensaje encriptado correctamente.
63
+
64
+ 2. La clase `CryptoTemplate` debe ser abstracta y no debe poder
65
+ instanciarse directamente; solo sus clases hijas pueden ser usadas.
66
+
67
+ 3. Cada método de encriptación (César, Hash, etc.) debe implementar
68
+ obligatoriamente el método `encode()`, y cada implementación debe
69
+ producir un resultado diferente para el mismo mensaje de entrada.
70
+
71
+ 4. El atributo `__message` debe estar encapsulado y no debe ser
72
+ accesible ni modificable directamente desde fuera de la clase;
73
+ solo a través de los métodos públicos definidos.
74
+
75
+ 5. Si el usuario ingresa un valor que no sea string como mensaje,
76
+ el sistema debe lanzar un `TypeError` con un mensaje de error
77
+ descriptivo, sin romper la ejecución del programa.
78
+
79
+ 6. El menú de consola debe incluir como mínimo las opciones de
80
+ encriptar un mensaje, mostrar el resultado y salir del sistema,
81
+ funcionando de forma controlada sin errores inesperados.
@@ -0,0 +1,15 @@
1
+ README.md
2
+ pyproject.toml
3
+ Cryptomania.egg-info/PKG-INFO
4
+ Cryptomania.egg-info/SOURCES.txt
5
+ Cryptomania.egg-info/dependency_links.txt
6
+ Cryptomania.egg-info/requires.txt
7
+ Cryptomania.egg-info/top_level.txt
8
+ cryptokit/__init__.py
9
+ cryptokit/binary.py
10
+ cryptokit/caesar.py
11
+ cryptokit/hash.py
12
+ cryptokit/hex.py
13
+ cryptokit/rot13.py
14
+ cryptokit/template.py
15
+ cryptokit/vigenere.py
@@ -0,0 +1 @@
1
+ termcolor>=3.3.0
@@ -0,0 +1 @@
1
+ cryptokit
@@ -0,0 +1,81 @@
1
+ Metadata-Version: 2.4
2
+ Name: Cryptomania
3
+ Version: 0.1.0
4
+ Summary: A library to code and encode messages and strings!
5
+ Requires-Python: >=3.11
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: termcolor>=3.3.0
8
+
9
+ # CryptoMania
10
+ ## Un sistema de encriptación de mensajes junto a su librería original
11
+
12
+ ---
13
+
14
+ CryptoMania sirve para programadores que quieren encriptar sus mensajes de manera rapida y sencilla usando POO
15
+
16
+ CryptoMania posee como funciones principales encriptar en cifrados o sistemas de encriptación comúnmente conocidos como el cifrado cesar o el cifrado Hash
17
+
18
+ ---
19
+
20
+ # Conceptos de POO Utilizados en CryptoMania
21
+
22
+ 1. Encapsulamiento
23
+ Linea 10 de cryptomania.py
24
+ ```python
25
+ self.__message = message
26
+ ```
27
+
28
+ 2. Herencia
29
+ Se utiliza en general en la libreria de CryptoMania y en la GUI heredando esta de mainGUI.py
30
+
31
+ 3. Abstracción
32
+ Linea 1 -> 18 de template.py
33
+ ```python
34
+ from abc import ABC, abstractmethod
35
+
36
+
37
+ class CryptoTemplate(ABC):
38
+ def __init__(self, message : str):
39
+ self.__message = message
40
+ if not isinstance(self.__message, str):
41
+ raise TypeError("The Attributes must be its types!")
42
+
43
+ @abstractmethod
44
+ def encode(self):
45
+ pass
46
+
47
+ def return_encoded_message(self):
48
+ return self.encode()
49
+
50
+ def return_original_message(self):
51
+ return self.__message
52
+ ```
53
+
54
+ 4. Polimorfismo
55
+ Se puede apreciar en el codigo anterior siendo una plantilla del resto de Metodos de encriptación
56
+
57
+ ---
58
+ ## Criterios de Aceptación
59
+
60
+ 1. El sistema debe permitir al usuario ingresar un mensaje de texto y
61
+ seleccionar un método de encriptación desde el menú de consola,
62
+ retornando el mensaje encriptado correctamente.
63
+
64
+ 2. La clase `CryptoTemplate` debe ser abstracta y no debe poder
65
+ instanciarse directamente; solo sus clases hijas pueden ser usadas.
66
+
67
+ 3. Cada método de encriptación (César, Hash, etc.) debe implementar
68
+ obligatoriamente el método `encode()`, y cada implementación debe
69
+ producir un resultado diferente para el mismo mensaje de entrada.
70
+
71
+ 4. El atributo `__message` debe estar encapsulado y no debe ser
72
+ accesible ni modificable directamente desde fuera de la clase;
73
+ solo a través de los métodos públicos definidos.
74
+
75
+ 5. Si el usuario ingresa un valor que no sea string como mensaje,
76
+ el sistema debe lanzar un `TypeError` con un mensaje de error
77
+ descriptivo, sin romper la ejecución del programa.
78
+
79
+ 6. El menú de consola debe incluir como mínimo las opciones de
80
+ encriptar un mensaje, mostrar el resultado y salir del sistema,
81
+ funcionando de forma controlada sin errores inesperados.
@@ -0,0 +1,73 @@
1
+ # CryptoMania
2
+ ## Un sistema de encriptación de mensajes junto a su librería original
3
+
4
+ ---
5
+
6
+ CryptoMania sirve para programadores que quieren encriptar sus mensajes de manera rapida y sencilla usando POO
7
+
8
+ CryptoMania posee como funciones principales encriptar en cifrados o sistemas de encriptación comúnmente conocidos como el cifrado cesar o el cifrado Hash
9
+
10
+ ---
11
+
12
+ # Conceptos de POO Utilizados en CryptoMania
13
+
14
+ 1. Encapsulamiento
15
+ Linea 10 de cryptomania.py
16
+ ```python
17
+ self.__message = message
18
+ ```
19
+
20
+ 2. Herencia
21
+ Se utiliza en general en la libreria de CryptoMania y en la GUI heredando esta de mainGUI.py
22
+
23
+ 3. Abstracción
24
+ Linea 1 -> 18 de template.py
25
+ ```python
26
+ from abc import ABC, abstractmethod
27
+
28
+
29
+ class CryptoTemplate(ABC):
30
+ def __init__(self, message : str):
31
+ self.__message = message
32
+ if not isinstance(self.__message, str):
33
+ raise TypeError("The Attributes must be its types!")
34
+
35
+ @abstractmethod
36
+ def encode(self):
37
+ pass
38
+
39
+ def return_encoded_message(self):
40
+ return self.encode()
41
+
42
+ def return_original_message(self):
43
+ return self.__message
44
+ ```
45
+
46
+ 4. Polimorfismo
47
+ Se puede apreciar en el codigo anterior siendo una plantilla del resto de Metodos de encriptación
48
+
49
+ ---
50
+ ## Criterios de Aceptación
51
+
52
+ 1. El sistema debe permitir al usuario ingresar un mensaje de texto y
53
+ seleccionar un método de encriptación desde el menú de consola,
54
+ retornando el mensaje encriptado correctamente.
55
+
56
+ 2. La clase `CryptoTemplate` debe ser abstracta y no debe poder
57
+ instanciarse directamente; solo sus clases hijas pueden ser usadas.
58
+
59
+ 3. Cada método de encriptación (César, Hash, etc.) debe implementar
60
+ obligatoriamente el método `encode()`, y cada implementación debe
61
+ producir un resultado diferente para el mismo mensaje de entrada.
62
+
63
+ 4. El atributo `__message` debe estar encapsulado y no debe ser
64
+ accesible ni modificable directamente desde fuera de la clase;
65
+ solo a través de los métodos públicos definidos.
66
+
67
+ 5. Si el usuario ingresa un valor que no sea string como mensaje,
68
+ el sistema debe lanzar un `TypeError` con un mensaje de error
69
+ descriptivo, sin romper la ejecución del programa.
70
+
71
+ 6. El menú de consola debe incluir como mínimo las opciones de
72
+ encriptar un mensaje, mostrar el resultado y salir del sistema,
73
+ funcionando de forma controlada sin errores inesperados.
File without changes
@@ -0,0 +1,10 @@
1
+ from .template import CryptoTemplate
2
+
3
+
4
+ class Binary(CryptoTemplate):
5
+ def __init__(self, message):
6
+ super().__init__(message)
7
+
8
+ def encode(self):
9
+ original = self.return_original_message()
10
+ return ' '.join(format(ord(c), '08b') for c in original)
@@ -0,0 +1,30 @@
1
+ from .template import CryptoTemplate
2
+ from string import ascii_lowercase, ascii_uppercase
3
+
4
+
5
+ class Caesar(CryptoTemplate):
6
+ def __init__(self, message, shifts):
7
+ super().__init__(message)
8
+ self.shifts = shifts
9
+ self.UPPER = list(ascii_uppercase)
10
+ self.LOWER = list(ascii_lowercase)
11
+
12
+ if not isinstance(shifts, int):
13
+ raise TypeError("The Shifts Must be An Integer Variable!")
14
+
15
+ def encode(self):
16
+ original = self.return_original_message()
17
+ encoded_chars = []
18
+ shift = self.shifts % 26
19
+
20
+ for char in original:
21
+ if char.isupper():
22
+ index = self.UPPER.index(char)
23
+ encoded_chars.append(self.UPPER[(index + shift) % 26])
24
+ elif char.islower():
25
+ index = self.LOWER.index(char)
26
+ encoded_chars.append(self.LOWER[(index + shift) % 26])
27
+ else:
28
+ encoded_chars.append(char)
29
+
30
+ return "".join(encoded_chars)
@@ -0,0 +1,11 @@
1
+ from .template import CryptoTemplate
2
+ import hashlib
3
+
4
+
5
+ class Hash(CryptoTemplate):
6
+ def __init__(self, message):
7
+ super().__init__(message)
8
+
9
+ def encode(self):
10
+ original = self.return_original_message()
11
+ return hashlib.sha256(original.encode('utf-8')).hexdigest()
@@ -0,0 +1,10 @@
1
+ from .template import CryptoTemplate
2
+
3
+
4
+ class Hex(CryptoTemplate):
5
+ def __init__(self, message):
6
+ super().__init__(message)
7
+
8
+ def encode(self):
9
+ original = self.return_original_message()
10
+ return original.encode('utf-8').hex()
@@ -0,0 +1,21 @@
1
+ from .template import CryptoTemplate
2
+
3
+
4
+ class Rot13(CryptoTemplate):
5
+ def __init__(self, message):
6
+ super().__init__(message)
7
+
8
+ def encode(self):
9
+ original = self.return_original_message()
10
+ resultado = ""
11
+ for caracter in original:
12
+
13
+ if 'a' <= caracter <= 'z':
14
+ resultado += chr((ord(caracter) - ord('a') + 13) % 26 + ord('a'))
15
+
16
+ elif 'A' <= caracter <= 'Z':
17
+ resultado += chr((ord(caracter) - ord('A') + 13) % 26 + ord('A'))
18
+
19
+ else:
20
+ resultado += caracter
21
+ return resultado
@@ -0,0 +1,18 @@
1
+ from abc import ABC, abstractmethod
2
+
3
+
4
+ class CryptoTemplate(ABC):
5
+ def __init__(self, message : str):
6
+ self.__message = message
7
+ if not isinstance(self.__message, str):
8
+ raise TypeError("The Attributes must be its types!")
9
+
10
+ @abstractmethod
11
+ def encode(self):
12
+ pass
13
+
14
+ def return_encoded_message(self):
15
+ return self.encode()
16
+
17
+ def return_original_message(self):
18
+ return self.__message
@@ -0,0 +1,39 @@
1
+ from .template import CryptoTemplate
2
+ from string import ascii_lowercase, ascii_uppercase
3
+
4
+
5
+ class Vigenere(CryptoTemplate):
6
+ def __init__(self, message, key):
7
+ super().__init__(message)
8
+ self.key : str = key
9
+ self.UPPER = list(ascii_uppercase)
10
+ self.LOWER = list(ascii_lowercase)
11
+
12
+ if not isinstance(key, str):
13
+ raise TypeError("The Shifts Must be An String Variable!")
14
+
15
+ def encode(self):
16
+ original = self.return_original_message()
17
+ resultado = []
18
+ self.key = self.key.upper()
19
+ key_idx = 0
20
+
21
+ for char in original:
22
+
23
+ if char.isalpha():
24
+
25
+ shift = ord(self.key[key_idx % len(self.key)]) - ord('A')
26
+
27
+ if char.isupper():
28
+ base = ord('A')
29
+ new_char = chr((ord(char) - base + shift) % 26 + base)
30
+ else:
31
+ base = ord('a')
32
+ new_char = chr((ord(char) - base + shift) % 26 + base)
33
+
34
+ resultado.append(new_char)
35
+ key_idx += 1
36
+ else:
37
+ resultado.append(char)
38
+
39
+ return ''.join(resultado)
@@ -0,0 +1,9 @@
1
+ [project]
2
+ name = "Cryptomania"
3
+ version = "0.1.0"
4
+ description = "A library to code and encode messages and strings!"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ dependencies = [
8
+ "termcolor>=3.3.0",
9
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+