Skip to content

A keyed permutation based substitution cipher which uses randomly generated substitute characters as a character mapping.

License

Notifications You must be signed in to change notification settings

MrSharkSpamBot/CadaverousCipher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 

Repository files navigation

Cadaverous Cipher

A keyed permutation based substitution cipher which uses randomly generated substitute characters as a character mapping.

Installation

Debian

$ sudo apt-get install python3 git
$ git clone https://github.com/MrSharkSpamBot/CadaverousCipher.git

Arch

$ sudo pacman -S python git
$ git clone https://github.com/MrSharkSpamBot/CadaverousCipher.git

Usage

>>> import string
>>> import secrets
>>> import CadaverousCipher
>>> dictionary = CadaverousCipher.generate_dictionary(string.printable, 5)
>>> dictionary
{1: {'0': '\U0005e09a', '1': '\U00065258', '2': '\U0005f326', '3': '\U00033a22', '4': '\U000b00c7', '5': '𭫲', '6': '\U000d367d', '7': '\U000369c2', '8': '\U0006d0c9', '9': '\U000552d6', 'a': '\U0009aa76', 'b': '\U000c9d1c', 'c': '\U000a30b7', 'd': '\U0010c289', 'e': '\U000d6bfd', 'f': '\U0008a9ae', 'g': '\U0004c72e', 'h': '\U000badcd', 'i': '\U000f29a4', 'j': '\U00067002', 'k': '\U000c1bfc', 'l': '\U0008ca60', 'm': '\U00087803', 'n': '\U0005a694', 'o': '\U000d8215', 'p': '\U0004b3d3', 'q': '\U00016691', 'r': '\U0006981f', 's': '\U0007b721', 't': '鈦', 'u': '\U00086436', 'v': '𦈶', 'w': '\U000e6de6', 'x': '\U0003b4b8', 'y': '\ue5c1', 'z': '𭹜', 'A': '\U000a0fa0', 'B': '\U0008596a', 'C': '\U000556e5', 'D': '\U00045afd', 'E': '\U00053326', 'F': '\U0008dc42', 'G': '\U0004e0c1', 'H': '\U0008635d', 'I': '\U0004490e', 'J': '\U00067226', 'K': '\U000cfc6c', 'L': '\U00103f5b', 'M': '\U000929f0', 'N': '\U0003bb6a', 'O': '\U00100de9', 'P': '\U00056d3e', 'Q': '𩏒', 'R': '\U00030952', 'S': '\U00046d84', 'T': '\U0003d88c', 'U': '\U0003a655', 'V': '𓄀', 'W':  '𘤹', 'X': '\U000486a0', 'Y': '\U000399ee', 'Z': '\U0008d74d', '!': 'ᮐ', '"': '直', '#': '\U000747b5', '$': '𗒶', '%': '\U0008a25b', '&': '\U000803b6', "'": '\U000ab04f', '(': '\U00093d77', ')': '\U0003190e', '*': '\U000c157d', '+': '\U000e966f', ',': '\U000f4127', '-': '\U00019f7b', '.': '\U000c77b6', '/': '\U000431c8', ':': '\U00089753', ';': '\U000be6ef', '<': '\U0009f6fa', '=': '\U000fbcbc', '>': '\U00075dbb', '?': '\U000f4107', '@': '\U000a7741', '[': '\U00062b10', '\\': '\U000472f7', ']': '\U00082fde', '^': '\U000fd277', '_': '\U0007caf4', '`': '\U00107e95', '{': '\U000aa57a', '|': '\U000d2c51', '}': '\U000898e7', '~': '\U0009f259', ' ': '\U000c6390', '\t': '\U00046749', '\n': '\U000daa57', '\r': '\U000c5a60', '\x0b': '\U00051cb3', '\x0c': '\U0009dd17'}, 2: {'0': '\U000dbbf2', '1': '\U0002faee', '2': '\U000351c6', '3': '\U0010d0df', '4': '\U0004172d', '5': '\U0004cd31', '6': '\U00068369', '7': '\U000a0d7b', '8': '𗋏', '9': '\U0009d39d', 'a': '\ueb6e', 'b': '\U00066def', 'c': '𨁳', 'd': '\U000c71b3', 'e': '\U000577d6', 'f': '\U0007b86b', 'g': '\U0001aa78', 'h': '\U00076da9', 'i': '\U0006fba7', 'j': '\U0003c7d8', 'k': '\U000c067a', 'l': 'ҁ', 'm': '\U000c71ad', 'n': '𨭼', 'o': '\U0006dccc', 'p': '\U000ea696', 'q': '\U000b0428', 'r': '\U00042824', 's': '\U0009c2fc', 't': '\U000e9e46', 'u': '\U0003de4e', 'v': '\U000b6f4a', 'w': '𐎂', 'x': '\U0005ffa7', 'y': '\U000d5345', 'z': '\U00034149', 'A': '\U000a470c', 'B': '\ U000ce47c', 'C': 'ꤩ', 'D': '\U000a4e1f', 'E': '\U000a3151', 'F': '\U0009adf8', 'G': '\U0003d894', 'H': '\U000ef072', 'I': '谸', 'J': '\U00010255', 'K': '\U000e93e4', 'L': '\U0007cedf', 'M': '\U000abf2a', 'N': '\U0006513e', 'O': '𣍞', 'P': '\U00031834', 'Q': '\U0010bbb2', 'R': 'ﯼ', 'S': '\U00090029', 'T': '\U000a93ea', 'U': '\U000f7a45', 'V': '\U000b5e7c', 'W': '\U00076850', 'X': '𤍍', 'Y': '\U00104511', 'Z': '\U000e600c', '!': 'ᆴ', '"': '\U000e0478', '#': '\uf197', '$': '\U0008486b', '%': '綠', '&': '缜', "'": '𪴾', '(': '\U000aee5d', ')': '𦖝', '*': '\U000d0fca', '+': '\U000b6713', ',': '\U0007d66b', '-': '\U000544b2', '.': '\U000646ac', '/': '\U001080bc', ':': '\U00105922', ';': '\U00092c7a', '<': '\U000ad1d2', '=': '\U0008f126', '>': '\U00066aa2', '?': '\U00071524', '@': '\U0003cc1d', '[': '\U000985a2', '\\': '𩤗', ']': '\U0005224d', '^': '\U0010033f', '_': '\U000cd7b0', '`': '\U0002f449', '{': '\U000c7c0a', '|': '\U0010666c', '}': '\U000c4683', '~': '\U001019ac', ' ': '\U000c75ce', '\t': '𗫩', '\n': '\U000d3ecc', '\r': '\U000b42f9', '\x0b': '\U00032c88', '\x0c': '\U0003eb64'}, 3: {'0': '\U000933aa', '1': '𬵑', '2': '\U00070df5', '3': '𧉿', '4': '\U000f3655', '5': '\U0004d231', '6': '\U00039abc', '7': '\U000ffe6e', '8': '\U000fdb77', '9': '\U000cefe0', 'a': '\U000482c2', 'b': '\U000560c9', 'c': '\U000738cf', 'd': '\U0003177c', 'e': '\U0003d421', 'f': '\U000869ab', 'g': '\U00102112', 'h': '\U000f6a4c', 'i': '\U0004fe64', 'j': '\U000f3ce6', 'k': '\U0001adcf', 'l': '\U000ea535', 'm': '\U0005794a', 'n': '\U000ddaef', 'o': '𗂥', 'p': '\U000746ef', 'q': '\U0005f7a4', 'r': '\U00107ade', 's': '\U000c0448', 't': '\U0006a53e', 'u': '\U000aa002', 'v': '\U000c8450', 'w': '\U000644eb', 'x': '\U0010f4ab', 'y': '\U000f7fe6', 'z': '\U00059fe7', 'A': '𧢄', 'B': '\U0005caa7', 'C': '\U000bcfd0', 'D': '\U00054b4a', 'E': '\U000f703d', 'F': '\U0007a458', 'G': '\U0001574e', 'H': '\U000b5b80', 'I': '\U00042b05', 'J': '\U000ce49e', 'K': '\U000d8da2', 'L': '\U000f4796', 'M': '\U000af5ac', 'N': '𤲿', 'O': '\U00063b36', 'P': '𪑭', 'Q': '侸', 'R': '�'', 'S': '\U000be725', 'T': '\U0010d262', 'U': '\U0006a99f', 'V': '\U00082096', 'W': '\U00034969', 'X': '\U00043fbd', 'Y': '\U000d41dd', 'Z': ' 𠍪', '!': '\U000e4b76', '"': '\U0010fcfd', '#': '𫬺', '$': '\U000da2a4', '%': '\U001090cd', '&': '\U000ef5e3', "'": '𫖫', '(': '痠', ')': '\U000a473f', '*': '\U00051c88', '+': '𦈺', ',': '\U00101f73', '-': '\U000b4f93', '.': '\U00038961', '/': '𩹿', ':': '\U000fd4f0', ';': '\U0001ca1a', '<': '\U000f7b2d', '=': '\U00076ec7', '>': '\U000a0f62', '?': '\U0005e122', '@': '𨏸', '[': '\U0001bb0c', '\\': '\U00081a41', ']': '\U0007a47c', '^': '\U00044b40', '_': '\U000690c8', '`': '\U00088bc5', '{': '\U0003005c', '|': '䓛', '}': '\uf567', '~': '\U000edeeb', ' ': '𢺌', '\t': '\uf15a', '\n': '\U0010edcd', '\r': '\U0009b113', '\x0b': '\U000af170', '\x0c': '\U000eb442'}, 4: {'0': '\U0010f7fc', '1': '\U0004c51a', '2': '\U000b03ba', '3': '\U000d7815', '4': '\U000bd9ee', '5': '\U0007e334', '6': '\U0010bb94', '7': '\U000dd30c', '8': '⛍', '9': '\U00072312', 'a': '\U000553a6', 'b': '\U000123ac', 'c': '\U000d2774', 'd': '\U000d97ff', 'e': '\U0008798a', 'f': '\U000ed052', 'g': '\U0001b67d', 'h': '\U000a429b', 'i': '\U00068018', 'j': '\U00072769', 'k': '\U000535de', 'l': '\U0005805f', 'm': '\U0001bff9', 'n': '\U00069b2f', 'o': '\U00031ec7', 'p': '\U000e03ef', 'q': '𭑰', 'r': '\U0001ebd0', 's': '\U00040b0b', 't': 'ﯳ', 'u': '\U000f6838', 'v': '\U0004caa0', 'w': '\U000bd98d', 'x': '\U0003fab9', 'y': '\U000f8060', 'z': '\U000a2746', 'A': '\U0008f85e', 'B': '\U000dcbf3', 'C': '\U000e1f6b', 'D': '\U00069bc6', 'E': '\U00030de7', 'F': '𧢴', 'G': '\U000e259f', 'H': '\U000c39ed', 'I': '\U000c7d57', 'J': '\U00073fd4', 'K': '\U00036145', 'L': '\U000b0294', 'M': '\U00042db9', 'N': '\U00030247', 'O': '\U0008406c', 'P': '\U000a31e8', 'Q': '𡊧', 'R': '\U000411fe', 'S': '\U000ccd67', 'T': '\U0010a3ba', 'U': '\U000f928f', 'V': '𡻠', 'W': '冀', 'X': '\U000a3377', 'Y': '𬏿', 'Z': '\U0003b21c', '!': '\U0008983b', '"': '\U001025c4', '#': '\U000f0340', '$': '\U000b893d', '%': '\U00077d46', '&': '\U0003f221', "'": '\U0006be19', '(': 'ఇ', ')': '\U000e8f3d', '*': '\U0004f7df', '+': '\U0010de72', ',': '\U0004d660', '-': '\U00080227', '.': '\U000946c7', '/': '\U0007185d', ':': '売', ';': '\U000eb7da', '<': '\U00060f2c', '=': '\U000b61d9', '>': '䏈', '?': '\U000ef926', '@': '\U00084ef5', '[': '\U0004b13d', '\\': '\U000fbdb0', ']': '\U000a0c09', '^': '\U00064e49', '_': '\U000a59a3', '`': '\U000bd7d2', '{': '\U0010a0c7', '|': '\U00079931', '}': '\U000c5322', '~': '\U000f3ac3', ' ': '\U000ad1b4', '\t': '\U0004c1d0', '\n': '\U00097a6b', '\r': '\udbb2', '\x0b': '쳨', '\x0c': '\U0006356e'}, 5: {'0': '\uf75b', '1': '\U00106f4d', '2': '𩜣', '3': '\U000e93c6', '4': '\U000afb8d', '5': '\U00063cc3', '6': '\U0005b712', '7': '\U000c7255', '8': '\ue228', '9': '\U00098318', 'a': '\U0005c3e1', 'b': '\U00039996', 'c': '\U00084efe', 'd': '\U000f5922', 'e': '\U000ffe44', 'f': '\U000593de', 'g': '\U00042b7f', 'h': '\U000e096a', 'i': '\U00033c85', 'j': '\U000dce37', 'k': '\U0006f891', 'l': '\U00074205', 'm': '\U000bd65a', 'n': '𤱪', 'o': '𬘝', 'p': '\U0006bcbc', 'q': '\U00018f2a', 'r': '\U000ccc90', 's': '\U0008beae', 't': '𡚐', 'u': '\U000d6fac', 'v': '䞘', 'w': '\U000db9d4', 'x': '\U00032c3b', 'y': '\U000c8c9f', 'z': '\U000bf397', 'A': '\U000687d3', 'B': '\U0006e386', 'C': '\U000984d7', 'D': '\U000a422d', 'E': '\U000b535b', 'F': '\U000541bd', 'G': '\U0003d02c', 'H': '\U000aed42', 'I': '\U000adc93', 'J': '\U0008ddc8', 'K': '\U00080b1a', 'L': '\U0003c557', 'M': '\U0010e656', 'N': '\U00037b8e', 'O': '\U00059a73', 'P': '\U0001c884', 'Q': '\U00056cb6', 'R': '\U0008a2ab', 'S': '\U000a8107', 'T': '\U000d7b9b', 'U': '\U00045ba3', 'V': '𭫮', 'W': '\U000bc23b', 'X': '\U00065f93', 'Y': '\U0004e77f', 'Z': '\U00054a09', '!': '\U0007265c', '"': '\U00053b90', '#': '\U000d3d8e', '$': '\U0008a68f', '%': '\U000ca6d5', '&': '\U00059087', "'": '\U00015b77', '(': '\U0005c274', ')': '\U0006ffe8', '*': '𮃷', '+': '\U000d5aa8', ',': '\U000ca9c1', '-': '\U000a8afe', '.': '\U00055746', '/': '\U0001f1df', ':': '\U000f76a3', ';': '\U000aa37c', '<': '\U000ad6e4', '=': '𤉉', '>': '\U00050f7d', '?': '\U0005720c', '@': '\U000fdcbd', '[': '\U000325d4', '\\': '\U000b0108', ']': '\U000b5206', '^': '\U0002ef5f', '_': '\U000c9a75', '`': '𦘙', '{': 'ઑ', '|': '\U0005ac03', '}': 'ਵ', '~': '\U000563e2', ' ': '\U000fa86a', '\t': '\U000a66f5', '\n': '\U0009938e', '\r': '\U0003285e', '\x0b': '\U000a801d', '\x0c': '\U000ab0f6'}}
>>> key = secrets.token_urlsafe()
>>> key
'D--eXx9YZuW1HWMz2vNt4A-eiTJrr2Mj9l49FFx3ATk'
>>> encrypted = CadaverousCipher.encrypt('This is the power of the CadaverousCipher...', dictionary, key)
>>> encrypted
'艱𢣷\U0006512f\U00046e7f\U000948d7\U000b74ecႡ\U000b1351\U00033379\U0005259d\U000be2c4\U00097ae0\U0001ca02𝣄\U00032c82\U000a8da1홞\U00060714땱\U0001c46d\U000162c9\U0004
573a\U00037e6c\x00\U0004519c𗹙ᛧ𨲒\U000367d6\U0005765b\U0004420d\U00013df8\U0002f6d1\U0009e7d9𣳟Џ𪗴\U0004f89e\U000add2f\U0004fe8b\U00037781\U000d4901\U000410e9\U00040773'
>>> decrypted = CadaverousCipher.decrypt(encrypted, dictionary, key)
>>> decrypted
'This is the power of the CadaverousCipher...'

About

A keyed permutation based substitution cipher which uses randomly generated substitute characters as a character mapping.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages