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. 1. The text is converted into lowercase.
2. Every occurrence of the `0` (zero) character is replaced with the letter `o`. 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. 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 Prior to step 4, the user may apply additional conversions to preserve special
characters, such as replacing `%` with `cto`, `$` with `dlr` and so on. 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 # message/keystring preparation step: replace 0 with o then filter out all invalid chars
def filtermsg(msg:str): 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 # grid keying algorithm
def keygrid(key:str): def keygrid(key:str):
@@ -122,7 +122,7 @@ def ipfdecrypt(enc:str, key:str):
x2 += pfsize x2 += pfsize
msg.append(getgridchar(kg, x2, y2)) msg.append(getgridchar(kg, x2, y2))
# finalize the decrypted message # finalize the decrypted message
return ''.join(msg).strip() return ''.join(msg).replace(' ', '\n').strip()
# entrypoint parameters: [mode] [keystring] # entrypoint parameters: [mode] [keystring]
# modes: e - encrypt with 6x6 IPF, d - decrypt with 6x6 IPF # modes: e - encrypt with 6x6 IPF, d - decrypt with 6x6 IPF