-----------------------------------------------------------------
HTML
-----------------------------------------------------------------
<html>
<head>
<title> Playfair Cipher </title>
</head>
<body>
<form action="playfair.php" method="POST">
<h2>Playfair Cipher</h2>
<input type="text" name="messaggio"> Messaggio <br>
<input type="text" name="chiave"> Chiave <br>
<input type="submit" value="Cifra">
<input type="reset" value="Cancella">
</form>
</body>
</html>
----------------------------------------------
PHP
-----------------------------------------------
<html>
<head>
<title>Playfair Cipher</title>
</head>
<body>
<?php
//Dichiarazione variabili
$key=$_POST['chiave'];
$message=$_POST['messaggio'];
$key=strtolower($key);
$message=strtolower($message);
$key=str_replace(' ','',$key);
$message=str_replace(' ','',$message);
$key=str_replace('à','a',$key);
$key=str_replace('è','e',$key);
$key=str_replace('ì','i',$key);
$key=str_replace('ò','o',$key);
$key=str_replace('ù','u',$key);
$key=str_replace(',','',$key);
$key=str_replace('.','',$key);
$key=str_replace('-','',$key);
$message=str_replace('à','a',$message);
$message=str_replace('è','e',$message);
$message=str_replace('ì','i',$message);
$message=str_replace('ò','o',$message);
$message=str_replace('ù','u',$message);
$message=str_replace(',','',$message);
$message=str_replace('.','',$message);
$message=str_replace('-','',$message);
$l=strlen($key);
$lm=strlen($message);
$key_array=[];
$r_array=[];
$c_array=[];
$i=0;
$r=5;
$c=5;
$z=0;
$coord1="";
$coord2="";
$coord3="";
$coord4="";
$cipher_message=[];
//Controllo_doppioni
for($i=0;$i<$l;$i++){
if(!in_array($key[$i],$key_array)){
$key_array[]=$key[$i];
}
}
//Inserimento_alfabeto
for($i=97;$i<122;$i++){
if(!in_array(chr($i),$key_array)){
$key_array[]=chr($i);
}
}
//Salvataggio_array_coordinate
for($y=1;$y<6;$y++){
for($x=1;$x<6;$x++){
$r_array[]=$y;
$c_array[]=$x;
}
}
//Controllo_messaggio
if($lm%2==1){
$message=$message.'x';
$lm++;
}
//Stampa_prova_array
echo "Chiave: ";
for($i=0;$i<25;$i++){
echo $key_array[$i];
}
echo"<br>";
echo "Messaggio: ";
for($i=0;$i<$lm;$i++){
echo $message[$i];
}
echo "<br>";
//---------------Cifratura------------------
//Scorrimento_messaggio
for($i=0;$i<$lm;$i++){
//Salvataggio_coordinate_1
for($y=0;$y<25;$y++){
if($message[$i]==$key_array[$y]){
$coord1=$r_array[$y];
$coord2=$c_array[$y];
$index_y=$y;
}
}
//Salvataggio_coordinate_2
for($x=0;$x<25;$x++){
if($message[$i+1]==$key_array[$x]){
$coord3=$r_array[$x];
$coord4=$c_array[$x];
$index_x=$x;
}
}
//Controllo_orizzontale
if($coord1==$coord3){
if($index_y==3 || $index_y==8 || $index_y==13 || $index_y==18 || $index_y==23 && $index_x-$index_y==1){
$cipher_message[]=$key_array[$index_y+1];
$cipher_message[]=$key_array[$index_y-3];
}
if($index_y==4 || $index_y==9 || $index_y==14 || $index_y==19 || $index_y==24 && $index_y-$index_x==1){
$cipher_message[]=$key_array[$index_y-4];
$cipher_message[]=$key_array[$index_y];
}
//Controllo_indietro
if($index_y-$index_x==1){
$cipher_message[]=$key_array[$index_y+1];
$cipher_message[]=$key_array[$index_y];
}
if($index_y-$index_x==2){
$cipher_message[]=$key_array[$index_y+1];
$cipher_message[]=$key_array[$index_y-1];
}
if($index_y-$index_x==3){
$cipher_message[]=$key_array[$index_y+1];
$cipher_message[]=$key_array[$index_y-2];
}
if($index_y-$index_x==4){
$cipher_message[]=$key_array[$index_y-4];
$cipher_message[]=$key_array[$index_y-3];
}
//Controllo_avanti
if($index_x-$index_y==1){
$cipher_message[]=$key_array[$index_y+1];
$cipher_message[]=$key_array[$index_y+2];
}
if($index_x-$index_y==2){
$cipher_message[]=$key_array[$index_y+1];
$cipher_message[]=$key_array[$index_y+3];
}
if($index_x-$index_y==3){
$cipher_message[]=$key_array[$index_y+1];
$cipher_message[]=$key_array[$index_y+4];
}
if($index_x-$index_y==4){
$cipher_message[]=$key_array[$index_y+1];
$cipher_message[]=$key_array[$index_y];
}
}
//Controllo_verticale
if($coord2==$coord4){
if($index_y==15 || $index_y==16 || $index_y==17 || $index_y==18 || $index_y==19 && $index_x-$index_y==5){
$cipher_message[]=$key_array[$index_y+5];
$cipher_message[]=$key_array[$index_y-15];
}
if($index_y==20 || $index_y==21 || $index_y==22 || $index_y==23 || $index_y==24 && $index_y-$index_x==5){
$cipher_message[]=$key_array[$index_y-20];
$cipher_message[]=$key_array[$index_y];
}
//Controllo_basso
if($index_x-$index_y==5){
$cipher_message[]=$key_array[$index_y+5];
$cipher_message[]=$key_array[$index_y+10];
}
if($index_x-$index_y==10){
$cipher_message[]=$key_array[$index_y+5];
$cipher_message[]=$key_array[$index_y+15];
}
if($index_x-$index_y==15){
$cipher_message[]=$key_array[$index_y+5];
$cipher_message[]=$key_array[$index_y+20];
}
if($index_x-$index_y==20){
$cipher_message[]=$key_array[$index_y+5];
$cipher_message[]=$key_array[$index_y];
}
//Controllo_alto
if($index_y-$index_x==5){
$cipher_message[]=$key_array[$index_y+5];
$cipher_message[]=$key_array[$index_y];
}
if($index_y-$index_x==10){
$cipher_message[]=$key_array[$index_y+5];
$cipher_message[]=$key_array[$index_y-5];
}
if($index_y-$index_x==15){
$cipher_message[]=$key_array[$index_y+5];
$cipher_message[]=$key_array[$index_y-10];
}
if($index_y-$index_x==20){
$cipher_message[]=$key_array[$index_y-20];
$cipher_message[]=$key_array[$index_y-15];
}
}
//Controllo_rettangolare
//Controllo_avanti
if($index_x>$index_y){
if($coord4>$coord2){
$coord_temp=$coord4-$coord2;
$cipher_message[]=$key_array[$index_y+$coord_temp];
$cipher_message[]=$key_array[$index_x-$coord_temp];
}
if($coord2>$coord4){
$coord_temp=$coord2-$coord4;
$cipher_message[]=$key_array[$index_y-$coord_temp];
$cipher_message[]=$key_array[$index_x+$coord_temp];
}
}
//Controllo_indietro
if($index_y>$index_x){
if($coord2>$coord4){
$coord_temp=$coord2-$coord4;
$cipher_message[]=$key_array[$index_y-$coord_temp];
$cipher_message[]=$key_array[$index_x+$coord_temp];
}
if($coord4>$coord2){
$coord_temp=$coord4-$coord2;
$cipher_message[]=$key_array[$index_y+$coord_temp];
$cipher_message[]=$key_array[$index_x-$coord_temp];
}
}
$i=$i+1;
}
echo "Messaggio cifrato: ";
for($i=0;$i<$lm;$i++){
echo $cipher_message[$i];
}
?>
</body>
</html>