initial build
This commit is contained in:
0
services/__init__.py
Normal file
0
services/__init__.py
Normal file
19
services/checksum.py
Normal file
19
services/checksum.py
Normal 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
25
services/encryption.py
Normal 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)
|
Reference in New Issue
Block a user