additive_hash
This is a little easy-to-code cipher I made for encrypting text. There are various issues with it, but it’s always fun to have ones own secret code.
import hashlib
def additive_encrypt(data, key):
result = ""
h = hashlib.md5()
h.update(key.encode())
keyhash = str(h.hexdigest())
k_idx = 0
for byte in data:
n = byte+int(keyhash[k_idx],16)
if n > 255:
n = n - 255 #wrap around
result += chr(n)
if k_idx+1 < len(keyhash):
k_idx = 0
else:
k_idx += 1
return result
def additive_decrypt(data, key):
result = ""
h = hashlib.md5()
h.update(key.encode())
keyhash = str(h.hexdigest())
k_idx = 0
for byte in data:
n = byte-int(keyhash[k_idx],16)
if n < 0:
n = n + 255 #wrap around
result += chr(n)
if k_idx+1 < len(keyhash):
k_idx = 0
else:
k_idx += 1
return result
def test(file="test.txt",key="cats"):
f = open(file,"rb")
string = f.read()
f.close()
c = additive_encrypt(string,key)
print(c)
print(additive_decrypt(c.encode(),key))
def simple_decrypt(file,key):
f = open(file,"rb")
string = f.read()
f.close()
print(additive_decrypt(string,key))