From 99e501d4005c15d051d5f11bdfa39a622b7eae18 Mon Sep 17 00:00:00 2001 From: Het Joshi Date: Fri, 7 Oct 2022 18:15:19 +0530 Subject: [PATCH 1/4] blowfish cipher added --- README.md | 13 +- dist/kryptor-0.4.0-py3-none-any.whl | Bin 0 -> 43212 bytes dist/kryptor-0.4.0.tar.gz | Bin 0 -> 53950 bytes pyproject.toml | 2 +- src/kryptor.egg-info/PKG-INFO | 15 +- src/kryptor.egg-info/SOURCES.txt | 1 + src/kryptor/__init__.py | 12 - src/kryptor/blowfish_cipher.py | 350 ++++++++++++++++++++++++++++ 8 files changed, 377 insertions(+), 16 deletions(-) create mode 100644 dist/kryptor-0.4.0-py3-none-any.whl create mode 100644 dist/kryptor-0.4.0.tar.gz create mode 100644 src/kryptor/blowfish_cipher.py diff --git a/README.md b/README.md index 542b692..b8b676b 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ obj = RailFence() print(obj.encrypt('I am Dencoder', 3)) # returns iedadnoemcr print(obj.decrypt('iedadnoemcr', 3)) # returns iamdencoder ``` -### VERNAAM CIPHER +### VERNAM CIPHER --- @@ -106,4 +106,15 @@ from kryptor.vernam_cipher import VernamCipher obj = VernamCipher() print(obj.encrypt("I am Dencoder", "Python Coder")) # returns xyfksaecgii print(obj.decrypt("xyfksaecgii", "Python Coder")) # returns iamdencoder +``` +# BLOWFISH CIPHER + +--- + +```python +from kryptor.blowfish_cipher import BlowfishCipher + +obj = BlowfishCipher() +print(obj.encrypt(1684)) # returns 8301200985422371632 +print(obj.decrypt(8301200985422371632)) # returns 1684 ``` \ No newline at end of file diff --git a/dist/kryptor-0.4.0-py3-none-any.whl b/dist/kryptor-0.4.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..0506b050a93da2d311d074eec8f74a5782178705 GIT binary patch literal 43212 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 z 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 JIq#2G{|^G`Sx^7~ literal 0 HcmV?d00001 diff --git a/dist/kryptor-0.4.0.tar.gz b/dist/kryptor-0.4.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..33c8181e1ed90060c52f2f3b86d8a9eb7d4f9baf GIT binary patch literal 53950 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%0A>o3f3ni_oLW}Z8F45?( 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%0DWz*>M>DwC*%fLs; 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 literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index 77adfba..ce8e3ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "kryptor" -version = "0.3.0" +version = "0.4.0" authors = [ { name="Het Joshi (DENCODER)", email="hetcjoshi1684@gmail.com" }, ] diff --git a/src/kryptor.egg-info/PKG-INFO b/src/kryptor.egg-info/PKG-INFO index 0acf27a..e25f09f 100644 --- a/src/kryptor.egg-info/PKG-INFO +++ b/src/kryptor.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: kryptor -Version: 0.3.0 +Version: 0.4.0 Summary: Encrypt and Decrypt data with famous cryptography techniques Author-email: "Het Joshi (DENCODER)" License: GNU GENERAL PUBLIC LICENSE @@ -785,7 +785,7 @@ obj = RailFence() print(obj.encrypt('I am Dencoder', 3)) # returns iedadnoemcr print(obj.decrypt('iedadnoemcr', 3)) # returns iamdencoder ``` -### VERNAAM CIPHER +### VERNAM CIPHER --- @@ -796,3 +796,14 @@ obj = VernamCipher() print(obj.encrypt("I am Dencoder", "Python Coder")) # returns xyfksaecgii print(obj.decrypt("xyfksaecgii", "Python Coder")) # returns iamdencoder ``` +# BLOWFISH CIPHER + +--- + +```python +from kryptor.blowfish_cipher import BlowfishCipher + +obj = BlowfishCipher() +print(obj.encrypt(1684)) # returns 8301200985422371632 +print(obj.decrypt(8301200985422371632)) # returns 1684 +``` diff --git a/src/kryptor.egg-info/SOURCES.txt b/src/kryptor.egg-info/SOURCES.txt index 9d193be..8bea564 100644 --- a/src/kryptor.egg-info/SOURCES.txt +++ b/src/kryptor.egg-info/SOURCES.txt @@ -3,6 +3,7 @@ README.md pyproject.toml src/kryptor/__init__.py src/kryptor/audio_steganography.py +src/kryptor/blowfish_cipher.py src/kryptor/caesar_cipher.py src/kryptor/hill_cipher.py src/kryptor/img_steganography.py diff --git a/src/kryptor/__init__.py b/src/kryptor/__init__.py index 0228f7f..e69de29 100644 --- a/src/kryptor/__init__.py +++ b/src/kryptor/__init__.py @@ -1,12 +0,0 @@ -from audio_steganography import AudioSteganography -from img_steganography import ImgSteganography -from caesar_cipher import CaesarCipher -from vigenere_cipher import VigenereCipher -from hill_cipher import HillCipher -from morse import Morse -from rail_fence import RailFence -from playfair_cipher import PlayfairCipher -from vernam_cipher import VernamCipher -from affine_cipher import AffineCipher -from autokey_cipher import AutokeyCipher -from columnar_transposition import ColumnarTransposition diff --git a/src/kryptor/blowfish_cipher.py b/src/kryptor/blowfish_cipher.py new file mode 100644 index 0000000..93fcffd --- /dev/null +++ b/src/kryptor/blowfish_cipher.py @@ -0,0 +1,350 @@ +# Date : 07/10/22 5:45 pm +# Author : dencoder (hetcjoshi1684@gmail.com) +# GitHub : (https://github.com/D-ENCODER) +# Twitter : (https://twitter.com/Hetjoshi1684) +# Version : 1.0.0 + +class BlowfishCipher: + def __init__(self): + self._p = [ + 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, + 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89, + 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, + 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, + 0x9216D5D9, 0x8979FB1B + ] + + self._s = [ + [ + 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, + 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, + 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, + 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, + 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, + 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, + 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, + 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, + 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, + 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, + 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, + 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, + 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, + 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, + 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, + 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, + 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, + 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, + 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, + 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, + 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, + 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, + 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, + 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, + 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, + 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, + 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, + 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, + 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, + 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, + 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, + 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, + 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, + 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, + 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, + 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, + 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, + 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, + 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, + 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, + 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, + 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, + 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, + 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, + 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, + 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, + 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, + 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, + 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, + 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, + 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, + 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, + 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, + 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, + 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, + 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, + 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, + 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, + 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, + 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, + 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, + 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, + 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, + 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A + ], + [ + 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, + 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, + 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, + 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, + 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, + 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, + 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, + 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, + 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, + 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, + 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, + 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, + 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, + 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, + 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, + 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, + 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, + 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, + 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, + 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, + 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, + 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, + 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, + 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, + 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, + 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, + 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, + 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, + 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, + 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, + 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, + 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, + 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, + 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, + 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, + 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, + 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, + 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, + 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, + 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, + 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, + 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, + 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, + 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, + 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, + 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, + 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, + 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, + 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, + 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, + 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, + 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, + 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, + 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, + 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, + 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, + 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, + 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, + 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, + 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, + 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, + 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, + 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, + 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 + ], + [ + 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, + 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, + 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, + 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, + 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, + 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, + 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, + 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, + 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, + 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, + 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, + 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, + 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, + 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, + 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, + 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, + 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, + 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, + 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, + 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, + 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, + 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, + 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, + 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, + 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, + 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, + 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, + 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, + 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, + 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, + 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, + 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, + 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, + 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, + 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, + 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, + 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, + 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, + 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, + 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, + 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, + 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, + 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, + 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, + 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, + 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, + 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, + 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, + 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, + 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, + 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, + 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, + 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, + 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, + 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, + 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, + 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, + 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, + 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, + 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, + 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, + 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, + 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, + 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 + ], + [ + 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, + 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, + 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, + 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, + 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, + 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, + 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, + 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, + 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, + 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, + 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, + 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, + 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, + 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, + 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, + 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, + 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, + 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, + 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, + 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, + 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, + 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, + 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, + 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, + 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, + 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, + 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, + 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, + 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, + 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, + 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, + 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, + 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, + 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, + 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, + 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, + 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, + 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, + 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, + 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, + 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, + 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, + 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, + 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, + 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, + 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, + 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, + 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, + 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, + 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, + 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, + 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, + 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, + 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, + 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, + 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, + 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, + 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, + 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, + 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, + 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, + 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, + 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, + 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 + ] + ] + + self._key = [0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, + 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, + 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, + 0x193602A5, 0x75094C29] + + self._p_new = self._p.copy() + + def _swap(self, a, b): + temp = a + a = b + b = temp + return a, b + + def _driver(self): + for i in range(0, 18): + self._p[i] = self._p[i] ^ self._key[i % 14] + k = 0 + data = 0 + for i in range(0, 9): + temp = self._encryption(data) + self._p[k] = temp >> 32 + k += 1 + self._p[k] = temp & 0xffffffff + k += 1 + data = temp + + def encrypt(self, data): + self._driver() + return self._encryption(data) + + def decrypt(self, data): + return self._decryption(data) + + def _encryption(self, data): + L = data >> 32 + R = data & 0xffffffff + for i in range(0, 16): + L = self._p[i] ^ L + L1 = self._func(L) + R = R ^ self._func(L1) + L, R = self._swap(L, R) + L, R = self._swap(L, R) + L = L ^ self._p[17] + R = R ^ self._p[16] + encrypted = (L << 32) ^ R + return encrypted + + def _func(self, L): + temp = self._s[0][L >> 24] + temp = (temp + self._s[1][L >> 16 & 0xff]) % 2 ** 32 + temp = temp ^ self._s[2][L >> 8 & 0xff] + temp = (temp + self._s[3][L & 0xff]) % 2 ** 32 + return temp + + def _decryption(self, data): + L = data >> 32 + R = data & 0xffffffff + for i in range(17, 1, -1): + L = self._p[i] ^ L + L1 = self._func(L) + R = R ^ self._func(L1) + L, R = self._swap(L, R) + L, R = self._swap(L, R) + L = L ^ self._p[0] + R = R ^ self._p[1] + decrypted_data1 = (L << 32) ^ R + return decrypted_data1 From 28c11afb41d80f258585a8bfbd50d7ea5f2614d6 Mon Sep 17 00:00:00 2001 From: Het Joshi Date: Fri, 7 Oct 2022 18:16:54 +0530 Subject: [PATCH 2/4] minor changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b8b676b..0caeddf 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ obj = VernamCipher() print(obj.encrypt("I am Dencoder", "Python Coder")) # returns xyfksaecgii print(obj.decrypt("xyfksaecgii", "Python Coder")) # returns iamdencoder ``` -# BLOWFISH CIPHER +### BLOWFISH CIPHER --- From ced084fe5023d976a86850f5b30c44c70b01e9d6 Mon Sep 17 00:00:00 2001 From: Mohammed-Shoaib01 <65510889+Mohammed-Shoaib01@users.noreply.github.com> Date: Wed, 5 Oct 2022 20:19:41 +0530 Subject: [PATCH 3/4] Create CODE_OF_CONDUCT.md Hey, Couldn't find the Code of Conduct on this repo, hope this helps! --- CODE_OF_CONDUCT.md | 181 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..9402bce --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,181 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our + +community a harassment-free experience for everyone, regardless of age, body + +size, visible or invisible disability, ethnicity, sex characteristics, gender + +identity and expression, level of experience, education, socio-economic status, + +nationality, personal appearance, race, religion, or sexual identity + +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, + +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our + +community include: + +* Demonstrating empathy and kindness toward other people + +* Being respectful of differing opinions, viewpoints, and experiences + +* Giving and gracefully accepting constructive feedback + +* Accepting responsibility and apologizing to those affected by our mistakes, + + and learning from the experience + +* Focusing on what is best not just for us as individuals, but for the + + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + + advances of any kind + +* Trolling, insulting or derogatory comments, and personal or political attacks + +* Public or private harassment + +* Publishing others' private information, such as a physical or email + + address, without their explicit permission + +* Other conduct which could reasonably be considered inappropriate in a + + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of + +acceptable behavior and will take appropriate and fair corrective action in + +response to any behavior that they deem inappropriate, threatening, offensive, + +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject + +comments, commits, code, wiki edits, issues, and other contributions that are + +not aligned to this Code of Conduct, and will communicate reasons for moderation + +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when + +an individual is officially representing the community in public spaces. + +Examples of representing our community include using an official e-mail address, + +posting via an official social media account, or acting as an appointed + +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be + +reported to the community leaders responsible for enforcement. + +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the + +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining + +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed + +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing + +clarity around the nature of the violation and an explanation of why the + +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series + +of actions. + +**Consequence**: A warning with consequences for continued behavior. No + +interaction with the people involved, including unsolicited interaction with + +those enforcing the Code of Conduct, for a specified period of time. This + +includes avoiding interactions in community spaces as well as external channels + +like social media. Violating these terms may lead to a temporary or + +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including + +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public + +communication with the community for a specified period of time. No public or + +private interaction with the people involved, including unsolicited interaction + +with those enforcing the Code of Conduct, is allowed during this period. + +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community + +standards, including sustained inappropriate behavior, harassment of an + +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within + +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], + +version 2.0, available at + +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at + +https://www.contributor-covenant.org/faq. Translations are available at + +https://www.contributor-covenant.org/translations. From c711626f27b2b64e205f09c3a1a8f053db454f50 Mon Sep 17 00:00:00 2001 From: Het Joshi Date: Fri, 7 Oct 2022 18:28:57 +0530 Subject: [PATCH 4/4] code of conduct changed --- CODE_OF_CONDUCT.md | 194 ++++++--------------------------------------- 1 file changed, 24 insertions(+), 170 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 9402bce..c983fc8 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,181 +1,35 @@ -# Contributor Covenant Code of Conduct +# Code of Conduct -## Our Pledge +All participants of KRYPTOR are expected to abide by our Code of Conduct, both online and during in-person events that are hosted and/or associated with KRYPTOR. -We as members, contributors, and leaders pledge to make participation in our +## The Pledge -community a harassment-free experience for everyone, regardless of age, body +In the interest of fostering an open and welcoming environment, we pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. -size, visible or invisible disability, ethnicity, sex characteristics, gender +## The Standards -identity and expression, level of experience, education, socio-economic status, +Examples of behaviour that contributes to creating a positive environment include: +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Referring to people by their preferred pronouns and using gender-neutral pronouns when uncertain -nationality, personal appearance, race, religion, or sexual identity +Examples of unacceptable behaviour by participants include: -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, - -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our - -community include: - -* Demonstrating empathy and kindness toward other people - -* Being respectful of differing opinions, viewpoints, and experiences - -* Giving and gracefully accepting constructive feedback - -* Accepting responsibility and apologizing to those affected by our mistakes, - - and learning from the experience - -* Focusing on what is best not just for us as individuals, but for the - - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - - advances of any kind - -* Trolling, insulting or derogatory comments, and personal or political attacks - -* Public or private harassment - -* Publishing others' private information, such as a physical or email - - address, without their explicit permission - -* Other conduct which could reasonably be considered inappropriate in a - - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of - -acceptable behavior and will take appropriate and fair corrective action in - -response to any behavior that they deem inappropriate, threatening, offensive, - -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject - -comments, commits, code, wiki edits, issues, and other contributions that are - -not aligned to this Code of Conduct, and will communicate reasons for moderation - -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when - -an individual is officially representing the community in public spaces. - -Examples of representing our community include using an official e-mail address, - -posting via an official social media account, or acting as an appointed - -representative at an online or offline event. +- Trolling, insulting/derogatory comments, public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission +- Not being respectful to reasonable communication boundaries, such as 'leave me alone,' 'go away,' or 'I’m not discussing this with you.' +- The usage of sexualised language or imagery and unwelcome sexual attention or advances +- Swearing, usage of strong or disturbing language +- Demonstrating the graphics or any other content you know may be considered disturbing +- Starting and/or participating in arguments related to politics +- Assuming or promoting any kind of inequality including but not limited to: age, body size, disability, ethnicity, gender identity and expression, nationality and race, personal appearance, religion, or sexual identity and orientation +- Drug promotion of any kind +- Attacking personal tastes +- Other conduct which you know could reasonably be considered inappropriate in a professional setting. ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be - -reported to the community leaders responsible for enforcement. - -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the - -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining - -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed - -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing - -clarity around the nature of the violation and an explanation of why the - -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series - -of actions. - -**Consequence**: A warning with consequences for continued behavior. No - -interaction with the people involved, including unsolicited interaction with - -those enforcing the Code of Conduct, for a specified period of time. This - -includes avoiding interactions in community spaces as well as external channels - -like social media. Violating these terms may lead to a temporary or - -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including - -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public - -communication with the community for a specified period of time. No public or - -private interaction with the people involved, including unsolicited interaction - -with those enforcing the Code of Conduct, is allowed during this period. - -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community - -standards, including sustained inappropriate behavior, harassment of an - -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within - -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], - -version 2.0, available at - -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at - -https://www.contributor-covenant.org/faq. Translations are available at +Violations of the Code of Conduct may be reported by sending an email to [hetcjoshi1684@gmail.com](mailto:hetcjoshi1684@gmail.com). All reports will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Further details of specific enforcement policies may be posted separately. -https://www.contributor-covenant.org/translations. +We hold the right and responsibility to remove comments or other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any members for other behaviours that they deem inappropriate, threatening, offensive, or harmful. \ No newline at end of file