A COMMUNICATION PROTOCOL FOR COMPUTERS TO COMMUNICATE THROUGH A SAFE CHANNEL
Project description
CYPHER_PROTOCOL
-
This is a type of communication protocol made for computers using TCP sockets.
-
This is a highly secure and trust worthy protocol made using tcp sockets. It uses aggressively secure encryption AES-128 bit algorithm both the ways for a tight security
ISSUES WITH OTHER PROTOCOLS
-
Other protocols give errors when some error occurs and we have to handle it manually to remove it or to continue the process in the same sequence but CYPHER_PROTOCOL does that error handling automatically and the users are more free to focus on the flow instead of error handling.
-
Whenever some error occurs in recieving data or sending data it resolves it automatically.
-
Whenever it notices a disconnection from server it automatically connects to the server.
COMPATIBLITY
-
CYPHER_PROTOCOL works with Linux, OS-X, and Windows (OS INDEPENDENT).
-
But it may give better experience on linux.
INSTALLATION
Install it using pip.
- Goto PYPI
HOW TO USE ?
-
Encryption key is a 32 character encryption key for the server and decryption key for client
-
Decryption key is a 32 character decryption key for server and encryption key for the client
-
Altough encryption and decryption key can be kept same for any reason
-
request_processor in server initialisation is a method/function that user have to define and it is used to process the request recieved from client
-
responce_processor in client initialisation is a method/function that user have to define and it is used to process the responce recieved from server
-
Server's request handler recieves the request in the form :
{
"PATH": str,
"OPERATION": str,
"DATA": YOUR_DATA_HERE,
"METADATA": dict
}
-
But it can also be modified as per needs
-
"PATH" is like the path we see in http protocol and here it is "/" by default
-
"OPERATION" is operation we have to perform like "UPDATE", "DELETE", "READ", "CREATE" etc. Also you can create your own type of operation if u want to its just for convenience
-
"DATA" contains data that u wanna share between the server and the client
-
"METADATA" contains data that u may need to use, its completely optional
SERVER
import time
import traceback
from CYPHER_PROTOCOL.CYPHER_SERVER.cypher_server import CYPHER_SERVER
SEQUENCE = []
NUMBER = 0
def request_processor(data: dict, ip_port: tuple) -> dict :
global SEQUENCE
global NUMBER
print(data)
if data["PATH"] == "/SEQUENCE" :
if data["OPERATION"] == "UPDATE" :
SEQUENCE.append(data["DATA"])
if len(SEQUENCE) > 10 :
SEQUENCE.pop(0)
responce = {"PATH": data["PATH"], "OPERATION": data["OPERATION"], "METADATA": data["METADATA"]}
responce["DATA"] = "UPDATED"
return responce
elif data["OPERATION"] == "READ" :
responce = {"PATH": data["PATH"], "OPERATION": data["OPERATION"], "METADATA": data["METADATA"]}
responce["DATA"] = SEQUENCE
return responce
elif data["PATH"] == "/NUMBER" :
if data["OPERATION"] == "UPDATE" :
NUMBER = data["DATA"]
responce = {"PATH": data["PATH"], "OPERATION": data["OPERATION"], "METADATA": data["METADATA"]}
responce["DATA"] = "UPDATED"
return responce
elif data["OPERATION"] == "READ" :
responce = {"PATH": data["PATH"], "OPERATION": data["OPERATION"], "METADATA": data["METADATA"]}
responce["DATA"] = NUMBER
return responce
SERVER_OBJECT = CYPHER_SERVER(12345, "2ZpK1CdQfm0s1EZ1SIhYfV7MHdJf8X3U", "2ZpK1CdQfm0s1EZ1SIhYfV7MHdJf8X3U", request_processor)
SERVER_OBJECT.start_server()
time.sleep(60*5)
SERVER_OBJECT.stop_server()
CLIENT
import threading
import time
import random
from CYPHER_PROTOCOL.CYPHER_CLIENT.cypher_client import CYPHER_CLIENT
def responce_processor(responce: dict) :
print(responce)
def request_maker() :
global CLIENT_OBJECT
while True :
request = {"PATH": "/SEQUENCE", "OPERATION": "UPDATE", "DATA": random.randint(0,1000), "METADATA": {}}
CLIENT_OBJECT.make_request(path = request["PATH"], operation = request["OPERATION"], data = request["DATA"], metadata = request["METADATA"])
time.sleep(1)
request = {"PATH": "/SEQUENCE", "OPERATION": "READ", "METADATA": {}}
CLIENT_OBJECT.make_request(path = request["PATH"], operation = request["OPERATION"], metadata = request["METADATA"])
#$$$$$$$$$$#
request = {"PATH": "/NUMBER", "OPERATION": "UPDATE", "DATA": random.randint(0,1000), "METADATA": {}}
CLIENT_OBJECT.make_request(path = request["PATH"], operation = request["OPERATION"], data = request["DATA"], metadata = request["METADATA"])
time.sleep(1)
request = {"PATH": "/NUMBER", "OPERATION": "READ", "METADATA": {}}
CLIENT_OBJECT.make_request(path = request["PATH"], operation = request["OPERATION"], metadata = request["METADATA"])
CLIENT_OBJECT = CYPHER_CLIENT("127.0.0.1", 12345, "2ZpK1CdQfm0s1EZ1SIhYfV7MHdJf8X3U", "2ZpK1CdQfm0s1EZ1SIhYfV7MHdJf8X3U", responce_processor)
CLIENT_OBJECT.connect()
THREAD = threading.Thread(target=request_maker, args=())
THREAD.start()
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cypher_protocol_P-Y-R-O-B-O-T-1.0.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39f50db1f6d375f214b0e846b5357c631e5c94dc8dce6de9075834a61fc5848e |
|
MD5 | 16720f19c55bccb206a4656843f2816e |
|
BLAKE2b-256 | e2389fab311fad218ffb4e6e2b98bb6ebb77e6819b3e2f75809cb653de0d99e1 |
Hashes for cypher_protocol_P_Y_R_O_B_O_T-1.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e3a4ba6a1bfdfe42ae6572241d2c7ed590aca136c794db959fd01434cda62e29 |
|
MD5 | e87bfe80ed72d71d8425653e9576d75e |
|
BLAKE2b-256 | a556075b7a92fb6ee1add8c0b1bfcfcd220a005085ab61e4bfbe42b26161ffda |