Skip to main content

Simple, reusable and optimized XOR ciphers in Python (core).

Project description

xor-cipher-core

License Version Downloads Test

Simple, reusable and optimized XOR ciphers in Python (core).

xor-cipher-core is the core of xor-cipher.

Installing

Python 3.8 or above is required.

pip

Installing the library with pip is quite simple:

$ pip install xor-cipher-core

Alternatively, the library can be installed from source:

$ git clone https://github.com/xor-cipher/xor-cipher-core.git
$ cd xor-cipher-core
$ pip install .

poetry

You can add xor-cipher-core as a dependency with the following command:

$ poetry add xor-cipher-core

Or by directly specifying it in the configuration like so:

[tool.poetry.dependencies]
xor-cipher-core = "^1.1.0"

Alternatively, you can add it directly from the source:

[tool.poetry.dependencies.xor-cipher-core]
git = "https://github.com/xor-cipher/xor-cipher-core.git"

Examples

Simple Cipher

Use the xor function to perform the simple XOR cipher:

>>> from xor_cipher_core import xor
>>> xor(b"Hello, world!", 0x42)
b"\n'..-nb5-0.&c"

Cyclic Cipher

Use the cyclic_xor function to perform the cyclic XOR variation:

>>> from xor_cipher_core import cyclic_xor
>>> cyclic_xor(b"Hello, world!", b"BLOB")
b"\n)#.-`o5->#&c"

In-Place Cipher

There are functions to perform the XOR cipher in-place, on bytearray instances:

>>> from xor_cipher_core import xor_in_place
>>> data = bytearray(b"Hello, world!")
>>> xor_in_place(data, 0x42)
>>> data
bytearray(b"\n'..-nb5-0.&c")

Documentation

You can find the documentation here.

Support

If you need support with the library, you can send an email.

Changelog

You can find the changelog here.

Security Policy

You can find the Security Policy of xor-cipher-core here.

Contributing

If you are interested in contributing to xor-cipher-core, make sure to take a look at the Contributing Guide, as well as the Code of Conduct.

License

xor-cipher-core is licensed under the MIT License terms. See License for details.

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

xor_cipher_core-1.1.0.tar.gz (13.4 kB view hashes)

Uploaded Source

Built Distributions

xor_cipher_core-1.1.0-cp312-none-win_arm64.whl (96.8 kB view hashes)

Uploaded CPython 3.12 Windows ARM64

xor_cipher_core-1.1.0-cp312-none-win_amd64.whl (99.8 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

xor_cipher_core-1.1.0-cp312-none-win32.whl (94.8 kB view hashes)

Uploaded CPython 3.12 Windows x86

xor_cipher_core-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (394.7 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

xor_cipher_core-1.1.0-cp312-cp312-musllinux_1_2_i686.whl (413.5 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

xor_cipher_core-1.1.0-cp312-cp312-musllinux_1_2_armv7l.whl (492.0 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARMv7l

xor_cipher_core-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl (410.5 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

xor_cipher_core-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (223.5 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

xor_cipher_core-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (259.2 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

xor_cipher_core-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (258.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

xor_cipher_core-1.1.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (261.2 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64

xor_cipher_core-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (230.7 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

xor_cipher_core-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (231.8 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

xor_cipher_core-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (232.4 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.5+ i686

xor_cipher_core-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (167.6 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

xor_cipher_core-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl (170.8 kB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

xor_cipher_core-1.1.0-cp311-none-win_arm64.whl (96.7 kB view hashes)

Uploaded CPython 3.11 Windows ARM64

xor_cipher_core-1.1.0-cp311-none-win_amd64.whl (100.2 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

xor_cipher_core-1.1.0-cp311-none-win32.whl (95.4 kB view hashes)

Uploaded CPython 3.11 Windows x86

xor_cipher_core-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (394.9 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

xor_cipher_core-1.1.0-cp311-cp311-musllinux_1_2_i686.whl (413.4 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

xor_cipher_core-1.1.0-cp311-cp311-musllinux_1_2_armv7l.whl (492.2 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARMv7l

xor_cipher_core-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl (410.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

xor_cipher_core-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (223.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

xor_cipher_core-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (258.7 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

xor_cipher_core-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (258.8 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

xor_cipher_core-1.1.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (261.8 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64

xor_cipher_core-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (231.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

xor_cipher_core-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (232.2 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

xor_cipher_core-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (232.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.5+ i686

xor_cipher_core-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (167.7 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

xor_cipher_core-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl (170.9 kB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

xor_cipher_core-1.1.0-cp310-none-win_arm64.whl (96.8 kB view hashes)

Uploaded CPython 3.10 Windows ARM64

xor_cipher_core-1.1.0-cp310-none-win_amd64.whl (100.2 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

xor_cipher_core-1.1.0-cp310-none-win32.whl (95.4 kB view hashes)

Uploaded CPython 3.10 Windows x86

xor_cipher_core-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (395.2 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

xor_cipher_core-1.1.0-cp310-cp310-musllinux_1_2_i686.whl (413.4 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

xor_cipher_core-1.1.0-cp310-cp310-musllinux_1_2_armv7l.whl (492.4 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARMv7l

xor_cipher_core-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl (411.0 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

xor_cipher_core-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.0 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

xor_cipher_core-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (259.2 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

xor_cipher_core-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (258.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

xor_cipher_core-1.1.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (261.9 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64

xor_cipher_core-1.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (231.2 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

xor_cipher_core-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (232.5 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

xor_cipher_core-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (233.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.5+ i686

xor_cipher_core-1.1.0-cp310-cp310-macosx_11_0_arm64.whl (167.8 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

xor_cipher_core-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl (170.9 kB view hashes)

Uploaded CPython 3.10 macOS 10.12+ x86-64

xor_cipher_core-1.1.0-cp39-none-win_arm64.whl (97.1 kB view hashes)

Uploaded CPython 3.9 Windows ARM64

xor_cipher_core-1.1.0-cp39-none-win_amd64.whl (100.7 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

xor_cipher_core-1.1.0-cp39-none-win32.whl (95.6 kB view hashes)

Uploaded CPython 3.9 Windows x86

xor_cipher_core-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl (395.5 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

xor_cipher_core-1.1.0-cp39-cp39-musllinux_1_2_i686.whl (413.7 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

xor_cipher_core-1.1.0-cp39-cp39-musllinux_1_2_armv7l.whl (492.7 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARMv7l

xor_cipher_core-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl (411.1 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

xor_cipher_core-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

xor_cipher_core-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (259.6 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

xor_cipher_core-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (259.3 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

xor_cipher_core-1.1.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (262.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64

xor_cipher_core-1.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (231.5 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

xor_cipher_core-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (232.7 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

xor_cipher_core-1.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (233.3 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.5+ i686

xor_cipher_core-1.1.0-cp39-cp39-macosx_11_0_arm64.whl (167.9 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

xor_cipher_core-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl (171.4 kB view hashes)

Uploaded CPython 3.9 macOS 10.12+ x86-64

xor_cipher_core-1.1.0-cp38-none-win_arm64.whl (96.9 kB view hashes)

Uploaded CPython 3.8 Windows ARM64

xor_cipher_core-1.1.0-cp38-none-win_amd64.whl (100.4 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

xor_cipher_core-1.1.0-cp38-none-win32.whl (95.5 kB view hashes)

Uploaded CPython 3.8 Windows x86

xor_cipher_core-1.1.0-cp38-cp38-musllinux_1_2_x86_64.whl (395.4 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

xor_cipher_core-1.1.0-cp38-cp38-musllinux_1_2_i686.whl (413.5 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

xor_cipher_core-1.1.0-cp38-cp38-musllinux_1_2_armv7l.whl (492.2 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARMv7l

xor_cipher_core-1.1.0-cp38-cp38-musllinux_1_2_aarch64.whl (411.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

xor_cipher_core-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.3 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

xor_cipher_core-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (259.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

xor_cipher_core-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (259.0 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

xor_cipher_core-1.1.0-cp38-cp38-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (262.0 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64

xor_cipher_core-1.1.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (231.3 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

xor_cipher_core-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (232.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

xor_cipher_core-1.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (232.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.5+ i686

xor_cipher_core-1.1.0-cp38-cp38-macosx_11_0_arm64.whl (167.7 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

xor_cipher_core-1.1.0-cp38-cp38-macosx_10_12_x86_64.whl (171.2 kB view hashes)

Uploaded CPython 3.8 macOS 10.12+ x86-64

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