@dunkelhaiser/caesar-cipher
v2.0.5
Published
Implementation of the Caesar Cipher encryption algorithm in JavaScript. The Caesar Cipher is a classic substitution cipher technique where each letter in the plaintext is shifted a certain number of places down or up the alphabet.
Downloads
284
Maintainers
Readme
Caesar-Cipher
Implementation of the Caesar Cipher encryption algorithm in JavaScript. The Caesar Cipher is a classic substitution cipher technique where each letter in the plaintext is shifted a certain number of places down or up the alphabet.
Features
- TypeScript and JSDoc support
- User-defined alphabets
- Support of array inputs and returns
- Encryption and decryption
Installation
npm install @dunkelhaiser/caesar-cipher
yarn add @dunkelhaiser/caesar-cipher
pnpm add @dunkelhaiser/caesar-cipher
bun add @dunkelhaiser/caesar-cipher
Basic usage
Importing the Library
Using ESM
With named import
import { CaesarCipher } from "@dunkelhaiser/caesar-cipher";
With named imports
import { encrypt, decrypt } from "@dunkelhaiser/caesar-cipher";
With default import
import CaesarCipher from "@dunkelhaiser/caesar-cipher";
Using CommonJS
With default import
const CaesarCipher = require("@dunkelhaiser/caesar-cipher");
With named imports
const { encrypt, decrypt } = require("@dunkelhaiser/caesar-cipher");
Encrypt a string
CaesarCipher.encrypt("Hello My Beautiful World!", 7); // => "Olssv Tf Ilhbapmbs Dvysk!"
Decrypt a string
CaesarCipher.decrypt("Olssv Tf Ilhbapmbs Dvysk!", 7); // => "Hello My Beautiful World!"
Provide an array as a parameter
CaesarCipher.encrypt(["Hello", "My", "Beautiful", "World!"], 7); // => ["Olssv", "Tf", "Ilhbapmbs", "Dvysk!"]
Use own alphabet
If you wish to use a custom alphabet for encryption and decryption, you can provide it as the third parameter:
CaesarCipher.encrypt("Привіт мій прекрасний диво-світ!", 7, "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя"); // => "Цчнзощ уор цчйсчєшфнр їнзх-шзощ!"
Numeric Support
If numbers are provided in the alphabet they also will be shifted, otherwise they stay untouched.
CaesarCipher.encrypt("12345", 5); // => "12345"
CaesarCipher.encrypt("12345", 5, "0123456789"); // => "67890"
API
encrypt(input, shift, alphabet) | decrypt(input, shift, alphabet)
| Name | Type | Argument | Default | Description |
| -------- | -------------------- | ------------ | ---------------------------- | ---------------------------------- |
| input | string \| string[]
| <required>
| | text to be encrypted |
| shift | number
| <required>
| | amount to shift each character by |
| alphabet | string
| <optional>
| abcdefghijklmnopqrstuvwxyz
| alphabet to be used for the cipher |
Contributing
Bug Reporting
If you come across a bug or unexpected behavior, please take the time to report it. To file a bug report:
- Check if the issue has already been reported by searching the issues.
- If the issue hasn't been reported yet, open a new issue, providing as much detail as possible, including:
- A clear and concise title.
- A detailed description of the issue.
- Steps to reproduce the problem.
- Expected and actual behavior.
Feature Proposals
To propose a new feature:
- Check the issues to ensure it hasn't been proposed before.
- Open a new issue, clearly describing the new feature or enhancement you would like to see.
- Provide any relevant details or use cases that will help understand the use of the proposed feature.
Code Contributions
To contribute code:
- Fork the repository.
- Create a new branch for your changes with a specific prefix:
git checkout -b feat/your-feature
. Accepted prefixes: feat, fix, refactor, docs. - Make your changes, following the coding style.
- Write unit tests for your changes.
- Update the README or documentation if necessary.
- Submit a pull request to the dev branch of the original repository.
- Provide a detailed description in the pull request, explaining the purpose of your changes.
License
Copyright (c) 2024 Kyrylo Tymchyshyn
Licensed under the MIT license.