Permutation Encoder and Decoder PHP


SUBMITTED BY: Guest

DATE: July 23, 2014, 12:31 p.m.

FORMAT: Text only

SIZE: 5.6 kB

HITS: 764

  1. <?php
  2. /************************************************************************
  3. +----------------------------------------------------------------------+
  4. | permute.php -> Permutation |
  5. +----------------------------------------------------------------------+ |
  6. | |
  7. | (c) 2002 by M.Abdullah Khaidar (khaidarmak@yahoo.com) |
  8. | |
  9. | This program is free software. You can redistribute it and/or modify |
  10. | it under the terms of the GNU General Public License as published by |
  11. | the Free Software Foundation; either version 2 of the License. |
  12. | |
  13. +----------------------------------------------------------------------+
  14. ************************************************************************/
  15. include "main.php";
  16. $TITLE="Permutation Encoder and Decoder";
  17. $HEADTITLE="Permutation Encoder and Decoder";
  18. function permute_encode($plain,$permute){
  19. $perm_table="";
  20. $unique_table=1;
  21. $perm_len=strlen($permute);
  22. $plain=filter($plain);
  23. $plain=check_length($plain);
  24. for($i=0;$i<$perm_len;$i++){
  25. $k=substr($permute,$i,1);
  26. $perm_table[$i]=$k;
  27. }
  28. for($i=0;$i<$perm_len;$i++){
  29. for($j=$i+1;$j<$perm_len;$j++){
  30. if($perm_table[$i]==$perm_table[$j]){
  31. $unique_table=0;
  32. }
  33. }
  34. }
  35. if($unique_table==0){
  36. return "error: Duplicate permutation table detected";
  37. }
  38. for($i=0;$i<strlen($plain);$i=$i+$perm_len){
  39. $perm="";
  40. $p=substr($plain,$i,$perm_len);
  41. for($j=0;$j<$perm_len;$j++){
  42. $perm=$perm.substr($p,$perm_table[$j]-1,1);
  43. }
  44. $cipher=$cipher.$perm;
  45. }
  46. return $cipher;
  47. }
  48. function permute_decode($plain,$permute){
  49. $perm_table="";
  50. $unique_table=1;
  51. $perm_len=strlen($permute);
  52. $plain=filter($plain);
  53. $plain=check_length($plain);
  54. for($i=0;$i<$perm_len;$i++){
  55. $k=substr($permute,$i,1);
  56. $perm_table[$i]=$k;
  57. }
  58. for($i=0;$i<$perm_len;$i++){
  59. for($j=$i+1;$j<$perm_len;$j++){
  60. if($perm_table[$i]==$perm_table[$j]){
  61. $unique_table=0;
  62. }
  63. }
  64. }
  65. if($unique_table==0){
  66. return "error: Duplicate permutation table detected";
  67. }
  68. for($i=0;$i<strlen($plain);$i=$i+$perm_len){
  69. $perm="";
  70. $k=0;
  71. $p=substr($plain,$i,$perm_len);
  72. for($j=0;$j<$perm_len;$j++){
  73. $perm_temp[$perm_table[$j]]=substr($p,$j,1);
  74. }
  75. for($k=1;$k<=$perm_len;$k++){
  76. $perm=$perm.$perm_temp[$k];
  77. }
  78. $cipher=$cipher.$perm;
  79. }
  80. return $cipher;
  81. }
  82. top();
  83. ?>
  84. <script language="JavaScript">
  85. <!--
  86. function help(){
  87. var message;
  88. message="Permutation is permuting character position.\n";
  89. message=message + "Permute 3241 means:\n";
  90. message=message + "position 1: third plain character\n";
  91. message=message + "position 2: second plain character\n";
  92. message=message + "position 3: fourth plain character\n";
  93. message=message + "position 4: first plain character\n";
  94. message=message + "Note: 0 will be omitted.";
  95. alert(message);
  96. }
  97. //-->
  98. </script>
  99. <?
  100. echo "<form name=\"Form\" action=\"permute.php\" method=\"post\">\n";
  101. echo "Enter text you want to encode or decode:<br>\n";
  102. echo "<textarea name=\"plain\" cols=40 rows=7 class=\"txtcolor\">\n";
  103. if ($plain){
  104. $plain=filter($plain);
  105. $plain=check_length($plain);
  106. echo $plain;
  107. }
  108. echo "</textarea><br><br>\n";
  109. echo "Permute :";
  110. for($i=1;$i<=$MAXPERMUTE;$i++){
  111. echo "<select name=\"key[$i]\" width=200 class=\"txtcolor\">\n";
  112. for($j=0;$j<=$MAXPERMUTE;$j++){
  113. if ($j==$key[$i]){
  114. echo "<option value=$j selected>$j</option>\n";
  115. }else{
  116. echo "<option value=$j>$j</option>\n";
  117. }
  118. }
  119. echo "</select>\n";
  120. }
  121. echo "<br><br>";
  122. echo "<input type=\"submit\" name=\"process\" value=\"Encode\" class=\"txtcolor\">\n";
  123. echo "<input type=\"submit\" name=\"process\" value=\"Decode\" class=\"txtcolor\">\n";
  124. echo "<input type=\"button\" name=\"process\" value=\"Help\" class=\"txtcolor\" onClick=\"help()\">\n";
  125. echo "</form>\n";
  126. if ($process=="Encode"){
  127. $key_table="";
  128. for($i=1;$i<=$MAXPERMUTE;$i++){
  129. $key_table=$key_table.$key[$i];
  130. }
  131. $key_table=eregi_replace("0","",$key_table);
  132. $cipher=permute_encode($plain,$key_table);
  133. echo "Text after permuting $key_table:<br>\n";
  134. echo "<textarea cols=40 rows=7 class=\"txtcolor\">$cipher</textarea><br><br>\n";
  135. }elseif($process=="Decode"){
  136. $key_table="";
  137. for($i=1;$i<=$MAXPERMUTE;$i++){
  138. $key_table=$key_table.$key[$i];
  139. }
  140. $key_table=eregi_replace("0","",$key_table);
  141. $cipher=permute_decode($plain,$key_table);
  142. echo "Text after decoding:<br>\n";
  143. echo "<textarea cols=40 rows=7 class=\"txtcolor\">$cipher</textarea><br><br>\n";
  144. }
  145. bottom();
  146. ?>

comments powered by Disqus