Skip to main content

Pseudonymize data like text, email addresses or license tags.

Project description

gocept.pseudonymize

This package provides helper functions to pseudonymize data like text, integers, email addresses or license tags.

It uses the crypt module for pseudonymization, which means, it is not eligible to pseudonymize long text blocks as the hash generated by crypt is relatively short.

Usage

gocept.pseudonymize provides single functions for pseudonymization of various data types. Each function takes the value, which should be pseudonymized, and a secret, which is passed as a salt to the crypt module. If secret and value do not change the pseudonymize function returns the exact same result when called again:

>>> import gocept.pseudonymize
>>> gocept.pseudonymize.text('asdf', 'secret')
'dugD'
>>> gocept.pseudonymize.text('asdf', 'secret')
'dugD'

The result has always the same string lenth as the input. But there is no guaranty that it is still valid in the domain of the input value. For example the checksum of the pseudonymized IBAN is not correct.

This package is tested to be compatible with Python version 2.7 and 3.3.

Detailed usage examples

There are different pseudonymization function because it is not always possible to guess the correct one by looking at the input data.

  • For an integer value use the integer function:

    >>> gocept.pseudonymize.integer(4711, 'secret')
    2111
  • For a decimal value use the decimal function:

    >>> from decimal import Decimal
    >>> gocept.pseudonymize.decimal(Decimal('-123.45'), 'secret')
    Decimal('-8772.11')
  • For an email address use the email function:

    >>> gocept.pseudonymize.email('mail@gocept.com', 'secret')
    'w6ba@nG7NGno.de'
  • For an IBAN account number use the iban function:

    >>> gocept.pseudonymize.iban('US00123456787650047623', 'secret')
    'DE10312010975100119998'
  • For a license tag of a car use the license_tag function:

    >>> gocept.pseudonymize.license_tag('HAL-AB 123', 'secret')
    'PUD-AM 117'
  • For a phone number use the phone function:

    >>> gocept.pseudonymize.phone('+49 172 34123142', 'secret')
    '0104118118111676'
  • For a date use the date function:

    >>> from datetime import date
    >>> gocept.pseudonymize.date(date(1983, 1, 11), 'secret')
    datetime.date(3021, 1, 18)
  • For a date represented as string use the datestring function. It takes a format string and keeps zeros date parts as zero.:

    >>> gocept.pseudonymize.datestring('00/03/2003', 'secret', format='DD/MM/YYYY')
    '00/10/7399'
  • For a time value use the time function:

    >>> from datetime import time
    >>> gocept.pseudonymize.time(time(23, 59, 59), 'secret')
    datetime.time(13, 11, 49)

There are some additional pseudonymizer functions and helper functions in this package.

Running tests

The tests are run using tox. See its documentation for details.

Developing gocept.pseudonymize

Author:

gocept <mail@gocept.com>

Online documentation:

http://pythonhosted.org/gocept.pseudonymize/

PyPI page:

http://pypi.python.org/pypi/gocept.pseudonymize/

Issues:

report by e-mail

Source code:

https://bitbucket.org/gocept/gocept.pseudonymize/

Current change log:

https://bitbucket.org/gocept/gocept.pseudonymize/raw-file/tip/CHANGES.txt

Change log

0.3 (2013-10-09)

  • Fix tests in documentation + testing documentation now.

  • Add new pseudonymizers:

    • .datestring

    • .day

    • .month

    • .year

  • Caution: Due to changed implementation of the .date function it returns different values than in version 0.2.

0.2 (2013-09-06)

  • .date does not return pseudonymized years smaller than 1900 anymore as datetime.date can not handle years smaller that 1900.

0.1 (2013-09-05)

  • Initial release.

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

gocept.pseudonymize-0.3.zip (15.4 kB view hashes)

Uploaded Source

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