amculin / vigenere-cipher
Implementation of Vigenere Cipher algorithm in PHP
v1.3
2025-06-25 02:18 UTC
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.72
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5
- rector/rector: ^2.0
- vimeo/psalm: ^6.5
README
Encrypt/decrypt string using Vigenere Cipher algorithm
Instalation
composer require amculin/vigenere-cipher
How to use
Encryption
use amculin\cryptography\classic\VigenereCipher; $data = 'testtheencryptionprocess'; $key = 'thisisthekey'; //Basic mode only support lowercase alphabet //You can use alpha_numeric mode for wider supported characters (a-z, A-Z, 0-9) //You can also use base64 mode to use Radix-64 character list (A-Z, a-z, 0-9, +/=) $encrypted = VigenereCipher::encrypt($data, $key, 'basic'); echo "Plain text: {$data}\n"; echo "Key: {$key}\n"; echo "Cipher Text: {$encrypted}\n";
Output:
Plain text: testtheencryptionprocess Key: thisisthekey Cipher Text: mlalbzxlrmvwiaqgvhkvgowq
Decryption
use amculin\cryptography\classic\VigenereCipher; $data = 'mlalbzxlrmvwiaqgvhkvgowq'; $key = 'thisisthekey'; $decrypted = VigenereCipher::decrypt($data, $key, 'basic'); echo "Cipher text: {$data}\n"; echo "Key: {$key}\n"; echo "Plain Text: {$decrypted}\n";
Output:
Cipher Text: mlalbzxlrmvwiaqgvhkvgowq Key: thisisthekey Plain text: testtheencryptionprocess
Features
- Support basic mode/lowercase alphabet only
- Support alpha-numeric mode (a-z, A-Z, 0-9)
- Unit test
- Comply PHPStan Level 10
- Checked using Psalm
- Optimized using PHP CS Fixer
- Add Base64 mode to support Base64 string
Todos
- Add ASCII mode to support file encryption/decryption