amculin/vigenere-cipher

Implementation of Vigenere Cipher algorithm in PHP

v1.3 2025-06-25 02:18 UTC

This package is auto-updated.

Last update: 2025-07-25 03:23:00 UTC


README

GitHub Repo stars Packagist Download Packagist Version Passed Build Workflow Passed PHPStan Level 10

Optimized with PHP CS Fixer Checked using Psalm

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