Skip to main content

Python wrapper for the Firebase scrypt password hashing utility

Project description

pyscryptfirebase

A Python wrapper of Firebase's custom scrypt implementation. A combined fork of scrypt and Firebase scrypt.

Firebase scrypt for password hashing: https://github.com/firebase/scrypt

Python library for scrypt: https://bitbucket.org/mhallin/py-scrypt/src/default/

Instructions

Note that if you have the Python module scrypt installed, you will need to remove it to use this library. This library is a fork of scrypt and uses a modified C extension by the same name as scrypt. Using both libraries at the same time will cause a naming collision on the C module _scrypt.

Install dependencies according to your Python version and OS:

# Debian/Ubuntu
$ sudo apt-get install build-essential libssl-dev python-dev

# Fedora, RHEL
$ sudo yum install gcc openssl-devel python-devel

# Alpine Linux (Docker Containers)
$ apk add gcc openssl-dev python-dev

# (If you're on Python3, install the Python3 versions of the above packages)

# Mac
# Without setting the flags below, install will fail to find the necessary files
$ brew install openssl
$ export CFLAGS="-I$(brew --prefix openssl)/include $CFLAGS"
$ export LDFLAGS="-L$(brew --prefix openssl)/lib $LDFLAGS"

Then install pyscriptfirebase:

$ pip install pyscriptfirebase

Example

This module is intended to give the same output as the scrypt password hashing function that Firebase uses.

Firebase Scrypt Utility example:

# Params from the project's password hash parameters
base64_signer_key="jxspr8Ki0RYycVU8zykbdLGjFQ3McFUH0uiiTvC8pVMXAn210wjLNmdZJzxUECKbm0QsEmYUSDzZvpjeJ9WmXA=="
base64_salt_separator="Bw=="
rounds=8
memcost=14

# Params from the exported account
base64_salt="42xEC+ixf3L2lw=="

# The users raw text password
password="user1password"

# Generate the hash
# Expected output:
# lSrfV15cpx95/sZS2W9c9Kp6i/LVgQNDNC/qzrCnh1SAyZvqmZqAjTdn3aoItz+VHjoZilo78198JAdRuid5lQ==
echo `./scrypt "$base64_signer_key" "$base64_salt" "$base64_salt_separator" "$rounds" "$memcost" -P <<< "$password"`

pyscryptfirebase example:

import base64

import pyscryptfirebase


base64_signer_key = base64.b64decode("jxspr8Ki0RYycVU8zykbdLGjFQ3McFUH0uiiTvC8pVMXAn210wjLNmdZJzxUECKbm0QsEmYUSDzZvpjeJ9WmXA==")
base64_salt_separator = base64.b64decode("Bw==")
rounds = 8
memcost = 14

base64_salt = base64.b64decode("42xEC+ixf3L2lw==")
password = "user1password"

# Expected output:
# lSrfV15cpx95/sZS2W9c9Kp6i/LVgQNDNC/qzrCnh1SAyZvqmZqAjTdn3aoItz+VHjoZilo78198JAdRuid5lQ==
output = pyscryptfirebase.encrypt(
    base64_signer_key,
    base64_salt,
    base64_salt_separator,
    rounds,
    memcost,
    password
)
encoded_output = base64.b64encode(result)
print(encoded_output)

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

pyscryptfirebase-0.0.2.tar.gz (41.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyscryptfirebase-0.0.2-cp38-cp38-macosx_10_14_x86_64.whl (20.2 kB view details)

Uploaded CPython 3.8macOS 10.14+ x86-64

File details

Details for the file pyscryptfirebase-0.0.2.tar.gz.

File metadata

  • Download URL: pyscryptfirebase-0.0.2.tar.gz
  • Upload date:
  • Size: 41.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.1

File hashes

Hashes for pyscryptfirebase-0.0.2.tar.gz
Algorithm Hash digest
SHA256 a81f3336fd391a3161a63cfa77d7a517eb23e599b333528b036a933ef32d95f7
MD5 4e98cb8621ce9f164ab075a2fe839d04
BLAKE2b-256 eb26982aa8e5de7edf3696e278c3ef5b52c663b0a2e5691b90bf84195016c759

See more details on using hashes here.

File details

Details for the file pyscryptfirebase-0.0.2-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: pyscryptfirebase-0.0.2-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.1

File hashes

Hashes for pyscryptfirebase-0.0.2-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 32a912b396d4b470ccdc29ffc337cfc6550ecdfe43dac9121486bc5d366237eb
MD5 e540e3466b3101e71f16f9ad9353000a
BLAKE2b-256 42dd87f3bc0481d7363f2731dc96b7c599d655f4ab9fa49ee25143cbe63b3aab

See more details on using hashes here.

Supported by

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