added newline encoding logic

This commit is contained in:
Luxferre
2025-03-04 19:15:06 +02:00
parent 2fd14fc10c
commit 7f8c63ebd9
2 changed files with 4 additions and 3 deletions
+2 -1
View File
@@ -32,7 +32,8 @@ the following rules:
1. The text is converted into lowercase.
2. Every occurrence of the `0` (zero) character is replaced with the letter `o`.
3. Every occurrence of either of these characters `_-` is replaced with a space.
4. Any other characters not belonging to the alphabet are deleted from the text.
4. Optionally, every newline is replaced with three consequent spaces.
5. Any other characters not belonging to the alphabet are deleted from the text.
Prior to step 4, the user may apply additional conversions to preserve special
characters, such as replacing `%` with `cto`, `$` with `dlr` and so on.
+2 -2
View File
@@ -20,7 +20,7 @@ pfsize = int(math.sqrt(len(pfgrid)))
# message/keystring preparation step: replace 0 with o then filter out all invalid chars
def filtermsg(msg:str):
return ''.join(list(filter(lambda i: i in pfgrid, msg.lower().replace('0', 'o'))))
return ''.join(list(filter(lambda i: i in pfgrid, msg.lower().replace('0', 'o').replace('\n', ' '))))
# grid keying algorithm
def keygrid(key:str):
@@ -122,7 +122,7 @@ def ipfdecrypt(enc:str, key:str):
x2 += pfsize
msg.append(getgridchar(kg, x2, y2))
# finalize the decrypted message
return ''.join(msg).strip()
return ''.join(msg).replace(' ', '\n').strip()
# entrypoint parameters: [mode] [keystring]
# modes: e - encrypt with 6x6 IPF, d - decrypt with 6x6 IPF