Возможно ли такое, что с помощью данного алгоритма можно получить два одинаковых ключа, но с разными данными? И если да, то примерно какая вероятность такого? И возможно ли взломать ключ?
import random
def _gen_salt(msg):
salt = 0
for x in msg:
salt = ord(x) ** len(msg)
salt = salt + salt - len(msg) * salt
return salt
def _crypt(msg, bits=64):
# Stage 1 string
enc = ""
# Stage 2 string
val = ""
# Salt
salt = _gen_salt(msg)
# Key
key = random.randint(12, 1247)
# Stage 1
for c in msg:
val = 500 - ord(c)
# IDK how it works, just random operators
val = str(hex(int(
salt * val + val - key * key ^ key ** val * val
)))
enc += val[3:][:128] + "-"
# Stage 2
for x in enc.split("-"):
if x:
val += str(hex(int(
int(x, 16) * salt * key % key
)))
# Parse encrypted string
val = val.replace("0", "").replace("x", "")
val = val[::2] + val
val = val[:128] + val[:512:salt - key]
val = val[::3] + val[::2] + val
# Fix size
if len(val) < bits:
pos = 1
while len(val) < bits:
if len(val) >= bits:
break
val += val[::pos]
pos += 1
if pos > 100:
pos = 1
# Return encrypted string
return val[:bits] + val[:bits:2]
def crypt(msg, bits=128):
# Encrypt string and fix string length, if possible
enc = _crypt(msg, bits).replace("-", "")[:bits]
return enc, len(enc)
P.S. Прошу не орать о моем коде.