Skip to main content

Cryptographic utilities for Musicfox Python applications.

Project description

mfcrypt

AES encryption and decryption utilities for Musicfox JavaScript + Python applications and services. Plain Jane CBC encryption with HMAC (using sha256) payload authentication for both languages.

mfcrypt aims to offer the same API regardless of using JavaScript or Python. Save your data at rest in a database and access it from either language, as long as you know the key.

Motivation

The JavaScript and Python mfcrypt utilities are particularly simple/straightforward implementations of multi-layerd encryption within Musicfox software. In particular, it is important to be able to doubly encrypt data during application data SSL transport, at-rest under major-3rd party encryption (Google), and to separate concerns/implementations via completely different systems.

Combined with access restrictions underneath fortified enterprise authorization schemes, users' data are separated, encrypted, and always inaccessible by default. Multiple layers of service authorization and identification are required prior to any data utilized in plaintext.

Installation

It's easy to install the JavaScript and Python libraries. They're small and offered on npm and pypi.

JavaScript

Install via npm or yarn, e.g.

npm i --save-dev @musicfox/mfcrypt.

⚠️ Remove --save-dev if you're unsure!

Python

Install via pypi.

  • with Pip: pip install --upgrade mfcrypt
  • with Pipenv: pipenv install mfcrypt
  • with Poetry: poetry install mfcrypt

⚠️ Use --dev if this is an upstream dependency of your lib/app, rather than your dev environment.

Quick start JavaScript

For detailed usage examine the code in examples/javascript/ within the repo and the test suitefound in src/test/.

But the gist (we'll generate a simple bytes PDKDF2 key using the library):

// myEncryptionScript.js
import { createBytesKey, encrypt } from '@musicfox/mfcrypt';

const mySecretPassphrase = 'really I should encrypt this too, and generate it randomly. DO NOT use words like this. Tha NSA will break me.';
const salt = 'randomly generated salt';

const encStringData = await encrypt('TOP SECRET STRING DATA', mySecretPassphrase, salt);
const decStringData = await decrypt(encStringData, mySecretPassphrase, salt, 'string'); // give it a type hint at the end, you'll be happy you did ;-)

Quick start Python

For detailed usage examine the code in examples/python, which contains a Python Flask application you can test out. In addition, you can always examine usage via the test suite found in the test directory.

import mfcrypt

my_secret_passphrase = 'really I should encrypt this too, and generate it randomly. DO NOT use words like this. Tha NSA will break me.'
salt = 'randomly generated salt' 
enc_string_data = encrypt('TOP SECRET STRING DATA', my_secret_passphrase, salt)
dec_string_data = decrypt(enc_string_data, my_secret_passphrase, salt, type_hint='string')

Over-the-wire

This particular implementation is meant to work with Python HTTP webservices. As such, you should be able to use your code above to send encrypted data which may be decrypted via a Python service.

Support

File an issue or ask a question via Github.

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

mfcrypt-0.0.7.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

mfcrypt-0.0.7-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file mfcrypt-0.0.7.tar.gz.

File metadata

  • Download URL: mfcrypt-0.0.7.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.5

File hashes

Hashes for mfcrypt-0.0.7.tar.gz
Algorithm Hash digest
SHA256 1344eaaf86628f6506b22e2fc154343b88810809db2ab561b48ffe7e192d7994
MD5 1705ca5abe2e698f2d301c038f0dea76
BLAKE2b-256 7012e72df7f99b4b1f0a22aa3f7c8f4bb99e5a7d59ebb8008b4f7adbdbc17b9d

See more details on using hashes here.

File details

Details for the file mfcrypt-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: mfcrypt-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.5

File hashes

Hashes for mfcrypt-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 36b46d0b7261c644473aaca60c2c36ed3476364359cd0d37181e229978f8a616
MD5 1aed9b1fb0f6b3e74b6378b4cf20e7c3
BLAKE2b-256 f214ca623d74ec523a0c363d9a22f9c716663928300f7db16b45660a3299fa18

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