Skip to main content

Pure Python implementation of the binary-to-text encoding from RFC 1751, S/Key

Project description

This is a Pure-Python implementation of RFC 1751.

Using this small library, you can turn binary strings (for example IDs or passwords) into small sequences of short English words. For example:

EB33 F77E E73D 4053

would become:

TIDE ITCH SLOW REIN RULE MOT

The algorithm turns a 64-bit string into 6 English words and vice versa. Two bits of parity are included in the sequence of words, which allow detecting an invalid or corrupted phrase.

Usage

>>> # Simple conversion from string or bytes
>>> rfc1751.bytes_to_string([204, 172, 42, 237, 89, 16, 86, 190])
'RASH BUSH MILK LOOK BAD BRIM'
>>> rfc1751.bytes_to_string(b'\xCC\xAC\x2A\xED\x59\x10\x56\xBE')
'RASH BUSH MILK LOOK BAD BRIM'

>>> # You can specify the separator or get a sequence
>>> rfc1751.bytes_to_string(b'\xCC\xAC\x2A\xED\x59\x10\x56\xBE', sep='-').lower()
'rash-bush-milk-look-bad-brim'
>>> rfc1751.bytes_to_words(b'\xCC\xAC\x2A\xED\x59\x10\x56\xBE')
['RASH', 'BUSH', 'MILK', 'LOOK', 'BAD', 'BRIM']

>>> # Conversion back
>>> rfc1751.string_to_bytes('RASH BUSH MILK LOOK BAD BRIM')
b'\xCC\xAC\x2A\xED\x59\x10\x56\xBE'
>>> list(rfc1751.string_to_bytes('RASH BUSH MILK LOOK BAD BRIM'))
[204, 172, 42, 237, 89, 16, 86, 190]

>>> # You can specify the separator or give a sequence
>>> rfc1751.string_to_bytes('rash-bush-milk-look-bad-brim', sep='-')
b'\xCC\xAC\x2A\xED\x59\x10\x56\xBE'
>>> rfc1751.words_to_bytes(['rash', 'bush', 'milk', 'look', 'bad', 'brim'])
b'\xCC\xAC\x2A\xED\x59\x10\x56\xBE'

>>> # You can also use a custom alphabet as long as it is 2048 words
>>> custom_rfc1751 = rfc1751.Rfc1751(custom_2048_words)
>>> custom_rfc1751.bytes_to_string([204, 172, 42, 237, 89, 16, 86, 190])
'SMILE GENUINE ROBUST RATE AIR GAME'
>>> list(custom_rfc1751.string_to_bytes('SMILE GENUINE ROBUST RATE AIR GAME'))
[204, 172, 42, 237, 89, 16, 86, 190]

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

rfc1751-1.0.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

rfc1751-1.0.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file rfc1751-1.0.0.tar.gz.

File metadata

  • Download URL: rfc1751-1.0.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for rfc1751-1.0.0.tar.gz
Algorithm Hash digest
SHA256 448e017ea19fd8f006b3dc88279dd65a62dfea78874f6eb16a7249fabc771ce8
MD5 ed12e731c3db72e339caa55ee4144213
BLAKE2b-256 a8b334f058605134993f6886418120a2ce64f25ff4e35a3f2879872be124f974

See more details on using hashes here.

File details

Details for the file rfc1751-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: rfc1751-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for rfc1751-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3541bb8db86e7b55a8d467572330bcd1a0d3558a0413dccafa23ad4bed22b7a2
MD5 82429bd1803f87dc3715b955276dad9a
BLAKE2b-256 00ebed2daece2b2f0dead3f05127a387540fb628d5048c02c4ca70fb6c65fa46

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