Skip to main content

Class for pickling and encrypting data

Project description

EncryptedPickle is Python class for encrypting and signing data with support for versions, serialization, compression, and passphrase generations (rotation).

It’s partly inspired by iron but isn’t compatible with.

Example Usage

from encryptedpickle import encryptedpickle

passphrases = {
    0: 'Change me! CHange me! CHAnge me! CHANge me!'
       'CHANGe me! CHANGE ME! CHANGE Me! CHANGE ME!'
}

data = {'example': 123, 'test': 'testing'}

encoder = encryptedpickle.EncryptedPickle(signature_passphrases=passphrases,
                                          encryption_passphrases=passphrases)

print("* data: %s" % data)

sealed = encoder.seal(data)
print("* sealed: %s" % sealed)

unsealed = encoder.unseal(sealed)
print("* unsealed: %s" % unsealed)

Customization Example

from encryptedpickle import encryptedpickle

# You can use different passphrases for signature and encryption
signature_passphrases = {
    0: 'change me! change me! change me! change me!'
       'change me! change me! change me! change me!'
}

encryption_passphrases = {
    0: 'Change me! CHange me! CHAnge me! CHANge me!'
       'CHANGe me! CHANGE ME! CHANGE Me! CHANGE ME!'
}

data = {'example': 123, 'test': 'testing'}

encoder = encryptedpickle.EncryptedPickle(signature_passphrases,
                                          encryption_passphrases)

encryption = {
    # Add new encryption algorithm specification with id = 255.
    # Default algorithms can not be overridden so we must use some other
    # id, maybe best starting with 255 (maximum id) and decreasing by one
    # for next added algorithm.
    255: {
        # Algorithm name defined in EncryptedPickle.ALGORITHMS.
        'algorithm': 'aes-256-cbc',

        # Salt size for PBKDF2 key.
        'salt_size': 32,

        # Digest mode for PBKDF2 key.
        'pbkdf2_algorithm': 'sha256',

        # Use 10 iterations in PBKDF2 key generation.
        'pbkdf2_iterations': 10,
    },
}
encoder.set_algorithms(encryption=encryption)

options = {
    # Use above defined encryption algorithm (id = 255).
    'encryption_algorithm_id': 255,

    # Use "gzip-deflate" (id = 1) algorithm for compression.
    #
    # Be carefull with this option, because compression is applied before
    # encryption and "Crime" attack is possible if third party can modify
    # data that is encrypted. For more info see:
    #
    # https://www.isecpartners.com/news-events/news/2012/september/details-on-the-crime-attack.aspx
    #
    'compression_algorithm_id': 1,

    # Add timestamp to header (unencrypted).
    'flags': {
        'timestamp': True,
    },
}
encoder.set_options(options)

sealed = encoder.seal(data)
print("* sealed: %s" % sealed)

unsealed, unsealed_options = encoder.unseal(sealed, return_options=True)
print("* unsealed: %s" % unsealed)
if unsealed_options['info']['timestamp']:
    print("* timestamp: %d" % unsealed_options['info']['timestamp'])

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

EncryptedPickle-0.1.4.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

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

EncryptedPickle-0.1.4.linux-x86_64.exe (72.7 kB view details)

Uploaded Source

File details

Details for the file EncryptedPickle-0.1.4.tar.gz.

File metadata

File hashes

Hashes for EncryptedPickle-0.1.4.tar.gz
Algorithm Hash digest
SHA256 969464c4d6604d6b9fc15a6865df84d3fcb788c9f29bf984d0c8af9809bafc8c
MD5 9ad1b31aecef7c978c939d6f1d399f35
BLAKE2b-256 536831719327e2bc064bca2e69f923262f2b42c43aeef4869157a1f5218a0fb2

See more details on using hashes here.

File details

Details for the file EncryptedPickle-0.1.4.linux-x86_64.exe.

File metadata

File hashes

Hashes for EncryptedPickle-0.1.4.linux-x86_64.exe
Algorithm Hash digest
SHA256 147ae5458ec0b5bd9f996a0dbbb05267defe26b7736f5e9a587246bab2ebcdd0
MD5 6404f0c2b9053defc0bdc9beab929a89
BLAKE2b-256 dcab57195409ccf04267de4393056b7447466506f35ecd116b09cb038da8d43f

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