<?php
/************************************************************************
+----------------------------------------------------------------------+
| permute.php -> Permutation |
+----------------------------------------------------------------------+ |
| |
| (c) 2002 by M.Abdullah Khaidar (khaidarmak@yahoo.com) |
| |
| This program is free software. You can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 2 of the License. |
| |
+----------------------------------------------------------------------+
************************************************************************/
include "main.php";
$TITLE="Permutation Encoder and Decoder";
$HEADTITLE="Permutation Encoder and Decoder";
function permute_encode($plain,$permute){
$perm_table="";
$unique_table=1;
$perm_len=strlen($permute);
$plain=filter($plain);
$plain=check_length($plain);
for($i=0;$i<$perm_len;$i++){
$k=substr($permute,$i,1);
$perm_table[$i]=$k;
}
for($i=0;$i<$perm_len;$i++){
for($j=$i+1;$j<$perm_len;$j++){
if($perm_table[$i]==$perm_table[$j]){
$unique_table=0;
}
}
}
if($unique_table==0){
return "error: Duplicate permutation table detected";
}
for($i=0;$i<strlen($plain);$i=$i+$perm_len){
$perm="";
$p=substr($plain,$i,$perm_len);
for($j=0;$j<$perm_len;$j++){
$perm=$perm.substr($p,$perm_table[$j]-1,1);
}
$cipher=$cipher.$perm;
}
return $cipher;
}
function permute_decode($plain,$permute){
$perm_table="";
$unique_table=1;
$perm_len=strlen($permute);
$plain=filter($plain);
$plain=check_length($plain);
for($i=0;$i<$perm_len;$i++){
$k=substr($permute,$i,1);
$perm_table[$i]=$k;
}
for($i=0;$i<$perm_len;$i++){
for($j=$i+1;$j<$perm_len;$j++){
if($perm_table[$i]==$perm_table[$j]){
$unique_table=0;
}
}
}
if($unique_table==0){
return "error: Duplicate permutation table detected";
}
for($i=0;$i<strlen($plain);$i=$i+$perm_len){
$perm="";
$k=0;
$p=substr($plain,$i,$perm_len);
for($j=0;$j<$perm_len;$j++){
$perm_temp[$perm_table[$j]]=substr($p,$j,1);
}
for($k=1;$k<=$perm_len;$k++){
$perm=$perm.$perm_temp[$k];
}
$cipher=$cipher.$perm;
}
return $cipher;
}
top();
?>
<script language="JavaScript">
<!--
function help(){
var message;
message="Permutation is permuting character position.\n";
message=message + "Permute 3241 means:\n";
message=message + "position 1: third plain character\n";
message=message + "position 2: second plain character\n";
message=message + "position 3: fourth plain character\n";
message=message + "position 4: first plain character\n";
message=message + "Note: 0 will be omitted.";
alert(message);
}
//-->
</script>
<?
echo "<form name=\"Form\" action=\"permute.php\" method=\"post\">\n";
echo "Enter text you want to encode or decode:<br>\n";
echo "<textarea name=\"plain\" cols=40 rows=7 class=\"txtcolor\">\n";
if ($plain){
$plain=filter($plain);
$plain=check_length($plain);
echo $plain;
}
echo "</textarea><br><br>\n";
echo "Permute :";
for($i=1;$i<=$MAXPERMUTE;$i++){
echo "<select name=\"key[$i]\" width=200 class=\"txtcolor\">\n";
for($j=0;$j<=$MAXPERMUTE;$j++){
if ($j==$key[$i]){
echo "<option value=$j selected>$j</option>\n";
}else{
echo "<option value=$j>$j</option>\n";
}
}
echo "</select>\n";
}
echo "<br><br>";
echo "<input type=\"submit\" name=\"process\" value=\"Encode\" class=\"txtcolor\">\n";
echo "<input type=\"submit\" name=\"process\" value=\"Decode\" class=\"txtcolor\">\n";
echo "<input type=\"button\" name=\"process\" value=\"Help\" class=\"txtcolor\" onClick=\"help()\">\n";
echo "</form>\n";
if ($process=="Encode"){
$key_table="";
for($i=1;$i<=$MAXPERMUTE;$i++){
$key_table=$key_table.$key[$i];
}
$key_table=eregi_replace("0","",$key_table);
$cipher=permute_encode($plain,$key_table);
echo "Text after permuting $key_table:<br>\n";
echo "<textarea cols=40 rows=7 class=\"txtcolor\">$cipher</textarea><br><br>\n";
}elseif($process=="Decode"){
$key_table="";
for($i=1;$i<=$MAXPERMUTE;$i++){
$key_table=$key_table.$key[$i];
}
$key_table=eregi_replace("0","",$key_table);
$cipher=permute_decode($plain,$key_table);
echo "Text after decoding:<br>\n";
echo "<textarea cols=40 rows=7 class=\"txtcolor\">$cipher</textarea><br><br>\n";
}
bottom();
?>