<?php
//////////////////////////////////////////////////////////////////////////
// //
// Rafael Páez - @fikih888 //
// Caesar Cipher for hexadecimal //
// Script that uses Caesar cipher to encrypt/decrypt a message //
// using a personalised dictionary //
// //
//////////////////////////////////////////////////////////////////////////
// This function encrypts a message "str" using only the characters in "dict" with a shift indicated in "shift"
function encrypt_msg($dict,$str,$shift)
{
$new_str="";
$total=count($dict);
$strlen=strlen($str);
for($i=0;$i<$strlen;$i++)
{
$char=substr($str,$i,1);
$index=array_search($char,$dict);
$new_index=($index + $shift) % $total;
$new_str="$new_str"."$dict[$new_index]";
}
return $new_str;
}
// This function decrypts a message "str" using only the characters in "dict" with a shift indicated in "shift"
function decrypt_msg($dict,$str,$shift)
{
$new_str="";
$total=count($dict);
$strlen=strlen($str);
for($i=0;$i<$strlen;$i++)
{
$char=substr($str,$i,1);
$index=array_search($char,$dict);
$new_index=($index - $shift) % $total;
if($new_index<0)
{
$new_index=$new_index + $total;
}
$new_str="$new_str"."$dict[$new_index]";
}
return $new_str;
}
////////////////////
// Example
$dict=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); // Dictionary
$str="0123456789abcdef"; // Message to encrypt/decrypt
$shift=3 // Shift used;
// Encrypt a message
$str_encrypted=encrypt_msg($dict, $str, $shift);
// Decrypt a message
$str_decrypted=decrypt_msg($dict, $str, $shift1);
// Print results
echo "original str: $str<br />";
echo "shift: $shift<br /><br />";
echo "encrypted str: $str_encrypted<br /><br />";
echo "decrypted str: $str_decrypted<br /><br />";
?>