Skip to main content

Implementation of random checksum protocol

Project description

RCP - Random Checksum Protocol

RCP's main use case is providing a checksum to validate requests between HTTP Servers. Therefore each server has a shared secret to which all the others have to have access to.

How to implement

  • Put all your data from your POST or GET Request in a dictionary
  • Sort the dictionary alphanumerical by its keys.
  • Concat its values to the respective key and join them: key1value1key2value2...
    • Note: When using non str values:
      • bool is represented as "true" or "false"
  • Append the shared secret of your target
  • Append current utc timestamp (unix epoch - just seconds)
  • Optional: Add a salt (this may be the method's endpoint): saltkey1value1...
  • Hash with SHA512
  • Represent the hash as hex string (lowercase)
  • The endpoint you're trying to reach should have the position stated, where the checksum should be put. This may be as a key in a POST request, or via Authentication Header.

Watch out As this protocol heavily depends on retrieving the correct time, it may be required to enable NTP on your servers.

How to use the reference implementation

Get checksum

from rc_protocol import get_checksum

SHARED_SECRET = "s3cr3t_p@ssw0rd"

my_dict = {
    "key1": "value1",
    "key2": "value2"
}

checksum = get_checksum(my_dict, SHARED_SECRET)

Validate checksum

from rc_protocol import validate_checksum

SHARED_SECRET = "s3cr3t_p@ssw0rd"

my_dict = {
    "key1": "value1",
    "key2": "value2",
}
checksum = "d0690e3c924e18bad866e2867698be75f64bdc6e809b76ffedb5c5095c9fbe15d36636b2df1fc47d2a3f348aea272ffc2fed4dc8ee08e0d13631ef646e1648c4"

if validate_checksum(my_dict, checksum, SHARED_SECRET):
    do_random_things()
else:
    print("You shall not pass.")

Implementations

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

rc-protocol-1.0.0.tar.gz (10.0 kB view details)

Uploaded Source

File details

Details for the file rc-protocol-1.0.0.tar.gz.

File metadata

  • Download URL: rc-protocol-1.0.0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.63.0 CPython/3.10.2

File hashes

Hashes for rc-protocol-1.0.0.tar.gz
Algorithm Hash digest
SHA256 202da7abe4e3dfb7a8281acc7dc28d1c7b777dc35cd6ebf4b827d4db1a145883
MD5 0751fa5311d90190f88eeac3423f4bf5
BLAKE2b-256 6eb7ac032bf25daf73bc212c6c9d6ab55e6e3b6ef69b30ad07b2ff71be1e8803

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page