New Caesar
This commit is contained in:
28
new_ceasar/new_caesar.py
Executable file
28
new_ceasar/new_caesar.py
Executable 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
30
new_ceasar/sol.py
Executable 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
1
new_ceasar/string
Normal file
@@ -0,0 +1 @@
|
|||||||
|
dcebcmebecamcmanaedbacdaanafagapdaaoabaaafdbapdpaaapadanandcafaadbdaapdpandcac
|
||||||
Reference in New Issue
Block a user