From ac49242e77149b551f06b541be1d8c125901631b Mon Sep 17 00:00:00 2001 From: hg0428 Date: Sun, 19 Nov 2023 18:02:50 +0000 Subject: [PATCH] Major update --- PCSS/__init__.py | 2 +- PCSS/__pycache__/__init__.cpython-310.pyc | Bin 3269 -> 3259 bytes PCSS/__pycache__/hash.cpython-310.pyc | Bin 1129 -> 2318 bytes PCSS/hash.py | 62 ++++++++++-- .../PKG-INFO | 74 -------------- .../SOURCES.txt | 12 --- README.md | 49 ++++++---- ...Projxon Cyber Security System-0.0.3.tar.gz | Bin 3270 -> 0 bytes ...Projxon Cyber Security System-0.0.4.tar.gz | Bin 3296 -> 0 bytes ...Projxon Cyber Security System-0.0.5.tar.gz | Bin 3289 -> 0 bytes ...Projxon Cyber Security System-0.1.1.tar.gz | Bin 3365 -> 0 bytes dist/Projxon Cyber Security System-0.1.tar.gz | Bin 3267 -> 0 bytes ...ber_Security_System-0.0.3-py3-none-any.whl | Bin 4016 -> 0 bytes ...ber_Security_System-0.0.4-py3-none-any.whl | Bin 4044 -> 0 bytes ...ber_Security_System-0.0.5-py3-none-any.whl | Bin 4472 -> 0 bytes ...Cyber_Security_System-0.1-py3-none-any.whl | Bin 4449 -> 0 bytes ...ber_Security_System-0.1.1-py3-none-any.whl | Bin 5037 -> 0 bytes ...ber_security_system-0.1.1-py3-none-any.whl | Bin 0 -> 5236 bytes ...projxon_cyber_security_system-0.1.1.tar.gz | Bin 0 -> 3580 bytes main.py | 43 ++++----- output.txt | 9 ++ .../PKG-INFO | 90 ++++++++++++++++++ .../SOURCES.txt | 12 +++ .../dependency_links.txt | 0 .../requires.txt | 0 .../top_level.txt | 0 setup.py | 49 +++++----- 27 files changed, 247 insertions(+), 155 deletions(-) delete mode 100644 Projxon_Cyber_Security_System.egg-info/PKG-INFO delete mode 100644 Projxon_Cyber_Security_System.egg-info/SOURCES.txt delete mode 100644 dist/Projxon Cyber Security System-0.0.3.tar.gz delete mode 100644 dist/Projxon Cyber Security System-0.0.4.tar.gz delete mode 100644 dist/Projxon Cyber Security System-0.0.5.tar.gz delete mode 100644 dist/Projxon Cyber Security System-0.1.1.tar.gz delete mode 100644 dist/Projxon Cyber Security System-0.1.tar.gz delete mode 100644 dist/Projxon_Cyber_Security_System-0.0.3-py3-none-any.whl delete mode 100644 dist/Projxon_Cyber_Security_System-0.0.4-py3-none-any.whl delete mode 100644 dist/Projxon_Cyber_Security_System-0.0.5-py3-none-any.whl delete mode 100644 dist/Projxon_Cyber_Security_System-0.1-py3-none-any.whl delete mode 100644 dist/Projxon_Cyber_Security_System-0.1.1-py3-none-any.whl create mode 100644 dist/projxon_cyber_security_system-0.1.1-py3-none-any.whl create mode 100644 dist/projxon_cyber_security_system-0.1.1.tar.gz create mode 100644 output.txt create mode 100644 projxon_cyber_security_system.egg-info/PKG-INFO create mode 100644 projxon_cyber_security_system.egg-info/SOURCES.txt rename {Projxon_Cyber_Security_System.egg-info => projxon_cyber_security_system.egg-info}/dependency_links.txt (100%) rename {Projxon_Cyber_Security_System.egg-info => projxon_cyber_security_system.egg-info}/requires.txt (100%) rename {Projxon_Cyber_Security_System.egg-info => projxon_cyber_security_system.egg-info}/top_level.txt (100%) diff --git a/PCSS/__init__.py b/PCSS/__init__.py index 2701c8d..4a74e33 100644 --- a/PCSS/__init__.py +++ b/PCSS/__init__.py @@ -8,7 +8,7 @@ makeid = lambda: hashlib.sha256( str( - random.randint(-999999999999999999999, 999999999999999999999 + time.time()) + random.randint(-2**512, 2**512 + time.time()) ).encode()).hexdigest() + hashlib.sha512(str(uuid1()).encode()).hexdigest( ) + str(uuid4()) + str(uuid5(uuid4(), str(uuid1()))) diff --git a/PCSS/__pycache__/__init__.cpython-310.pyc b/PCSS/__pycache__/__init__.cpython-310.pyc index 7655daed543b3adafce38e6810688b28c5e1cacf..4bb7195f53b116c6aa44cf1aa515a987cb7885f7 100644 GIT binary patch delta 406 zcmX>qxm%JqpO=@50SJzJM5Rh@moo-) zy<`Ha$YcPLlO>p9*!Y0FBEHF0OyOcOj7WNMQ1Frd(Y? zkSZatQaHg6WZhy(%go6U0J4f%fP@4i3uBSk=0@gEOiV=_lS|nw*g(!J;+?#i&5BWU z@;f#~b+A$5AW;brAqOJlfy6DwiXw<(KqCB`&Di;v1tdXiDG(tIA~+_8aH+tItm85? z6$OcE0trpFB0Ufri@`-YAPFR+CqLmjDFAi`vfy6sFm6teN^TIrGg*#DSx*ea1p7b{ W#L@*3`XIs>L?Cp7S^SgpdBOl8_eB=~ delta 379 zcmdljc~p`&pO=@50SMOQMW&i>ALvSbaF~zX)0)>irCl@e5m8t%bz0t z$#kHg^ta%jGWj4oJ&` z6Q9@M#OGIeL)7@3sPlPP3!>I_`6Yh&z-l%4l^xPtItHuch?Z_UQlXULs7XsZO4Xfq zh+N(e?|gi($x0{h54+u1lx8jjKQ`f3hvD6m2M=)Fhn24bDX1a^nbH+9VTu-PN+(8P z%owMKl#;?Ibg<9aCP;xJY+F*e)ig>Y7O6CV2kSzGaojXZ)(*jNG!`v)5b|B*N&~nf zBIiKzuTM7mSt2&%FinNrcqp?c`&qhnf7BLoZAWy5GE$?pol&ktvhnc#&dx?Z%=_zu zQF#f~orb;}i>`tiksM1_XRhJXx?xhe0NW0%vj^S7XupD$zXL>(DVflMJRpyq2`lIf zBE~rPtb#&xbi2t;ViNmGq`Yagyi>DzYd#UOC(a#_HBhM|tH?ZT%S!0X*?bXgyFhH} z8g&Y8UWUzUMZp4Du+ZH+0P=#opj{{dX9un#+)(r-l;|a$8V}$f95uH)SccOF6<|WH zz{+m`=|Qy~HzrWqmr&sXt}c`3Y?Xit_B-2SJC)nbDrZNmWb3y|8XYkmQt7wjtn*aY z??Pn$W*p_JlO=;K%w-i6VQlf0{c3z8AH*M zv!m0y4i_OGWC?(7oxxPL&Dqb?WDZ-m#T481+XW~-0? z@PpuMfTG9)OnETOqqG;Oz6cPY$Rk>VFz#gl;eN6X^54PRsxm>=J(CThJjjOw=oP_( zFxTfNQlab(MUtu@OnDHgAQ|Q=Xp4YH&!RkP$0BHtw7hQ40EbKP;g9{O(+{}lhQnBa zx-7WcMC-cO#vgp6TjNYs2wbe90q6ps&YOH}4OMsT(__Tc8^FQ=qJf1-*1)nWU`^=- zC`rU1Ob-+)>FyEL{dkTZxdJcl!OBr^k&IXLZ2KRW9HT(_rXL7_9M^k5emMa+Co=+N zr!xl41K>WSkD$zZj041*#@PJnv;B$0iLebL+wNvE2~}yphodxAcI&ppz$zy-2sQq^ z&7Mfb{y=Vhf#z^_v7b%C==E3Q<^OnnDk)K_d8PCph4D~)DP<Y3-y5FjaWS~YTdn-!0*q2w)f~C)@w7iSj zbXrVQg1OJ{0;yXrwdn$7%!hxN>wlZJ3;QK{6R1yJ`1$mjrgh-z)O{uK;x-Ijoh&Bb zLfx95)5&TzPQNwlLlwn3QKf@s_TbJ d>+5bN86U=C3)?-%`*oPDb#&Ws8@?Af{{rMS4@>|6 literal 1129 zcmZWo&2HO95T0FfpHZ>5pFmfo0Hay5mi~a*lJ@MX zkX#Z-AP04ieFN#}d!J^nJ?RyC>WqY@L9)aQXF0Po-+Vi)_V?RBYx43(b6*1d&6_t@ zOq=gW>{p~TXfcHX1|Zm$Q&Gr)B)hFc6X?iXb|aEAJRJ;ItjPJC&S!j zh}j|)UfD_Z<=5YAC=vKjXD;(36xIl+4yn&_A(K7g+-i_3XJm7*_EXDRq;G#NU``Lq^WD_<~Ey-4m zs-s$+K@(ke9MsaOnsU{Wa>Ylmlpk@nxQM+Z;`b=ZT;&vmj&bW69d z=?m9d3ufZ%Dw?@*=h29|e!aL)Me-quJtlPyH9TuK;s$C_3k~<+71jJxUdlevxCtrb z7H*}NCl9^IiP+ebqe>f%cgXe6x7|rqm@dxB(qQ)~R?p{E*?F=U8tnAVXok64bovYH zOwoP%q~GsOGCMiBSon5tnp-!jii=a`+cL0YxH{VUd(&!^P3`H)|3S!IAdk;G{V>Kp zi9IB>?MF4j(abExt`BUH1Gz#fai3mZ{Je#~Qy;MRE-4P%0y%^Ym-Fw|V(u)l_!b}8552fC|EsfoihxC(!JJa0B!{wxi=8dq3k&IftveCVo&U*I0O z-ooQsy>nBV`30UbJj*@G7oWh@y|)PZFDh*z&#P~Zu_}fOXRKGdoAME6<+ihF-Gb`1{jfLk4P!;zPK;$l1@Zhe7x0r;!xmc str: +def pad_bitarray_left(ba, size=4): + # Calculate the number of bits to pad + pad_size = size - len(ba) + + # Create a new bitarray for padding + pad = bitarray(pad_size) + pad.setall(0) + + # Prepend the padding to the original bitarray + ba[:0] = pad + return ba + + +def merge_bitarrays(*bitarrays): + merged_bitarray = bitarray() + + # Extend the result bitarray with each bitarray in the list + for ba in bitarrays: + merged_bitarray.extend(ba) + return merged_bitarray + + +def split_bitarray(ba, block_size=4): + return [ + pad_bitarray_left(ba[i:i + block_size], block_size) + for i in range(0, len(ba), block_size) + ] + + +def hash(data: str, length: int = 256, block_size: int = 4) -> str: + """ + Hashes data using the hashing PCSS algorithm. + The length of the hash is supplied as the length arguemnt and it must be divisible by the block size (which defaults to 4). + An increased block size results in increased randomness. + """ + if length % block_size != 0: + raise ValueError("Length must be a multiple of block_size") encoded = bitarray() encoded.frombytes(data.encode('utf-8')) - blocks = [encoded[i:i + 4] for i in range(0, len(encoded), 4)] - fourbits = [bitarray(4) for _ in range(length)] - for index, i in enumerate(fourbits): + hash_data = [ + encoded, + int2ba(len(data)), + int2ba(length), + int2ba(encoded.count(1)) + ] + blocks = [] + for x in hash_data: + blocks = blocks + split_bitarray(x, block_size) + emptyblocks = [bitarray(block_size) for _ in range(length)] + seed((length + block_size + len(data)) * int(blocks[0].to01(), 2)) + for index, i in enumerate(emptyblocks): + i.setall(0) + shuffle(blocks) for block in blocks: i ^= block x = bitarray(blocks[min(index, len(blocks) - 1)]) x.reverse() i ^= ~x - fourbits[index] = ~i - return ''.join('{:x}'.format(int(i.to01(), 2)) for i in fourbits) + emptyblocks[index] = ~i + return ''.join('{:x}'.format(int(i.to01(), 2)) + for i in split_bitarray(merge_bitarrays(*emptyblocks), 4)) diff --git a/Projxon_Cyber_Security_System.egg-info/PKG-INFO b/Projxon_Cyber_Security_System.egg-info/PKG-INFO deleted file mode 100644 index c27f746..0000000 --- a/Projxon_Cyber_Security_System.egg-info/PKG-INFO +++ /dev/null @@ -1,74 +0,0 @@ -Metadata-Version: 2.1 -Name: Projxon-Cyber-Security-System -Version: 0.1.1 -Summary: A fast and unbreakable encrytion system. -Download-URL: https://github.com/hg0428/Projxon-Cyber-Security-System/archive/refs/tags/stable-0.1.1.tar.gz -Author: Hudson Gouge -Classifier: Intended Audience :: Developers -Classifier: Topic :: Software Development :: Build Tools -Classifier: Programming Language :: Python :: 3 -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Requires-Python: >=3.7 -Description-Content-Type: text/markdown -License-File: LICENSE.txt - -# What is it? -A fast and unbreakable encrytion system. -This library has 3 functions, `makeid`, `encrypt`, and `decrypt`. - -`makeid` will generate a long, virtually collision-proof identifier. - -These tools can be very useful in login systems. - -# Installation -You can install it with pip. -`pip install Projxon-Cyber-Security-System` - - -# Usage - -## Encyrpt and Decrypt -```py -from PCSS import encrypt, decrypt - -# Encode it so that we have a bytes object to pass to encrypt -text = "Hello World!" -key = "key" - -# Encode it so that we have a bytes object to pass to encrypt - -encoded_text = text.encode() -encoded_key = key.encode() - - -# Encrypt the text -encrypted_bitarray = encrypt(encoded_text, encoded_key) -print(encrypted_bitarray) -# bitarray('00110110101010000111000011100000110100000110001010100110010000101000000000100000101000000010100010001100010011000010010001101100101011001010110011001100100111000010010010000110010011000110101010101100001001000100001011100010110011100111011000101110011000100101111001101010000111000001011010011110111000100001111001011110011011100110110011101010001101100010110001010110001100101111011010011100111100101010111010011100000100100101001001100010010010100111001001011110100111001001011011101100010010100110111001010010110011000100001010000110000100100101101000101100111101101100110000011100110000100100110011110010001011101110110011001100000110101000110001110110111000101111010011110110101011100100101010101100110101101101011000101010110010101011001001110100010001101000101010101100011011001011011001101110100100101010101011001110101011000011011011101100100001101111011001011110010010101010110011101110') - -# Decrypt the bitarray -decrypted_bitarray = decrypt(encrypted_bitarray, encoded_key) - -# Change it back into bytes -decrypted_bytes = decrypted_bitarray.tobytes() - -# Remove the trailing 0s and convert to string -decrypted_text = decrypted_bytes.rstrip(b'\x00').decode() - -print(decrypted_text, text == decrypted_text) -# Hello World! True -``` - - -## Generate id -```py -from PCSS import makeid - -print(makeid()) -# 3fbe99d84c1b9255565c79d758bebba6e011ba2ca0795c5c50d22519adaf99050e74cb261933091fc4c52d6a7581c3681557e4adf495b1cd1314579e962791efc6d5ceb9133de75cd25a20a99d50cf4b7bf927f61dfa298d69d573da101f26a973241224-a5eb-49fa-828b-f86b89d9a4745480679b-4d20-5b8a-a72b-268877dc086a -# ids will vary. -``` -These ids are garunteed to be unique, the chance of collision is about 1 / (2.42721841x10^229). -For refernce, the number of atoms in the universe is estimated to be 10^78. - diff --git a/Projxon_Cyber_Security_System.egg-info/SOURCES.txt b/Projxon_Cyber_Security_System.egg-info/SOURCES.txt deleted file mode 100644 index eacd289..0000000 --- a/Projxon_Cyber_Security_System.egg-info/SOURCES.txt +++ /dev/null @@ -1,12 +0,0 @@ -LICENSE.txt -README.md -pyproject.toml -setup.cfg -setup.py -/home/runner/Projxon-Cyber-Security-System/PCSS/__init__.py -/home/runner/Projxon-Cyber-Security-System/PCSS/hash.py -/home/runner/Projxon-Cyber-Security-System/Projxon_Cyber_Security_System.egg-info/PKG-INFO -/home/runner/Projxon-Cyber-Security-System/Projxon_Cyber_Security_System.egg-info/SOURCES.txt -/home/runner/Projxon-Cyber-Security-System/Projxon_Cyber_Security_System.egg-info/dependency_links.txt -/home/runner/Projxon-Cyber-Security-System/Projxon_Cyber_Security_System.egg-info/requires.txt -/home/runner/Projxon-Cyber-Security-System/Projxon_Cyber_Security_System.egg-info/top_level.txt \ No newline at end of file diff --git a/README.md b/README.md index be74c53..26cc24a 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ from PCSS import encrypt, decrypt, makeid, bitarray_to_text from PCSS.hash import hash print(f""" +Hash of Hi!: {hash("Hi!")} Hash of Hello_World!: {hash("Hello_World!")} Hash of Hello_World! : {hash("Hello_World! ")} Hash of Hello World: {hash("Hello World")} @@ -29,36 +30,35 @@ Hash of !#!#!#!#!#!#!#!#: {hash("!#!#!#!#!#!#!#!#")} """) # Output: """ -Hash of Hello_World!: 133e15fbd573507fd63714d032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032fe1032547698badcfe1032 -Hash of Hello_World! : 6ac3ec8eac8ea90aafcaeda5832107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba9854ba98fedc32107654bfeecddc32107654ba98fedc3 -Hash of Hello World: 026b0426c4c941a2c762056789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123ef0123456789abcdef0455766789abcdef012345182439abcdef01234567 -Hash of Password#123: 7ad07a98bc5ffa9e967052b89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd2301cd23016745ab89efcd26775445ab89efcd2301673a061b89efcd230164f5bacd23016745ab89efb -Hash of AAAAAAAAAAAA: 4fa183e5c7290b6d4fa183e56789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789ab6789abcdef012345678cddfeef0123456789abcd90acb123456789abce5f106789abcdef0123d6e0f789abcdef01234567 -Hash of !#!#!#!#!#!#!#!#: 5a781e34d2f096bc5a781e34d2f096bcdef89ab45670123cdef89ab45670123cdef89ab45670123cdef89ab45670123cdef89ab45670123cdef89ab45670123cdef23cdef89ab45670123c899baab45670123cdef89d4e8f5670123cdef8a1b5423cdef89ab456792a4b3cdef89ab456700d165ef89ab45670123cdef7067ccc +Hash of Hi!: 32aa253325323f2f7a22f52313272b77335b11b25327aab12772a3522522bf77322223233227222ff2ff3b33332a27252b3ff323127b2335ba752f2a1f3b22122b2b23522522af3f22f522a735f273112332f722b227f122b22111f22222532f75327172332271377a2ffb3322232ba22f3bf2223322f73ab12f52f52a1ab332 +Hash of Hello_World!: 0c1c55cb50099c5305199d9500932925530517975755d00b20cc222909550305039275050005905205d7770530c5c0953d50cd9559155729c39101352395c7cc5971b700d925d3d5570500d1c725992c957d500b555950352521dd7b3c505d759d057377005550252b552335d0171071092dd5000959005d53c75170520c5297 +Hash of Hello_World! : 117eb51b771a2557be7fbd710b2231e1e1775227ff13b217e551137e7f55977ddee73e70b0922232a21e773777bb1e155170150172b9713f7f273a3d32737db5ee29af755f75711fb7bf59729efadb12eff722177777e2725e2be7129055075050b55535270302e252213ef752d10b7772b7ba27e5772773732f1f7579777107 +Hash of Hello World: d9ed49a56eea69bc42ce69e89c25bc828bee5d7ece576e6bbb76b94eee779e575daba4be8ece2e8899e2e2bec978b87d7d79a972225e246b687ede897bb556a7e6e8abaebaee6ee282eb45beee4ee5858a8e2e2bcbdbcb84ceee845ee565769cde5ee99958a296e9eee87d774ce82beb8eeaeedceeeb8ec4b8d929e88eebcbea +Hash of Password#123: acae4c46684ec4cefccce6c61c2e6c330fe4fcc8c12cec2004a4acaec3ea2c0448e8ee464ca2ceee6ca2eea62acaa230e6feccaeadcefeec2ee318ccc382ec6c4ecdee46e2cc664ece2eeaeee424c1eee6cece68e2e0e64ee46dfee8ceccc6eccfc26eecc6eeeceee28aa2a41c1f22ac63ee46660ec8c48c2e4ce6aecea4aeea +Hash of AAAAAAAAAAAA: b0a0aa00abba00a80a0aaa0a0b089a0aa8ba080aaaaa0bb00b00909a0aaa08ba0800aa0a000aa0a0baa8a00a8b0a000a80ab0a0aaa0aa09a08a00a8a98aa0000aa0a0abbaa0a080aaaba0b000a0aaa90aaa0ab00aaaaab8a9a90aaa080a0aaaaaa0aa88ab0aaa09a90aa088aa0a0a0aa0a00aa00baaab0aaa808a0aba000a008 +Hash of !#!#!#!#!#!#!#!#: beab626ee6e6b66e666bbea622ae26622efafaee2e2b6ae66eeeeeee22ae6626aea62beeee26eefb222ee622ea6eee66ea66e2ee22e6a66e2ae2666f6ee6fee6e2eeb6226622e2a6e2ebf666ee62a2bb2eeeee6a26eee6e2eeeee262ae2e6afa66e2eee6e66e62e626e2aa22ebbea6ee26e6a2abbe26eee62226eeee6a6b6e62 """ +x = 'Hello Everyone!' +print('Hash works?', hash(x) == hash(x)) # True + +## Encryption -# Encode it so that we have a bytes object to pass to encrypt text = "Hello World!" key = "key" -# Encode it so that we have a bytes object to pass to encrypt - -encoded_text = text.encode() -encoded_key = key.encode() # Encrypt the text -encrypted_bitarray = encrypt(encoded_text, encoded_key) +encrypted_bitarray = encrypt(text, key) print(encrypted_bitarray) print(bitarray_to_text(encrypted_bitarray)) # Decrypt the bitarray -decrypted_bitarray = decrypt(encrypted_bitarray, encoded_key) +decrypted_bitarray = decrypt(encrypted_bitarray, key) # Convert it back to a string. decrypted_text = bitarray_to_text(decrypted_bitarray) print(decrypted_text, text == decrypted_text) # Hello World! True - ``` @@ -70,6 +70,23 @@ print(makeid()) # 3fbe99d84c1b9255565c79d758bebba6e011ba2ca0795c5c50d22519adaf99050e74cb261933091fc4c52d6a7581c3681557e4adf495b1cd1314579e962791efc6d5ceb9133de75cd25a20a99d50cf4b7bf927f61dfa298d69d573da101f26a973241224-a5eb-49fa-828b-f86b89d9a4745480679b-4d20-5b8a-a72b-268877dc086a # ids will vary. ``` -These ids are garunteed to be unique, the chance of collision is about 1 / (2.42721841x10^229). -For refernce, the number of atoms in the universe is estimated to be 10^78. +These ids are garunteed to be unique; the chance of collision is about 1 / (2.42721841x10^229). +For reference, the number of atoms in the universe is estimated to be 10^78. + + +# Documentation: +## PCSS +### `encrypt(data: Union[str, bytes, bitarray], key: Union[str, bytes, bitarray, None]=None, final_key: Union[bitarray, None]=None, rounds=None, salt=None) -> bitarray` +Encrypts data using an advanced method including XOR encrytion and byte and bit reversal. +`salt` will defualt to the key. + +### `decrypt(encrypted_data: Union[str, bytes, bitarray], key: Union[str, bytes, bitarray, None]=None, final_key: Union[bitarray, None]=None, rounds=None, salt=None) -> bitarray` +Decrypts data that was encrypted using the PCSS.encrypt function. Parameters that do not match will generate an incorrect output. + +### `makeid()` +Generates a long and secure id. +These ids are garunteed to be unique; the chance of collision is about 1 / (2.42721841x10^229). +For reference, the number of atoms in the universe is estimated to be 10^78. +## PCSS.hash +### `hash(data: str, length: int = 256, block_size: int = 4) -> str` diff --git a/dist/Projxon Cyber Security System-0.0.3.tar.gz b/dist/Projxon Cyber Security System-0.0.3.tar.gz deleted file mode 100644 index 6306ceed0f470f374f2f6a36fdad7f270aa52d04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3270 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 E0E(xFLjV8( diff --git a/dist/Projxon Cyber Security System-0.0.4.tar.gz b/dist/Projxon Cyber Security System-0.0.4.tar.gz deleted file mode 100644 index b3640c71d10221775c49bc35fe0b89e5fe08ae2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3296 zcmV<63?K6!iwFoV2?S&U|4?#oYItvMAVYa#WpW@>Wn*=6X>@rYQ+acAWo<1mE-)@M zE_7jX0PS2`bK5o+&NF`n%0AehktmWPb@5c)Dz+SJDoY+oX*QE}9gqYiHWbP7Vn^HQ zf8TQeQlh-B)7>`SZi|ylDB^N%IJkTu5Ur)PzPY9!FB$b%`r@;YF6ft@y56?-zcJm= zO~ZUaKE8McDzcoWApXT)lgu93YA=ut>2^ncWoP=M%UKs&t0E4EDO55ZdrC0`hN$4@ddG; zv;U_>6g@Qnek%X}l(av>_-}Upef)3B@&8%IfAe7chjHJ~bUE_N@xM0yPsV4X>0+ei zAM^jZ|933wm&Sinx5fCcce`y1IzFbD(Es)4?Ein!@&9VPB$L2pQO16`{lhISQ1_*T5!={rsM$3<`UMW?Ae86!;M@c8d**a+;$&KL}Yy zj`KAm>Y}Wno^T-^qoEQ+1oNsaav$XDxX4M$vOEo3K{l}$`1oYptfX+lAX_(x7a(h=$RRPqMDD}}+R=(rlCdyUfI|R!b6fY? z@iM4-f)33~7iE}ozm7MDmIRsN7ik0{8L#8T;4&`p2j=FOg2nwf4C8w=&5a{3K#Q_d zWeGXdiSHOUMKo;`=b)+30R5lr8@0^J)-()>!%BaFSnw{bS(Bo4=r&Ov(2yi?%Edjj zQd5?fBeIxXEZ+?0BQjo)>-p@v@%iYSsKW)ks}1sIyu6&fUJ@uVA5NEV$?Sp*r*Fx( z3+fmBE%qwnB_EG~zW35rsNuR;4c>POCI*Kgn2Ih&l1Ao1l0G#kF0jD#pK z>TEI`Up2`2@M`#K#B0rf%Ur=?LOb&2a)e1JZwPkR`FMd2xtPzc8Vb4-YRotjs5c!6F6e4<&>~O--(N3AJBH+ZG@Jmh1y)8AtHPR` zDgT_L$^9R>|0DN*wlJ0kLI-b z9V|j&8Fxxd%}}Ov!%oSQv7ziL@E}nZ#b!g(?J2CPe46EafmuXO%IF8`gp9DrO}Bid zo$>mbsE0@b%7o#T`~XeC6HNlEYFO7h#cG91+GLvqgr#YmW}0#y-$!9gz2@ur4cYvK60DzF59^#*~5b#Oh2MjXC0D2-^8xH|dfNhMNo|1ER$HEww^9N;@ux@rSf48VF z3nIS3^p`~tdQdD54=aKV0IxP1bi#y2tAeh$oa-%U7vZn=LHQEMVa9ARCc`92Ve#+b z`vK0YRhfad0DwS%@QkPn=6NhZ1EXA-vmc89fK*e6Jtbcc+FDmRXPKJ@2{vi-EJks0KP-n#=bOL}P62{RAN{5>m zG;sk`1soZH9}(Hc9-taTRp8?sTZ_0fLZo!ZKoh`>ei0&A3S)@dQe6mHH1smQCjwW3 zt&s2~8Aa|kO@zJYLNn$4`}Y8i{S-jp^% zaK;^4;cRonX*-0NKzrk}TeaGFkacaEhXVY z6KTgMyG$Vv{@rJlf{_UalUPwHxk3#G(0ZCutX3u-*CjPbjrEC=q(Q_BJg9vFLaN`# zM=;eG{4f85GmlY!h^+F5UX{Y%qEwkFejlcYU&g+wUUJ?g3N{a(d-g`Xyiw^;@!9EY zJm6c(uJo-K8KuA~Z>JQ#8asY<(@WzGQFYJUFdo#~Jxeil19hY3I%8)<$yBeYS9zi2 zQPZQ;vu1oP$uR16JV>dVy=%LjsG83Y+VjxyM%9wW-WmIPdd;0R6)Srxe;dYO`|351 zmu}hV`@ooeeC`da$BVHK;eCwOy}65~T0quH?&E3iw4I+GNIYocs;AWbyickzd{l2y z=ja4GeK`X1PG9v+r5x@KJARq?NWXs2{ekP*8fHyChB?&z07Em3QGD#Gv*u&jj&F^h zmd8BvnDd&m4eq4zQ7NTCh;yc%@!{KzBbWjBNQira(W=J2904E5(^4#$96Lw<_^5*m zG{`SUKrw0^GH4LNrp^abP6$pdwNacb(}LkNqVPH9RW-8(-Y?B9VkWG_inrqv&baM6 ztl#%~mTNeD)3)u7?RNWK*X}vYacGA@`#IEfsow3|F8t9w)3l8~EGYecU$=GEwOq&S z82xrz?;E~rxwh$bC@?VGcBg09c9&Vy^R2$^7_Miu0d{u#tlu%aeS`UK$Fp7L^o@4g zV_n30S`ru((QzL0aV4{NA)X zIQQ{(liz>k_uv27_g~BC_2u_px&L#p|1%#A&#y+>#``?`KbB?M)&38R#WwE$7#+F) z^DHDGxP;&mf=dW4A-II#5`s$zE+P1{LvVTiL*oBG3jQ}bc30wmiT@Aqf3gMeg*XFd z<4yRx>~w643B4gt==d~U8q(a zG;jl!-6%pba>P>x1_WT^D|i~J5*3?-qvP)l%``PrRZ^CO0Y}l_w>49e(fAx9x|8?E!JUstto4TC;pJo1MtJQ4~`SFdC)734XH(tE4|6}uivi&Xn|Ec@m9kack|1CcM<27(O|33qjpCEV>^Y7`3f|sKS zAk*kr-JSg4XjMHS0AT&~sX~D8JN@n9E`Yz*QkX~Z6Uv^U#(y63I=H_uP@jxBkVJ56 zA5SD?eD|JjN|cw26F{_d#W=GPDGyX0rByw=wjA(_$tepN%~(~A*Abf(1GRpyL)5$| z!tg+pD9UTqtQ@GH_kN4oc+|OrM^m}t6G*IUh~hlLKQi$TWq7Y0Qou00ME@wCTUXrQ zxXrf-w9mo)jZ&e~@!6o(uznDEw^fE{;1i)z0G5Iq@g8}(p|gp-0A5Y^P#AjjneO!*31i&d1(e$;`WbPEB@;)|I}-I`tDCz`i5IR29%I)%Kt4P#%Ri+`|@5XwucF1 zTyL)fa?hMB$VIG)_P?#RtOiH?_K@)96?D~2vDxi;m4&!p9_jGO_O=Y8!8;W{psGT# zX?=hY&N-+ie&2dQI{4}6=#(6_*6{{ngpcT-2&ki-yLR-mhyzg6&Es@iNzNb`T*gl* zJ*Ipa@_R?TJF4~}!5K&8{^QZjiClb1k|arzBuSDaNs=T;iA4d|-xvT@c=CLQH+fAsJG+u-|9;ic*6HA$S#y5f zc8r+h`_g-Pi5&iwz(p5bCi`l;Y4{u>Vj0ZwLUS=;`%+J6_I()nnCUWb$fxH3hD`|3 z?>?Fc9iF`$2r<-PBJiH={k>KtZH9SHf}yOGU7F;})o!afyJ+mh`Z-}HRUjRe+Brwl zl?B?D6hlmAbJ|z9GA#O~$twE0hSAWJiwj=uf^^CQH24$nf&QJB^XbTPSV8NyW4eD2 zDcrg5nepFBJ^=YrOt1i?`x1}t1OqJuyOP9H;XDIC_lCZu<`LdLZar z0CI>IOByd*xeL`}KK>aw0AYg^yaD@2tLg!;4&(af7hGwNR^HFL3EjY%J5BwO@;#F~LDB^%J@Mt4ZH0xl`kK zzn^laP~VW>!3YArC|r(O_-=ftl|P!he>^gYpz$RP%}fp-?*E}hG9QcEZgf7{=<5kl z0!zO0RudS>nmP6f3%l0Xw@#?tUkNq&#G@cScd%H*VfbP*py^;W|i$BSI6(a(|nTN2AZPnm0$bXGs04an6>Fqb8Z8 zC>jhC)-5ewQgQ3=W6dsN=Hc(-z5b+W%#~O9asBaOejW_KQ+{I}7lgubi0Fr$@m=*$N} zi(7N#g*;*KgTE#F{S*|Tv_ z+mPX4-U&O&@KbAdPJ3Ez>`)bC5sczmXeJaU^aq)~>Q_>gq@O5(epp52deD|eM>l2s zJL;)-(}qWBkcT?TRPh`C6?Kptua=hZ`rqPysjF*|Ufiry7q7dS#FOY}2J z#JS+ZWf>NG67RtlqWsn+Y|Mi zPz6QBk?5nGJ^k3Q;z>v%ug{eYg*wl8ouKyAo1xdMsL-wzyUBV<~D;?`CwV#-8W!~5p1rL|Ub0e%T=;KwpSyF?&r8AMN8-onP5qVnTd z$fCVelv*o!wqknVR@qkiClBqawr5kGvsbr_heHRZk}%ba_Z#;OM#|rs)We2J_SqgS zJBZAm>XCC{PBwDb-4E+sgtQ89T9HcF@loDwCu#K)Rf>A*<;kRzK;uHw-n> z=ZX}sVvZRjhp0)C7 za`NzWtsXJWg+Vi}dIY#fq6K+wd^se>F!AB}d1Q}@dQS2+6lG=H8+Pa_AdsRsvsPlF z&e(Bp>?S&$Eq;RUh?-8>S*B#X(EwjcJ*^yx_C0Bz@OEv}p!aPHIO%-)D;!4=;u$ZV zYmR)j5JZ>B|2ks&)ZKG1 zM?pO+>w_T{E~2*~Y`>J{+%qHcmX#j)zJB0Kj^}(ihKINDVSzh@9r07tpVKAXnbW1> zAA*Cs-EaUF0Kn957Q1D%gzh0vP!T%#wI!6&VxaS_QxxOZ+zVYRefE#$%kr@uG{pY_ zU>ei$1z-mN3TY|uiNgvi893cTwNmXRXj0n~LdhKjl;J$Uw%+Y>eGJ8uF1!!qjNhX9 z@i4DRd1+qynu`ie39qi;c!GRpKWj(Tw@%H!vB-9BpLT}dlPBY#iW-JhIyuGE$nq}B z+QMaF_JdXN`YvxlNkvaY6+!0M-e%U|!x|z^@coKCTXvRcF+{P1I;<Hyz zl+keuTNOJn49XY8d0F%}|Dlzgyyrt4;hHt*Lmk|4SEsgm&FAWbpHY+J_@u0zK8X>$ z9Vf3GS+({o+-))jISH@LZpK$RbtuR;J^c*dD~x+A8>DQc9KS^|RWf1D>Ggy*Q%; zE=Mybya;4D!8=QO4E600dqA#q26S5~+;w%zBP_45Fu-j(a1LU6x%WxxOgVXZ3XD2ri6#qD(rVV1A3pujAYWJ^?A_jT5W z7QQJqa(vUHs(oxCj+v-XSR=R-ER?)Fb*K2AB#EfAlv}014U6&F%ntHayMM2n&KMNy7af=verGCPz{eFi$$=H34ud=M^HH}B}c1T%99g@Xq1arI+<>ZP*&^fv? zuoU|dAKc@A8|JRgu`aFt(Zi^qm!u{2YXLOdbm`UrOfZO4cdwje%t}+X<$)HzsB@x~ z%XyyD9W+AMZ5r6sf6-YTA3ON<)vpb3W>E8|@9*#5AHV1QJg?_1m`p|(9ULz7AUr4- z?spp^BlmB?Zb*_{KHs2H1Edx~YQ3L&-kOCo-f83KbVp(3AUz*QgD*`6NOy$)9u6<{EqH3E^rVBFu-L?Z z$zJD-ynYPl(`qJ(s=Nl+8iAL`i;ckZtNs3C;NDbpgEQdQw{_~u!&4|@8`W~HGzBD& z4Fst3`t<1GT}GqZ=C7)c7bk8z0&TU%%EdC!NNKrLTm9&Pb07x;((xm9roQYHn)eRf7RGB@&k8#ujc!3RG2X3vu=xaWY2OO zN53qMNN(1Z`@k#JD#!%+NcUrf`(632PEPkU6MEz&ZoH{$@7HDWZZzVGfNho1hlH?U zx?Yo`gVus5U*)QJ#UPvdCGj|tnv|-XTz|IpAr8Er=x#10+qzwU>Wr=iV^+$l^lP?v zptxU-)78Q446jjWo#a7%mE1_jTUAbGU5>Pa(p0%AD`&L%DM7@faLQa)f>08ARitwL zW}P6~;5<`4k>~HN)08T3tD-qwhLuswiA8gc6fxEle6E1+cEy=L3Vl(6tiGvh#1*ejYI~jzUZ3P%Xo5d z;Vy0$dtZz*ehi*m#3)0JNZ|7&vnr!gWc``hyrCzp8%2JmR*-(n!)nD-9%ZpqM`>@q z!8_4hI$L{>YJ7~I0jXH**uyeBrD|n)hX?v+{uNz3df=dU)T3VwPLqqBb zU)_9FR3E`{a}%}SSR607<95|+T*Kqu9=BFA1UY>FkYyJfcMBv_ZL?YK@=qA-C*?-a z7pg7y_U)a<8nQc|^M?&QGs?J?37VSw-F^(&v_>~b86cn&=CAKiqxY>KGT9QBE%d?= zpBqhvt8FW3>*D3or}dB?8J`kSuQarVOF4v*?!=N$cO&ZHeP8x#-%EO3c~Ib6UdwDm z|NPC{5M}ygtYnD>Xq_uj|NYy}Ghx%hEJoVFd}_b&oLx^7d~U9!v6 zFoj;OO;jut#6Sgq;bxgF-DQ8^sF!Lem(nc0tn=YeMnc71oUW5zeL~bb-)E4Yi2W4) z)N)b6=v*~%iBxGZ!)>R!!7BgIO1%2l@83FX{GK3L=VEPbRty9rl9ME)UOgwlr-A3D z%kpTX(KyPCE#4o~+-v=w;m-;!gJd7rkHKp92jpO*!bN8N^P=zzPt+d#8{SX8n6JM5>*$y3!;N>j2(Mxn1cDTVSJ;PscbM8Z>mk zhAhWt`=6+z9q^d7YFch~T&uqbnRCp<@R;)e|Ulf;5DHBLHDfB^H_~R;d+%0w4*EUPR zWk@lY_oxxPlyg}$m0bb3otlECcW_iQ8&A)Dl8x+EoB#rlv#zwo&XP3o`S*OgH+LV!oX3DW=KwXO4UxaSaV__oV(Izmp06v*1tPY#g z`tw39cIe_ccKVpU8DXCbcR-Dw@>gxhPk&U5zYhAe1^d0_AV3^{KHiw3d4|%#);OpJ zwW56I46x&4mj-`AG=`4+=qTuGJWlC{kal?&I?afdgbiMP8m=PE?fJ5CCA&Yf-`3=s z5y7gOLDHj2w|)My>DLF#ZnmcJ9+`>NGHAVfgx#38Tndh)TakqL&4sEynuh%Fe``PN z7kWwRcRGxkXMEN)zkT_9E~M3_xqRMSu=4o>goA&2(36EOj4F6+S4!|3s)KS#)lYNBiwu&vs9^Dz1k^GsRV zKEN=adydT`DX7ns;Qb%YTkk8%U+3YY2}G=)%6|_qCzfD@54v1Qnue{968nIJvuo2L zAXJsA8%U^DlfRCp4NHIDkbCQM|CEvm)Rw-qJG+G58wWBHhCZr9$}(QM@~6={Q3`qm zIZ~KfzdRIC-1P0R6|NYe5dec1Fz&m4yipA=o;(C6+(2 z=}jL^H3!_aqCDx#POR19DfIR!tMrsk)fM=AJu~K-Wu4RTYF#jlR6$!}h`!0Q`9bMy zA!!&xC@Zh3y`eRv_hqiN9(9ri2jN?XRORR|WF7Osg2@DCm~+ir?J@TZ;~bHU(aGRt z_>=;}1P81^6dq8Fi?g?rdL?}|YJ_K;Yk4oIB>8z(>!JG?Tyb9rbL2({kQsvS;ZXWy?bxv{l^7%kcUGnZaK?Go!faOScH zSnL2>7pKF(#y6n3wfM(1VvA!BaKgR01WdJ$Q8A%%(a9Kb;<1u`8U9K_g z39ocI8(B=v79zBPr1Soet6=9TpFS z(AcunQ&F3HgMI2EZWCc=v(Ngqprdx(UL${>@)?Rsq)o1eYLgK@r=a<5&=P$yQ`eH+#W*Iga$;B#Z%UM-!qcHu`8p%rD*k3+=H-)Lpd(z4 z+AtdL-!z|-NNPomnksKwM2>&yyQ>a=r_O39G?m|k4)KV@uOP4_^BGqbnm{FmzNOa6 zw(OTNB0=-o$3605zNYe+VLFn+Il8Gb>I&Q`XZ<~RwE_Aeg4W8hx<>afvnAZ_6|cWakI<13q*Mvh(l^J7|PxtO&H--6h^Q5b4RL!!3sWpwFzj>Hj5x+uU^mgJb zUN$1a&~rba;Ir$81NIA6oDaeS!$6emC8hbxZrp@X*?@4V6W8d0fyr{7GY7r)#VW#U o*OU&)lCPmbLd6oaETTpkLOO92|8EZZa9EN7Xsb6#7zxRL0L*Tgz5oCK diff --git a/dist/Projxon Cyber Security System-0.1.tar.gz b/dist/Projxon Cyber Security System-0.1.tar.gz deleted file mode 100644 index 68b32840d0837d3f35cbe650c5ed0a51715c8251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3267 zcmV;!3_SB6iwFqs=T~I{|4?#oYItvMAVYa#WpW@>Wn*=6X>@rYQ+acAWo<1mE-@~2 zVR8WNTw8PEMi!oD{fb`Y!FCl0NgxESI2*>sV=5RZU@|*3>v&pH3zQL(qKj=dmH)oy zbW0$dxou6xwMqJnD?)uax4xaP)g7&+wZ5Oxhbu-smOlF`qzn4cQ`g&_{clV+bki`O zk%wnbKt-0*6vRLKdy?5Bn>^UCGsD(()9Uxkw$?Xn)3kcZGf97Wnx*m24{=1!w+>6m zg1JQ+iD%)3Up5yNlz$YgyfA#Cpo{pB7Q{ zu?g@~`F~Q<{vYOlv-|t`zb)tgCz=1vYX0xqcE1P1(9m=_^UL{vH~)`E=flZjsO1m& z7mWXIr}Lrt-_$Lf|2wcq*zFDsd`M|`A^y{!a{T{I=l|=`l8ghFMHy4h<7Ar#t94F} z-4kN!W}93UUIxA6MO>_yGGpl`$g%(uf{d(L%A74(r8LT!*C2k%7>Rx2u4%er4U)%% zMq84w6gk9BPJ<|jR)i84QH5e!6qmrV0CVM zrU26-0}D{k2HC`3;Nz2Vvy#FIgKXU(UVyBfB8S8b6S)%`Xh$nfNyfrZ0S*D^&28Ol z$IGDV2|6?{U6f(U{W{(pS`uW6U!)O;WW0_SgUh(YpP8Fu3KsX{FpTffG&hdC04>T+ zl_lg*C%$9c6w$O%oP(x91N48gZ`3j?ThlNk4lDfyV!^w#W=)FHVc0}@KtqzmDHr$H zN=;c_4as79xqLO456NgjX7lNfql@7MQ3nfnR~zKjXn8e#xg=0xKA0?Dlj$WHOkR^8 zMw5#M8UAZFA1)STI#)*5v+-yMX`{*c_~pfD@`5~vdXp*i-VyX+V7itwSjG~mmOVECf`jPYL?Dc%~;%Z5*rsIntBt9R4W`pPBp%4W| zosS2j>jt?PTn}Chd95jMnJZXKXh&XM4KWGj4dCy5Ihsz;jPvPaIfvH>k&dU}Xs&O^W%fgdo)7y)>RFvcAKG5{?ZIXxv8 z?2d&ohUEukmk|HDn7<3o%YukgF#UNEgdP-&!^4VT1Hh!s2IKQFjaCI+aXGUsXcytH z_Cfg)kYUDjF(QK`Ng;^$@cjU<)v8QETL3a3KzK&f1@kO$HA#XvmzVo21lu~N*5}+8UxZf2}lyAtZHO&ze z2Khgg&+Y?HM(8L9B6mWzCenf;Cdw@<59f6N?Y%Su_2ocX615E(?`9+AJ zCyZA?rEUf_z|gDso(OyhwnD-;WEi>IG!gb*2+fqYZ{GsM^-}SETP`^}w!gyuxwv>bqO{5*4>@tNw`0qZe6pTzbD8!0N$rWlifV$I^Vzn~yxGt$d zYOGI`Bn={7;8E=p5K{d9p@rZ9JyVAE}WRwD{yq!|`YV7#cO)rf%MAbcW!+2D0_bkQK z4b+XA>x`WdB~!hoUgd?7M@^4X&zkYIB*UoN@hGKk_O9)AqG~=rXwO5(8&yjhduQzH z={0xORIKc&{B0PA?W@;3Ub{bRO78p9-f25O zJ(76P#??rv`+1*KWB6XZMV+G)9Q5T3$OnBjHkER^I~@3B;(NyRqu~!+&)2YO@;S_* z?mL*8VUFT+SDiJV%XWNg{Iopgna7;hoNaJNjL%9b4MJQq^^8y7ZXCf1z-L0-+ly8; z_T>!tNS>Br!Q|LE`uBqlF3=#qoB_qGb;zJW1e-b^OgSOAwA5yCvP=tx%ZS3)m>1Q` z7I+_8Tf|COi4||hC!BHHcUZsg^*XNM^i9jMx|VDAJ=^Lz%yDR!LHjw>bg6FlEf@aj z9^gNt4}qcI@9UP%?2hZ0U8CP_>wUv_JFaDVT?z~gx83a-mSwXJ_54oXatzlq+7Qj# zeb(=qcHdyW+x0A$Ienwu_LyzCo@r52r=XIhyMD*99lvkde%J7PYW90x7c%U&N1)E#F>b))nR|H-rVud@1IW+7JA_~BC4Cq!A;{2S6tyTyKis+XD_p+h0xX=e(vBSNK zCm?<)Ah=42L0aV4{K>Ssxc2dOllwpN`|qFb`)|kS_2u_px&Kq!|CtX57uQ2=<9)6D zpH9cL`1fCoIJ&ll-+$px?*BXmN$4)2yM*o%x=ZLTp}U0c61q$1{-=TN68}s5|3~A0 zqifj`|4aN|!~e+^pckSHSc^B|SHS;?Tr%A z4MPB$@Dl<}=mJRyv5TtQiNhY42Yo`*RS2(k#|AJ}RVY7dfnnSm^>tjN1P_srZ?|#r zJ$s=-&VW5U;iN% zfc4*$>;KbG`3ZtIGXI{gD0n%V05Xk^)!o?-j#kwZ0sz)upDF|hzti6y?gIF0EroRi zKcVayYW(LhuY>ywXX;1$97rO#wT~wfGQNAyHzmr;#R(u=&pjcbHs0%`v-hTQ6~>TQmqpN( zgnumJAH48>I;4P#cp3h^d~RKFf8#daCgA6T`x~V~r316GS_An(}`z=r_?1Kv6f3(`_X=gU;YGe$wcD%9mY!?}#@?)qWy4K?psR zfOI50ic|&Z=)?Es%{Mah`@`QobLP&uGiR@TX0NsHItJQA*FXROfb?>*0elO@cijmA zfceYijms|v%Erb*5Qv+X8xjHm!vnTWwGk7-H|EbkL$&nRw*0_^i zD={Q|?nnZjvy=FGpw;X&j4_FEerJ5274zGAInLkeJVOdh((7$9;Ep@>0vJTwHTCCY znqm^WcoI%{p&X-Mz(sxr-*ai%NKVTJ)!x08D3OA@*2B(iQ)u!&!Wx21340JT*t95+ zzzNU?`>9>8(9cVs@Lr|j%e0Ycq0S!yI-x4}DF6P*lhfvG6PU}{l5_0Afi)@-!xykt z*_Yre*6mbW^v3#WvM@bQgH|wPvoTd4_Hcc3c7tym)d_B-~2SNhEahp1kBwZ<^@p>aDXBp#!yFJ zgc~vdVjSRugn9}JgN4CjU?(>pq@bIZGfYTFQ(0BdSQU))N7@)!!E%H_!E5GB|0+*6 zko1KG`E*{N1aRQR2RI0L{Mn^GI2-=F7-n;8(T$57-foeO!Y0p7K3hm? z%KG_ab6*m(I^1$o!b?7@OmuuY5LRb@|G-%kB`KvlM6W~F3K#P2_PcP|YKiR8A6JVD4(lA_x0n{dXVE-eEyj=Z-j&>)vTAVt$4~VHquO zNAWnk(pZ*r%oeG55NjtcdSQrw8{g$*^&zG+aa-80`14b_PYtbN*b|2ZbyAriq=Jm2 zRLd~S#v@v*j1yst#a^ssxcneNPF}WljL6CHGWVV{J-bS6SjYq9wIyG9i~s{YOx-_ZZV0tib|(e|w#f zzm>1xTqr*&koBaEfmkXt$W|kMLm~v76*Eur#BY`y?mez_)IRXHh6|HBdQ!GjD&{sn z7euw+*rM+CrYX7XD={=Klrb(nkP1OjHP=ODSSqrYpT6u%VWe7EhUl#0>E~Q5Eu8BB zE~MZ3*;;txwqnyY_V>!yZK*9fO;hdrY*oMq@`;m58IkB0Wb`IFZYdr*2+%Qgg2#+?nNslcexJb!Z zb6Dl3azELd&jaZyAezw`UFI!OJ;7ziW9`Odu4xUYa+((+?@UhdNFH|J>>)-0dF$H?3ah}#)hx}RxD`0#>%lL=yfCTN6v?&*E}H|jQS3=h67|JK zCbxE{b`2!Q)g;O3nIb39PuBXC+en74jSpT>nB3iT*CkAnVf{ooxsq1VEx%DcK0}MS1?z%c~+zelBS*7U`B0reatkA@UWx)7O9E#_C5aOH&aJ1 zH&4s?A92q?9xPV(nQfNZ2+>AO%!2p*Tdh2R56I2pLwp@OL5uzB7QC3*C}-6c*Cvs5 zx6=2^LTmNovkzbQwdggvo_o&IELo>lc|ySi43g>5TA_C`a+BA&lD}tLcX2%TjbLNx zTfil(M7NjwTy%qU!ez@EU;UixGb*sKVY%x-9_7%ITSbN#s3>$)g{_UVv{nv!1#pJk zl{WDd`sVGU49-!*C9QJ=x3{BnKB@Dwj#`x_gt3W5fTMW|LCzuyaPMY7Um(@yJ z?;Ob<0*vPH)#je!UKH!Cp`XWnxEa224y1w%vg8Qui>oRLO9pHb^7h^dl(_kamz4RO z(=JK7vefF#fL_AQQphnJ1w1yu0P|axY+7tQepVA53X3@XG6yGNGtT#%F#b04p&Ps3 zm$H09LKe4jt#Pv7HryN75K|LcX(EY0Q8hb&A@jVV@YtkEj=20~a~V}h*}m6UJlsY& z)lGDoVJOk}^@*YX%)FXmT zM)2L^<*5z%6Jt3S%_dd;rB95td%a#OhhV1{)9ffO0!RmUGWu9$M^Sn8Eq(49+TXDH zsN$gjnL2+H{6_Jo0QqErj@{Gy>+fYGQNb@mFJ9&Erh3mYv!16M=lVQFoZtNJ9#02* z&?VZ#3Kz#e`{I&8F+WnzF!f;{IWIO6ST$1Hb>^R`71uXr-4Z;T1hX~wCpt*0#YrK_ zfS2)j4&|WNavHX9yCd?Y9m+qX2vFs|{t=?QQc?m$gUN_)f zfk*cD(UVs-@-FWz2~F=+HNU0Fuoa(RpsXs1WQGZ55OFErt)%Piyy3*ciNE=>W>jy*R|k*)U?)=!5A4*ZYayS!= z&<);@DRP%{@K!UB(e^Mo^o<)FwKUUQm2t}2d9z9-O@tHuPKO?1!Y{d%Q$4oP$u{zd z?Qx#6Y00XZTKsD0Z!a$t7lUY>OuSh`MQHIQJ{4sCuuit}$H)p60zH*b_zKx)_O5YP zM=9SMK`AI-gy*h{`vq?4z-0H_XUJqn`~OM4*T`Gdg;2l z`>GlK?_L0)I4twB#{X|?d==)ZS@{PBa>>;{gZZCzxr%XBssCW~ko_sfe{_2l;HtX* v0r0u>V1IUq-?VlW=&H>A2h>O~{>MQ76`g_hU&Ozn5MPdamxYB={964Rg5uOT diff --git a/dist/Projxon_Cyber_Security_System-0.0.4-py3-none-any.whl b/dist/Projxon_Cyber_Security_System-0.0.4-py3-none-any.whl deleted file mode 100644 index 9055cb18bb75f11d4bee4f633207ba26979d9c7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4044 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 XkLJu^6qLWCP@azSr-hAX_`UiU@C4Gf diff --git a/dist/Projxon_Cyber_Security_System-0.0.5-py3-none-any.whl b/dist/Projxon_Cyber_Security_System-0.0.5-py3-none-any.whl deleted file mode 100644 index c1ba4f30007bfe2482c465fcbb1986869ba3e25e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4472 zcmbVQcTiJX_YF04r8lMb5_(5L2rcvuhE5PrAP|aF5vfm*Dqw&hAVxqQ9Te$JA#_4e z=>jS~dMDH$zVG+ujm&(1_}x2u?%X@G&)VnSv({Prn&=Y|GXMYpvWwsb5JkVG;3fh9 zJg5PHs~1m9G|kN=934Gv#HQC zwK@rRC|9F_+V~N_n{hj+N)RLsk54$9rEIkcNU<&L} zEL#jr&#%m(8Xg*Iv1pfP&sp}~dO(YDM#sriPSJ_AqhC>F>scg*l=9n5*s?xQ9xC z1?aoyL&)_^Av@E?lJV1lEgDZVwxitri9<*|LT5GxIr}p$Q`3t*i`z)l)G|TffutzI~;Dgqs%pwi?Vm9=Yhc zZajvIMS%^bXYS{efFTuU!hE+wym2b7eo&Cb3TOQ&sGcBdhApSX6xm%Ve(bGH2LMC6AMTK3M z<;-`hWNffTZ42QqT4qi1X$7h|)mUN5Nja7&vfO`czqto+nm$Ug8mK^4Z69@EGcjUW z=(Sv5mQrlI`)44EWrc*x@e>6ssFV8boOI`UICNVy)>fcfG?p;J35Pbw>G|rlzm93u zn!wKINr++FMJO3=Evs`v9#-7%l;nhsw9O5LjnkQ^$>h*y|2V}O2r^klLEGYkFm;RM zsKx*x3Ecf?twdCBdYVor8&AI&^I&Y@2tSzIUND%?_Eat1{lkgImVXkirD}roo!r8P ziD#W5svocMCM>pAbbA!#jV~*%gdC+j9aow~FDXJRz&BoY3>D73eoylt1+?MJY3*^q z!BLDGnhCOK!n(4L3)lMWJhm34d0svArqZHkU5LG=b;YFHDSP69Dt;nA-{=upv4cF- zVanIOkDQGeNoDS13Uc5KwYCSwNdlZ*fsE&dbK{6JIQx5CQ0c~#L5fbvt1%l9kCg-p=9Nqw!4_jDvIM!kK@t(icj&hicOq2S zOMPslp*&$+@HxoIFm_23ToYzCTO;=g2|A3aK}h$;%2nJK9wd%gD7(TT!;#sHV5_FH z!*YEXMvDRC?PH+saA#OQ+xVw(9`ZhocjEmoGKBUvh5;Ub-CHmJPXBAQK@H(BUqS#t zh!_A+`dKXkem5BIq3~+w8@qR; z;}sMQ2U!f5yZod{r)ei!kwyY>^98JP^DY7!zVRcUMw10S3bgXc6f{#LXRmkFBdI|5 zM}jwQPjPVsRG^0MP#JQyzPO$gA3wrwgF8sXEozJ*?BK#-fCqn{v! zKU@&lyu-o+t||%JIx6+~%>9FzLUx*Wd%SUf{iKq9<;9}v6J5`&+#zQe<)Q?Z^skYl zQR?WX^!kY>D1M!@uwuWlYt!&ro5mY!%Y-5=!UZQ1&r?D<@vW?+iqFCvbQ6EbM>Zl8 zW`N=Mr>K1Wuo?$#{jYT0uib5&P(dpuu!-_>OKm>STnMB#(<&-KbW{ss_~y_>)9sYAnRMqZMOWEw)f4kHYmz(A+jLl_JNG$& zLAy7TCp5BS8nY-^EDSu;y!_DxlVy;JYd_3m#I+i&dOIl{{t|@saBNzO6%5(r(_3~o zlsKf_)P>bsyJUFw!txPbt-coT9S{#*Xqf8_foU}{6b)bcGrr(kY>%vMIv!vcx94!V2-sK=NFG8zNK$!f%ehaa7>YEiy3Jj0g&O&JI3PYhgSJZWt z`e|RIU26_oPj-R7F5{!X9%dR603eYP0FeLfWo)QraSMFQ;?_&675J3=)$@wBNB7iZ z33zOu?p09*Xl4a?KirK{hPF{bg|_)>)A%!s(t{&UlS7g6@0{D`xr*1fnt&-E!mi|y zqmjq#B~}x-9Ab{Zn^o7#`vff`BPv7>?mmw~D735a@6FDvLa9~Utu}AWCFU8vnUbn^ z%+OD-wW7BoAG1Uf?zh*_ky+TS$%&*kd_2foIVu&oCot`(HdoPSwSu;nV2T}|0__C1 zK)oo{sH_qr16?~9<}f-oLcLS5ceI*3>ZO)F(aj4I-)pc_xBu*GGOF`9@t$Fvx63T| zb^{TxDrCk%9&%-)QkVHt_j2sIc%KGFb93~~;+`zUwUzpxb~6|}QYon`JfH3}E3mQW z5Otx7b!kGCQy}`wid?ne-?1DmuLpcW_##D>EW9PQ{rojSx!SmtW!?vEZH>8~bVN8u zq39=3+%nOiIKcub0;@?p)tqu^K_Ia9-uB|k%WTDuBM5$Wf5ml6@3F#}rif_9f-klb zn>L)p`I$1e10&P;w|(Fhv*Dkbw{~ku!o{I20?6(q(FV1b3d`QYG9NNSo8~FedzyUXA;ZDj6-)LfP@+%?r^DSmy*Smr8a@&W z0e5v4;gvG=9|-Fgg3Ta(&&Rn=lPlNSNP=l{fU0!fG}*pZX;i(u1%mdJA=Y%Z+z@WT z`_S=r^*Nkzi3?29im#auF4Af}cy(iM9_b$$Ik$?k!>MflxLeDO_&5&9kV>YM)^-Az zUZ1%oIW_^#mA!ePETiDGHMzRtp;p3=@5}Vw+Ui{UkS7>o=+GQpQ{I<-J98nPd5CD0 znl_vH{NqESmYPHVIv5kY0EHSJ=-@h2tJ3ZwCHB^+Tuv$}k+Nhcd(tg4HAYfhFpSdf zD`Qq1y{W^CJzLG(FrPf%Q=1E)>~CjNIOB8Mj~?&6w*TR&v(A;WvjkOo;IoW9fU$Ro zGG6k_z)dXu^yvQ51~FJCnjRj62_It}riq}+rzr#aLX3C61*$hjls`et|jt0X7?td^tG&mS0qdpT9+N9vOa zK)nFhMHY;blyM@irw{d4yDG2I`TJ&+gS_zB4{uh7&c4;nz@S+oi5;pji*gO4TG@mm zq2%E7$9%WlQr*NzRojwC^6+|WekXVyGM=0TKIE%XPJC*NDy2&fDEk4#pJQ9-s+1-G zlfCs=+mw)-KIEA;>(@shPZoaRV!za41_Vc9f@ap(S2J}wKU%QZChI!}yy}%&zJ4rM zpQ{LhsaTYjm)DjeE-(`)rJvz;b&QM5p6S-NIM1PJ%PP!tIHUV(i()Z@P9ZzIUpfzz zxRu>a^ji&I?=+XgpXp%VNJbfhScWx8QPqWkFGvIn8lb7LBWG4puhxKuW1Fx4B2m!wq>-JXI19(y7 z#f|__`R!r@;J%JtZb5EdKYb0QFAdGN%j3sP*0lN%000j!oRjQtk8h@>X>1109O+Ll zk_5zlX&EMzrBk;Vc%*OQ&Slp!FA&QTSEs>3CLeN)w6(!O9p}&g%Iogmxsv2*tn?nk zRb2X~Y}ZK|%G74c8Ltwgb{&^)YD#R*40}04-VIkQb=$1%_5OmU8;NRwoW)Pxz1ybs zZVyxjo5^7hbDp*{I~9`_Y45q)Ux?SC^*e`fx#?)x&# zWk2*UOgHK8!u;coE@NC)gnuyvF8ZF|o66t%a2en-i~j|{{x-lboW2Znna=+J)e*>C e{1f@Tnf!;`Ci)~7?->99UYzg?k=UX6dG~*)=aR$# diff --git a/dist/Projxon_Cyber_Security_System-0.1-py3-none-any.whl b/dist/Projxon_Cyber_Security_System-0.1-py3-none-any.whl deleted file mode 100644 index 73bb0812327e26aab4d3947f672aad2b0cd6b747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4449 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 diff --git a/dist/Projxon_Cyber_Security_System-0.1.1-py3-none-any.whl b/dist/Projxon_Cyber_Security_System-0.1.1-py3-none-any.whl deleted file mode 100644 index 0b92dc477178ab65464deb7f11716c4bc6897e59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5037 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 diff --git a/dist/projxon_cyber_security_system-0.1.1-py3-none-any.whl b/dist/projxon_cyber_security_system-0.1.1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..126d1333cbe526450d50f185f1a8b397054a433d GIT binary patch literal 5236 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.7 +Description-Content-Type: text/markdown +License-File: LICENSE.txt + +# What is it? +A fast and unbreakable encrytion system. +This library has 4 functions, `makeid`, `encrypt`, `decrypt`, and `bitarray_to_text`. + +`makeid` will generate a long, virtually collision-proof identifier. + +These tools can be very useful in login systems. + +It also includes a (probably insecure) custom hash function in `PCSS.hash`. +# Installation +You can install it with pip. +`pip install Projxon-Cyber-Security-System` + + +# Usage + +## Encyrpt and Decrypt +```py +from PCSS import encrypt, decrypt, makeid, bitarray_to_text +from PCSS.hash import hash + +print(f""" +Hash of Hello_World!: {hash("Hello_World!")} +Hash of Hello_World! : {hash("Hello_World! ")} +Hash of Hello World: {hash("Hello World")} +Hash of Password#123: {hash("Password#123")} +Hash of AAAAAAAAAAAA: {hash("AAAAAAAAAAAA")} +Hash of !#!#!#!#!#!#!#!#: {hash("!#!#!#!#!#!#!#!#")} +""") +# Output: +""" +Hash of Hello_World!: 133e15fbd573507fd63714d032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032547698badcfe1032fe1032547698badcfe1032 +Hash of Hello_World! : 6ac3ec8eac8ea90aafcaeda5832107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba98fedc32107654ba9854ba98fedc32107654bfeecddc32107654ba98fedc3 +Hash of Hello World: 026b0426c4c941a2c762056789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123ef0123456789abcdef0455766789abcdef012345182439abcdef01234567 +Hash of Password#123: 7ad07a98bc5ffa9e967052b89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd23016745ab89efcd2301cd23016745ab89efcd26775445ab89efcd2301673a061b89efcd230164f5bacd23016745ab89efb +Hash of AAAAAAAAAAAA: 4fa183e5c7290b6d4fa183e56789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789ab6789abcdef012345678cddfeef0123456789abcd90acb123456789abce5f106789abcdef0123d6e0f789abcdef01234567 +Hash of !#!#!#!#!#!#!#!#: 5a781e34d2f096bc5a781e34d2f096bcdef89ab45670123cdef89ab45670123cdef89ab45670123cdef89ab45670123cdef89ab45670123cdef89ab45670123cdef23cdef89ab45670123c899baab45670123cdef89d4e8f5670123cdef8a1b5423cdef89ab456792a4b3cdef89ab456700d165ef89ab45670123cdef7067ccc +""" + +# Encode it so that we have a bytes object to pass to encrypt +text = "Hello World!" +key = "key" +# Encode it so that we have a bytes object to pass to encrypt + +encoded_text = text.encode() +encoded_key = key.encode() + +# Encrypt the text +encrypted_bitarray = encrypt(encoded_text, encoded_key) +print(encrypted_bitarray) +print(bitarray_to_text(encrypted_bitarray)) + +# Decrypt the bitarray +decrypted_bitarray = decrypt(encrypted_bitarray, encoded_key) + +# Convert it back to a string. +decrypted_text = bitarray_to_text(decrypted_bitarray) + +print(decrypted_text, text == decrypted_text) +# Hello World! True + +``` + + +## Generate id +```py +from PCSS import makeid + +print(makeid()) +# 3fbe99d84c1b9255565c79d758bebba6e011ba2ca0795c5c50d22519adaf99050e74cb261933091fc4c52d6a7581c3681557e4adf495b1cd1314579e962791efc6d5ceb9133de75cd25a20a99d50cf4b7bf927f61dfa298d69d573da101f26a973241224-a5eb-49fa-828b-f86b89d9a4745480679b-4d20-5b8a-a72b-268877dc086a +# ids will vary. +``` +These ids are garunteed to be unique, the chance of collision is about 1 / (2.42721841x10^229). +For refernce, the number of atoms in the universe is estimated to be 10^78. + diff --git a/projxon_cyber_security_system.egg-info/SOURCES.txt b/projxon_cyber_security_system.egg-info/SOURCES.txt new file mode 100644 index 0000000..ff3dc83 --- /dev/null +++ b/projxon_cyber_security_system.egg-info/SOURCES.txt @@ -0,0 +1,12 @@ +LICENSE.txt +README.md +pyproject.toml +setup.cfg +setup.py +/home/runner/Projxon-Cyber-Security-System/PCSS/__init__.py +/home/runner/Projxon-Cyber-Security-System/PCSS/hash.py +/home/runner/Projxon-Cyber-Security-System/projxon_cyber_security_system.egg-info/PKG-INFO +/home/runner/Projxon-Cyber-Security-System/projxon_cyber_security_system.egg-info/SOURCES.txt +/home/runner/Projxon-Cyber-Security-System/projxon_cyber_security_system.egg-info/dependency_links.txt +/home/runner/Projxon-Cyber-Security-System/projxon_cyber_security_system.egg-info/requires.txt +/home/runner/Projxon-Cyber-Security-System/projxon_cyber_security_system.egg-info/top_level.txt \ No newline at end of file diff --git a/Projxon_Cyber_Security_System.egg-info/dependency_links.txt b/projxon_cyber_security_system.egg-info/dependency_links.txt similarity index 100% rename from Projxon_Cyber_Security_System.egg-info/dependency_links.txt rename to projxon_cyber_security_system.egg-info/dependency_links.txt diff --git a/Projxon_Cyber_Security_System.egg-info/requires.txt b/projxon_cyber_security_system.egg-info/requires.txt similarity index 100% rename from Projxon_Cyber_Security_System.egg-info/requires.txt rename to projxon_cyber_security_system.egg-info/requires.txt diff --git a/Projxon_Cyber_Security_System.egg-info/top_level.txt b/projxon_cyber_security_system.egg-info/top_level.txt similarity index 100% rename from Projxon_Cyber_Security_System.egg-info/top_level.txt rename to projxon_cyber_security_system.egg-info/top_level.txt diff --git a/setup.py b/setup.py index 1ace666..5c3f330 100644 --- a/setup.py +++ b/setup.py @@ -1,29 +1,30 @@ import setuptools with open("README.md", "r") as fh: - long_description = fh.read() + long_description = fh.read() setuptools.setup( - name="Projxon Cyber Security System", # This is the name of the package - version="0.1.1", # The initial release version - author="Hudson Gouge", # Full name of the author - description="A fast and unbreakable encrytion system.", - long_description= - long_description, # Long description read from the the readme file - long_description_content_type="text/markdown", - packages=setuptools.find_packages( - ), # List of all python modules to be installed - download_url= - 'https://github.com/hg0428/Projxon-Cyber-Security-System/archive/refs/tags/stable-0.1.1.tar.gz', - classifiers=[ - 'Intended Audience :: Developers', # Define that your audience are developers - 'Topic :: Software Development :: Build Tools', - "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - ], # Information to filter the project on PyPi website - python_requires='>=3.7', # Minimum version requirement of the package - py_modules=["PCSS"], # Name of the python package - package_dir={'': '/home/runner/Projxon-Cyber-Security-System/' - }, # Directory of the source code of the package - install_requires=['bitarray', 'passlib']) + name="projxon_cyber_security_system", # This is the name of the package + version="0.1.1", # The initial release version + author="Hudson Gouge", # Full name of the author + description="A fast and unbreakable encrytion system.", + long_description= + long_description, # Long description read from the the readme file + long_description_content_type="text/markdown", + packages=setuptools.find_packages( + ), # List of all python modules to be installed + download_url= + 'https://github.com/hg0428/Projxon-Cyber-Security-System/archive/refs/tags/stable-0.1.1.tar.gz', + classifiers=[ + 'Intended Audience :: Developers', # Define that your audience are developers + 'Topic :: Software Development :: Build Tools', + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], # Information to filter the project on PyPi website + python_requires='>=3.7', # Minimum version requirement of the package + py_modules=["PCSS"], # Name of the python package + package_dir={'': '/home/runner/Projxon-Cyber-Security-System/' + }, # Directory of the source code of the package + install_requires=['bitarray', 'passlib'], +strict_naming=False)