initial build

This commit is contained in:
2022-10-02 17:12:41 +02:00
parent ef8a139e71
commit d6467b2a8f
16 changed files with 632 additions and 0 deletions

0
services/__init__.py Normal file
View File

19
services/checksum.py Normal file
View File

@@ -0,0 +1,19 @@
import random
class IdChecksum:
@staticmethod
def generate():
while True:
init_num = random.randint(1, 9)
id = [random.randint(0, 9) for _ in range(9)]
id.insert(0, init_num)
if IdChecksum.is_valid(id):
return "".join(str(x) for x in id)
@staticmethod
def is_valid(checksum):
sum_digits = sum(checksum[:-1])
if sum_digits % 10 == checksum[-1]:
return True
else:
return False

25
services/encryption.py Normal file
View File

@@ -0,0 +1,25 @@
class Encryption:
@staticmethod
def vigenere(text: str, key: str, encrypt=True):
result = ''
for i in range(len(text)):
letter_n = ord(text[i])
key_n = ord(key[i % len(key)])
if encrypt:
value = (letter_n + key_n) % 1114112
else:
value = (letter_n - key_n) % 1114112
result += chr(value)
return result
@staticmethod
def encrypt(text: str, key: str):
return Encryption.vigenere(text=text, key=key, encrypt=True)
@staticmethod
def decrypt(text: str, key: str):
return Encryption.vigenere(text=text, key=key, encrypt=False)