Skip to main content

gocept.pseudonymize

https://img.shields.io/pypi/v/gocept.pseudonymize.svg https://img.shields.io/pypi/pyversions/gocept.pseudonymize.svg https://github.com/gocept/gocept.pseudonymize/workflows/tests/badge.svg https://coveralls.io/repos/github/gocept/gocept.pseudonymize/badge.svg?branch=master

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

It uses the crypt.crypt() function for pseudonymization, which means, longer text blocks require multiple crypt.crypt() calls.

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('Here is my little text', 'secret')
'u7YJWz RqdYkfNUFgZii2Y'
>>> gocept.pseudonymize.text('Here is my little text', 'secret')
'u7YJWz RqdYkfNUFgZii2Y'

The result has always the same string length 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, 3.5 up to 3.8.

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 a name use the name function:

    >>> gocept.pseudonymize.name('Vimladil', 'secret')
    'R5lprkud'
  • For an address consisting of street and house number use the street function:

    >>> gocept.pseudonymize.street('Testweg 34a', 'secret')
    'Kui1xre 723'
  • 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 BIC (Business Identifier Code) use the bic function:

    >>> gocept.pseudonymize.bic('PBNKDEFFXXX', 'secret')
    'GTY1BPG8PE2'
  • 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:

https://github.com/gocept/gocept.pseudonymize/issues

Source code:

https://github.com/gocept/gocept.pseudonymize

Current change log:

https://raw.githubusercontent.com/gocept/gocept.pseudonymize/master/CHANGES.rst

Change log

3.0 (2023-07-18)

  • Drop support for Python 2.7, 3.3, 3.4, 3.5, 3.6.

  • Add support for Python 3.7, 3.8, 3.9, 3.10, 3.11.

  • Drop support for PyPy implementation. The crypt module is currently not working with PyPy3.

2.0.1 (2017-03-22)

2.0 (2017-03-20)

Backwards incompatible changes

  • A value pseudonymized by text() no longer contains full stops, they are converted to spaces. Thus the pseudonymized values may change since version 1.1. (string() now has the former behavior of text(), see below.)

  • email() now returns its result in all lower case.

Features

  • Add string() pseudonymizer returning a string containing numbers, digits and full stops. (This is what text() formerly did.)

Bug fixes

  • Fix all pseudonymizers: if called with a value which evaluates to False the value is returned. But integer() still pseudonymizes 0.

  • Fix email() so it does not break on an input value which does not contain an @ symbol.

1.1 (2017-03-16)

  • Add street() pseudonymizer.

  • Add bic() (business identifier code) pseudonymizer.

1.0 (2017-03-16)

New features

  • Add name() pseudonymizer.

Other changes

  • Claim support for PyPy.

  • Officially support Python 3.4, 3.5 and 3.6.

  • Bring test coverage to 100 % even for code branches and enforce it for the future.

  • Re-license from ZPL to MIT.

0.4.1 (2014-01-14)

  • Fix handling of usage of glibc2 supported additional encryption algorithms ( signalled using $<id>$<salt>$ as salt).

0.4 (2014-01-14)

  • Bugfix: text() pseudonymizer now works as expected for texts longer than 11 bytes. Previously it returned an 11 byte result for longer texts ignoring the part after the 11th byte (default behavior of the used crypt implementation). (#1296)

  • Fixed handling of Extended crypt (signalled by starting the salt with an underscore): Salt is now correctly stripped from result. Caution: This leads to different pseudonymization results when using a secret starting with underscore than in version 0.3.

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.

Release files for gocept.pseudonymize 3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gocept.pseudonymize 3.0
File Size Uploaded
gocept.pseudonymize-3.0.tar.gz 12.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gocept.pseudonymize 3.0
File Interpreter ABI Platform
gocept.pseudonymize-3.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 23.3 kB

Release files / gocept.pseudonymize-3.0.tar.gz

Download URL gocept.pseudonymize-3.0.tar.gz
Size 12.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2bae9a004cdeb6d286d0d423f4af72960686bbfaecbaa7ff83232b243e1e9f6c
BLAKE2b-256 checksum
How to use checksums
e78f76e11f19854b85972ea5952b569ee1fffba60f3f67d7b494f823b3fb6854
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release files / gocept.pseudonymize-3.0-py2.py3-none-any.whl

Download URL gocept.pseudonymize-3.0-py2.py3-none-any.whl
Size 10.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
ce7c7077837cdecd749c2b642fab28b4aaeb234aa649264bfa8b3d260c23c7af
BLAKE2b-256 checksum
How to use checksums
262f191351ae65bb910c9aee591925ae521ea479a1200aeaf2482446eef4a1d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

3.0 This release

2 release files

2.0.1

1 release file

2.0

1 release file

1.1

1 release file

1.0

1 release file

0.4.1

1 release file

0.4

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page