New Caesar

This commit is contained in:
Maxime Vorwerk
2024-06-17 12:24:09 +02:00
parent 2713b694ef
commit fecb37666a
3 changed files with 59 additions and 0 deletions

28
new_ceasar/new_caesar.py Executable file
View File

@@ -0,0 +1,28 @@
import string
LOWERCASE_OFFSET = ord("a")
ALPHABET = string.ascii_lowercase[:16]
def b16_encode(plain):
enc = ""
for c in plain:
binary = "{0:08b}".format(ord(c))
enc += ALPHABET[int(binary[:4], 2)]
enc += ALPHABET[int(binary[4:], 2)]
return enc
def shift(c, k):
t1 = ord(c) - LOWERCASE_OFFSET
t2 = ord(k) - LOWERCASE_OFFSET
return ALPHABET[(t1 + t2) % len(ALPHABET)]
flag = "redacted"
key = "redacted"
assert all([k in ALPHABET for k in key])
assert len(key) == 1
b16 = b16_encode(flag)
enc = ""
for i, c in enumerate(b16):
enc += shift(c, key[i % len(key)])
print(enc)

30
new_ceasar/sol.py Executable file
View File

@@ -0,0 +1,30 @@
#!/home/maxime/.pyvenv/bin/python3
import string
ALPHABET = string.ascii_lowercase[:16]
def b16_decode(enc):
dec = ''
assert len(enc) % 2 == 0
for i in range(0, len(enc), 2):
char = 0
msb = ord(enc[i]) - ord('a')
lsb = ord(enc[i+1]) - ord('a')
char += (msb << 4) + lsb
dec += chr(char)
return dec
def decode(c, k):
t1 = ord(c) - ord('a')
t2 = ord(k) - ord('a')
return ALPHABET[(t1 - t2) % len(ALPHABET)]
with open("string", 'r') as f:
text = f.read().strip()
keyset = ALPHABET
for key in keyset:
decrypted = ''
for char in text:
decrypted += decode(char, key)
print(b16_decode(decrypted))

1
new_ceasar/string Normal file
View File

@@ -0,0 +1 @@
dcebcmebecamcmanaedbacdaanafagapdaaoabaaafdbapdpaaapadanandcafaadbdaapdpandcac