added newline encoding logic
This commit is contained in:
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user