Skip to main content

A secure python library for GPU accelerated hashing.

Project description

Hashwise Python Library

This library provides a set of functions for hashing and brute forcing hashes using various algorithms. It leverages CUDA for GPU computation to speed up the process.

Source Code

The source code for this project is available on GitHub. You can access it here.

PyPi Package

The Hashwise library is also available as a package on PyPi. You can view it here.

Installation

pip install hashwise

Dependencies

The library depends on the following third-party Python packages:

  • tqdm
  • pathlib

It also requires CUDA libraries for GPU computation. The required Dynamic-Link Library (DLL) is expected to be located in the "cuda-libraries" directory relative to the location of the library file.

Functions

The library provides the following functions:

  • blake2b(payload:bytes)
  • blake2s(payload:bytes)
  • md5(payload:bytes)
  • sha1(payload:bytes)
  • sha224(payload:bytes)
  • sha256(payload:bytes)
  • sha384(payload:bytes)
  • sha512(payload:bytes)
  • sha3_224(payload:bytes)
  • sha3_256(payload:bytes)
  • sha3_384(payload:bytes)
  • sha3_512(payload:bytes)
  • shake_128(payload:bytes, length:int)
  • shake_256(payload:bytes, length:int)

These functions take a byte as input and return the hashed value of the input.

The library also provides the following functions for brute forcing hashes:

  • brute_force_hash(hash_algorithm, possible_elements, target:str, len_permutation:int=None, string_encoding:str='utf-8', use_gpu=None, numBlocks=32, numThreadsPerBlock=32, show_progress_bar=False)
  • brute_force_time_estimate(hash_algorithm, possible_elements, length:int=None, string_encoding:str='utf-8', units='seconds', num_trials=None)

The brute_force_hash function attempts to find the original value of a hashed string by brute force. The brute_force_time_estimate function estimates the time it would take to brute force a hashed string using a specified hash algorithm and possible elements.

Exceptions

The library defines the following exceptions:

  • DependencyNotFoundError
  • GPUNotAccessibleError
  • NotImplementedError
  • UnknownGPUError

These exceptions are raised when there are issues with dependencies, GPU access, or unknown errors during computation.

Usage

In order to see if a CUDA-enabled GPU is available, call the following:

import hashwise

# Returns a list of all the GPU devices available. An empty list means that no GPUs were found.
hashwise.DeviceStatus.devices()

# Alternatively, this method will return true if a GPU is available and false if otherwise.
hashwise.DeviceStatus.device_available()

To use the library, import the required functions and call them with the appropriate arguments. For example:

hashed_value = hashwise.sha256(b'hello world')
original_value = hashwise.brute_force_hash(hashwise.sha256, 'abcdefghijklmnopqrstuvwxyz', hashed_value)

This will hash the string 'hello world' using the SHA256 algorithm, and then attempt to find the original value of the hashed string by brute force.

Additionally, we can specify the following parameters to enable GPU acceleration and specify the number of blocks and threads to be allocated. If these numbers aren't defined, an estimate of the optimal configuration will be used.

original_value = hashwise.brute_force_hash(
    hash_algorithm=hashwise.sha256,
    possible_elements="abcdefghijklmnopqrstuvwxyz",
    target=hashwise.sha256(b'hello world'),
    use_gpu=True,
    numBlocks=512,
    numThreadsPerBlock=64
)

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

hashwise-0.0.4.tar.gz (412.5 kB view details)

Uploaded Source

Built Distribution

hashwise-0.0.4-py3-none-any.whl (411.7 kB view details)

Uploaded Python 3

File details

Details for the file hashwise-0.0.4.tar.gz.

File metadata

  • Download URL: hashwise-0.0.4.tar.gz
  • Upload date:
  • Size: 412.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for hashwise-0.0.4.tar.gz
Algorithm Hash digest
SHA256 69fda425e4bad5fb1320f177b7fb5513f6fd96f7c5a86012a0fe3e7fe4878339
MD5 d7cd796e961a4a37d41df94935df9256
BLAKE2b-256 5cec7b522f534a41afd0873bafbc3ea567190a37e0ec62fe3af53f4c4380f687

See more details on using hashes here.

File details

Details for the file hashwise-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: hashwise-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 411.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for hashwise-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fa01bab4e1b6f5c92a4de1c833adfb8bb5cd3e7bc195629132a2a3f7a258ce83
MD5 66228dfe33ebd5e8e622a5e9fd473016
BLAKE2b-256 405b112b5577c8b75e55509447b831e2269f2361cf07c56dfcc0bd567d56c79a

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