Public paste
Undefined
By: Guest | Date: Dec 12 2009 23:23 | Format: None | Expires: never | Size: 2.08 KB | Hits: 844

  1. /*
  2.  
  3. USAGE:
  4.  
  5. import vigenere
  6.  
  7. var theMessage:String = "Homer dont't play that game!";
  8. var theKey = "whosyourdaddy";
  9.  
  10. var cipher:fvenc = new fvenc();
  11. cipher.setMap("H8AJzaij0pV7_Qhn{vwtl"(,`~D>mO:W]4L6u1.Zb/I[$dCGE9&%TB#Ske5@?*xPU)=}' M^c;YK!q2|rgsRo<Nyf+-3XF");
  12.  
  13. var encryption:String = cipher.encrypt( theMessage, theKey);
  14. trace("Encryption: " + encryption );
  15.  
  16. var decryption:String = cipher.decrypt( encryption, theKey);
  17. trace("Decryption: " + decryption );
  18.  
  19. */
  20.  
  21. class vigenere{
  22.         var charStr:String = ""
  23.         var charArr:Array = [];
  24.         var VS:Array = [];
  25.         var theMessage:String = "";
  26.  
  27.         public function fvenc(){
  28.         }
  29.         public function setMap(m:String):Void{
  30.                 charStr = m;
  31.                 charArr = m.split("");
  32.                 setSquare( charArr );
  33.         }
  34.         public function encrypt(m:String, k:String):String{
  35.                 var encrypted_message:String = "";
  36.                 var key:String = setKeyword(m,k);
  37.                 for(var i=0; i<m.length; i++){
  38.                         var r:String = findRow(key.charAt(i));
  39.                         var c:Number = charStr.indexOf( m.substr(i,1) );
  40.                         encrypted_message += VS[r][c];
  41.                 }
  42.                 return encrypted_message;
  43.         }
  44.         public function decrypt(m:String, k:String):String{
  45.                 var real_message:String = "";
  46.                 var key:String = setKeyword(m,k);
  47.                 for(var i=0; i<m.length; i++){
  48.                         var r:String = findRow(key.charAt(i));
  49.                         var x:String = VS[r].join("");
  50.                         var c:String = m.charAt(i);
  51.                         real_message += charStr.charAt(x.indexOf(c));
  52.                 }
  53.                 return real_message;
  54.         }
  55.  
  56.         private function setSquare(x:Array):Void{
  57.                 var n:Number = x.length;
  58.                 for(var i=1; i<n; i++){
  59.                         var temp:Array = [];
  60.                                 for(var t = i; t<n; t++){ temp.push( x[t] ); }
  61.                                 for(var t = 0; t<i; t++){ temp.push( x[t] ); }
  62.                         VS[i-1] = temp;
  63.                 }
  64.                 VS[VS.length] = x;
  65.         }
  66.         private function setKeyword(m:String,k:String):String{
  67.                 var n:Number = (m.length/k.length);
  68.                 var key:String = "";
  69.                 var temp:String = k;
  70.                         for(var i=0; i<(Math.floor(n)); i++){ key += temp; }
  71.                         key += temp.substr(0,(m.length-key.length));
  72.                 return key;
  73.         }
  74.         private function findRow(n:String):String {
  75.                 for(var i=0; i<VS.length; i++){
  76.                         var x:Number = VS[i][0];
  77.                         if(x==n){ return i; }
  78.                 }
  79.         }
  80. }