JavaScript DHTML/Security/DES

Материал из Web эксперт
Версия от 07:27, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

DES in JavaScript

<html>
  <head>
    <!--
      CryptoMX Tools
      Copyright (C) 2004 - 3005 Derek Buitenhuis
      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, or (at your option) any later version.
      This program is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      GNU General Public License for more details.
      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    -->
    <title>DES Crypt</title>
    <!-- des.js -->
    
    <script language="Javascript">
function dP(){
  salt=document.CRYPT.Salt.value;
  pw_salt=this.crypt(salt,document.CRYPT.PW.value); 
  document.CRYPT.ENC_PW.value=pw_salt[0];
  document.CRYPT.Salt.value=pw_salt[1];
  return false;
}
function bTU(b){
      value=Math.floor(b);
      return (value>=0?value:value+256);
}
function fBTI(b,offset){
      value=this.byteToUnsigned(b[offset++]);
      value|=(this.byteToUnsigned(b[offset++])<<8);
      value|=(this.byteToUnsigned(b[offset++])<<16);
      value|=(this.byteToUnsigned(b[offset++])<<24);
      return value;
}
function iTFB(iValue,b,offset){
      b[offset++]=((iValue)&0xff);
      b[offset++]=((iValue>>>8)&0xff);
      b[offset++]=((iValue>>>16)&0xff);
      b[offset++]=((iValue>>>24)&0xff);
}
function P_P(a,b,n,m,results){
      t=((a>>>n)^b)&m;
      a^=t<<n;
      b^=t;
      results[0]=a;
      results[1]=b;
}
function H_P(a,n,m){
      t=((a<<(16-n))^a)&m;
      a=a^t^(t>>>(16-n));
      return a;
}
function d_s_k(key){
      schedule=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
      c=this.fourBytesToInt(key,0);
      d=this.fourBytesToInt(key,4);
      results=new Array(0,0);
      this.PERM_OP(d,c,4,0x0f0f0f0f,results);
      d=results[0];c=results[1];
      c=this.HPERM_OP(c,-2,0xcccc0000);
      d=this.HPERM_OP(d,-2,0xcccc0000);
      this.PERM_OP(d,c,1,0x55555555,results);
      d=results[0];c=results[1];
      this.PERM_OP(c,d,8,0x00ff00ff,results);
      c=results[0];d=results[1];
      this.PERM_OP(d,c,1,0x55555555,results);
      d=results[0];c=results[1];
      d=(((d&0x000000ff)<<16)|(d&0x0000ff00)|((d&0x00ff0000)>>>16)|((c&0xf0000000)>>>4));
      c&=0x0fffffff;
      s=0;t=0;
      j=0;
      for(i=0;i<this.ITERATIONS;i++){
         if(this.shifts2[i]){
            c=(c>>>2)|(c<<26);
            d=(d>>>2)|(d<<26);
         }else{
            c=(c>>>1)|(c<<27);
            d=(d>>>1)|(d<<27);
         }
         c&=0x0fffffff;
         d&=0x0fffffff;
         s=this.skb[0][c&0x3f]|this.skb[1][((c>>>6)&0x03)|((c>>>7)&0x3c)]|this.skb[2][((c>>>13)&0x0f)|((c>>>14)&0x30)]|this.skb[3][((c>>>20)&0x01)|((c>>>21)&0x06)|((c>>>22)&0x38)];
         t=this.skb[4][d&0x3f]|this.skb[5][((d>>>7)&0x03)|((d>>>8)&0x3c)]|this.skb[6][(d>>>15)&0x3f]|this.skb[7][((d>>>21)&0x0f)|((d>>>22)&0x30)];
         schedule[j++]=((t<< 16)|(s&0x0000ffff))&0xffffffff;
         s=((s>>>16)|(t&0xffff0000));
         s=(s<<4)|(s>>>28);
         schedule[j++]=s&0xffffffff;
      }
      return schedule;
}
function D_E(L,R,S,E0,E1,s){
      v=R^(R>>>16);
      u=v&E0;
      v=v&E1;
      u=(u^(u<<16))^R^s[S];
      t=(v^(v<<16))^R^s[S+1];
      t=(t>>>4)|(t<<28);
      L^=this.SPtrans[1][t&0x3f]|this.SPtrans[3][(t>>>8)&0x3f]|this.SPtrans[5][(t>>>16)&0x3f]|this.SPtrans[7][(t>>>24)&0x3f]|this.SPtrans[0][u&0x3f]|this.SPtrans[2][(u>>>8)&0x3f]|this.SPtrans[4][(u>>>16)&0x3f]|this.SPtrans[6][(u>>>24)&0x3f];
      return L;
}
function bdy(schedule,Eswap0,Eswap1) {
  left=0;
  right=0;
  t=0;
      for(j=0;j<25;j++){
         for(i=0;i<this.ITERATIONS*2;i+=4){
            left=this.D_ENCRYPT(left, right,i,Eswap0,Eswap1,schedule);
            right=this.D_ENCRYPT(right,left,i+2,Eswap0,Eswap1,schedule);
         }
         t=left; 
         left=right; 
         right=t;
      }
      t=right;
      right=(left>>>1)|(left<<31);
      left=(t>>>1)|(t<<31);
      left&=0xffffffff;
      right&=0xffffffff;
      results=new Array(0,0);
      this.PERM_OP(right,left,1,0x55555555,results); 
      right=results[0];left=results[1];
      this.PERM_OP(left,right,8,0x00ff00ff,results); 
      left=results[0];right=results[1];
      this.PERM_OP(right,left,2,0x33333333,results); 
      right=results[0];left=results[1];
      this.PERM_OP(left,right,16,0x0000ffff,results);
      left=results[0];right=results[1];
      this.PERM_OP(right,left,4,0x0f0f0f0f,results);
      right=results[0];left=results[1];
      out=new Array(0,0);
      out[0]=left;out[1]=right;
      return out;
}
function rC(){ return this.GOODCHARS[Math.floor(64*Math.random())]; }
function cript(salt,original){
  if(salt.length>=2) salt=salt.substring(0,2);
  while(salt.length<2) salt+=this.randChar();
  re=new RegExp("[^./a-zA-Z0-9]","g");
  if(re.test(salt)) salt=this.randChar()+this.randChar();
  charZero=salt.charAt(0)+"";
      charOne=salt.charAt(1)+"";
  ccZ=charZero.charCodeAt(0);
  ccO=charOne.charCodeAt(0);
  buffer=charZero+charOne+"           ";
      Eswap0=this.con_salt[ccZ];
      Eswap1=this.con_salt[ccO]<<4;
      key=new Array(0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0);
      for(i=0;i<key.length&&i<original.length;i++){
         iChar=original.charCodeAt(i);
         key[i]=iChar<<1;
      }
      schedule=this.des_set_key(key);
      out=this.body(schedule,Eswap0,Eswap1);
      b=new Array(0,0,0,0,0,0,0,0,0);
      this.intToFourBytes(out[0],b,0);
      this.intToFourBytes(out[1],b,4);
      b[8]=0;
      for(i=2,y=0,u=0x80;i<13;i++){
         for(j=0,c=0;j<6;j++){
            c<<=1;
            if((b[y]&u)!=0) c|=1;
            u>>>=1;
            if(u==0){
               y++;
               u=0x80;
            }
            buffer=buffer.substring(0,i)+String.fromCharCode(this.cov_2char[c])+buffer.substring(i+1,buffer.length);
         }
      }
  ret=new Array(buffer,salt);
      return ret;
}
function Crypt() {
this.ITERATIONS=16;
this.GOODCHARS=new Array(
  ".","/","0","1","2","3","4","5","6","7",
  "8","9","A","B","C","D","E","F","G","H",
  "I","J","K","L","M","N","O","P","Q","R",
  "S","T","U","V","W","X","Y","Z","a","b",
  "c","d","e","f","g","h","i","j","k","l",
  "m","n","o","p","q","r","s","t","u","v",
  "w","x","y","z");
this.con_salt=new Array(
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 
      0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 
      0x0A,0x0B,0x05,0x06,0x07,0x08,0x09,0x0A, 
      0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12, 
      0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A, 
      0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22, 
      0x23,0x24,0x25,0x20,0x21,0x22,0x23,0x24, 
      0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C, 
      0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34, 
      0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C, 
      0x3D,0x3E,0x3F,0x00,0x00,0x00,0x00,0x00 );
this.shifts2=new Array(
  false,false,true,true,true,true,true,true,
  false,true, true,true,true,true,true,false );
this.skb=new Array(0,0,0,0,0,0,0,0);
  this.skb[0]=new Array(
         0x00000000,0x00000010,0x20000000,0x20000010, 
         0x00010000,0x00010010,0x20010000,0x20010010, 
         0x00000800,0x00000810,0x20000800,0x20000810, 
         0x00010800,0x00010810,0x20010800,0x20010810, 
         0x00000020,0x00000030,0x20000020,0x20000030, 
         0x00010020,0x00010030,0x20010020,0x20010030, 
         0x00000820,0x00000830,0x20000820,0x20000830, 
         0x00010820,0x00010830,0x20010820,0x20010830, 
         0x00080000,0x00080010,0x20080000,0x20080010, 
         0x00090000,0x00090010,0x20090000,0x20090010, 
         0x00080800,0x00080810,0x20080800,0x20080810, 
         0x00090800,0x00090810,0x20090800,0x20090810, 
         0x00080020,0x00080030,0x20080020,0x20080030, 
         0x00090020,0x00090030,0x20090020,0x20090030, 
         0x00080820,0x00080830,0x20080820,0x20080830, 
         0x00090820,0x00090830,0x20090820,0x20090830 );
  this.skb[1]=new Array(
         0x00000000,0x02000000,0x00002000,0x02002000, 
         0x00200000,0x02200000,0x00202000,0x02202000, 
         0x00000004,0x02000004,0x00002004,0x02002004, 
         0x00200004,0x02200004,0x00202004,0x02202004, 
         0x00000400,0x02000400,0x00002400,0x02002400, 
         0x00200400,0x02200400,0x00202400,0x02202400, 
         0x00000404,0x02000404,0x00002404,0x02002404, 
         0x00200404,0x02200404,0x00202404,0x02202404, 
         0x10000000,0x12000000,0x10002000,0x12002000, 
         0x10200000,0x12200000,0x10202000,0x12202000, 
         0x10000004,0x12000004,0x10002004,0x12002004, 
         0x10200004,0x12200004,0x10202004,0x12202004, 
         0x10000400,0x12000400,0x10002400,0x12002400, 
         0x10200400,0x12200400,0x10202400,0x12202400, 
         0x10000404,0x12000404,0x10002404,0x12002404, 
         0x10200404,0x12200404,0x10202404,0x12202404 );
  this.skb[2]=new Array(
         0x00000000,0x00000001,0x00040000,0x00040001, 
         0x01000000,0x01000001,0x01040000,0x01040001, 
         0x00000002,0x00000003,0x00040002,0x00040003, 
         0x01000002,0x01000003,0x01040002,0x01040003, 
         0x00000200,0x00000201,0x00040200,0x00040201, 
         0x01000200,0x01000201,0x01040200,0x01040201, 
         0x00000202,0x00000203,0x00040202,0x00040203, 
         0x01000202,0x01000203,0x01040202,0x01040203, 
         0x08000000,0x08000001,0x08040000,0x08040001, 
         0x09000000,0x09000001,0x09040000,0x09040001, 
         0x08000002,0x08000003,0x08040002,0x08040003, 
         0x09000002,0x09000003,0x09040002,0x09040003, 
         0x08000200,0x08000201,0x08040200,0x08040201, 
         0x09000200,0x09000201,0x09040200,0x09040201, 
         0x08000202,0x08000203,0x08040202,0x08040203, 
         0x09000202,0x09000203,0x09040202,0x09040203 );
  this.skb[3]=new Array(
         0x00000000,0x00100000,0x00000100,0x00100100, 
         0x00000008,0x00100008,0x00000108,0x00100108, 
         0x00001000,0x00101000,0x00001100,0x00101100, 
         0x00001008,0x00101008,0x00001108,0x00101108, 
         0x04000000,0x04100000,0x04000100,0x04100100, 
         0x04000008,0x04100008,0x04000108,0x04100108, 
         0x04001000,0x04101000,0x04001100,0x04101100, 
         0x04001008,0x04101008,0x04001108,0x04101108, 
         0x00020000,0x00120000,0x00020100,0x00120100, 
         0x00020008,0x00120008,0x00020108,0x00120108, 
         0x00021000,0x00121000,0x00021100,0x00121100, 
         0x00021008,0x00121008,0x00021108,0x00121108, 
         0x04020000,0x04120000,0x04020100,0x04120100, 
         0x04020008,0x04120008,0x04020108,0x04120108, 
         0x04021000,0x04121000,0x04021100,0x04121100, 
         0x04021008,0x04121008,0x04021108,0x04121108 );
  this.skb[4]=new Array(
         0x00000000,0x10000000,0x00010000,0x10010000, 
         0x00000004,0x10000004,0x00010004,0x10010004, 
         0x20000000,0x30000000,0x20010000,0x30010000, 
         0x20000004,0x30000004,0x20010004,0x30010004, 
         0x00100000,0x10100000,0x00110000,0x10110000, 
         0x00100004,0x10100004,0x00110004,0x10110004, 
         0x20100000,0x30100000,0x20110000,0x30110000, 
         0x20100004,0x30100004,0x20110004,0x30110004, 
         0x00001000,0x10001000,0x00011000,0x10011000, 
         0x00001004,0x10001004,0x00011004,0x10011004, 
         0x20001000,0x30001000,0x20011000,0x30011000, 
         0x20001004,0x30001004,0x20011004,0x30011004, 
         0x00101000,0x10101000,0x00111000,0x10111000, 
         0x00101004,0x10101004,0x00111004,0x10111004, 
         0x20101000,0x30101000,0x20111000,0x30111000, 
         0x20101004,0x30101004,0x20111004,0x30111004 );
  this.skb[5]=new Array(
         0x00000000,0x08000000,0x00000008,0x08000008, 
         0x00000400,0x08000400,0x00000408,0x08000408, 
         0x00020000,0x08020000,0x00020008,0x08020008, 
         0x00020400,0x08020400,0x00020408,0x08020408, 
         0x00000001,0x08000001,0x00000009,0x08000009, 
         0x00000401,0x08000401,0x00000409,0x08000409, 
         0x00020001,0x08020001,0x00020009,0x08020009, 
         0x00020401,0x08020401,0x00020409,0x08020409, 
         0x02000000,0x0A000000,0x02000008,0x0A000008, 
         0x02000400,0x0A000400,0x02000408,0x0A000408, 
         0x02020000,0x0A020000,0x02020008,0x0A020008, 
         0x02020400,0x0A020400,0x02020408,0x0A020408, 
         0x02000001,0x0A000001,0x02000009,0x0A000009, 
         0x02000401,0x0A000401,0x02000409,0x0A000409, 
         0x02020001,0x0A020001,0x02020009,0x0A020009, 
         0x02020401,0x0A020401,0x02020409,0x0A020409 );
  this.skb[6]=new Array(
         0x00000000,0x00000100,0x00080000,0x00080100, 
         0x01000000,0x01000100,0x01080000,0x01080100, 
         0x00000010,0x00000110,0x00080010,0x00080110, 
         0x01000010,0x01000110,0x01080010,0x01080110, 
         0x00200000,0x00200100,0x00280000,0x00280100, 
         0x01200000,0x01200100,0x01280000,0x01280100, 
         0x00200010,0x00200110,0x00280010,0x00280110, 
         0x01200010,0x01200110,0x01280010,0x01280110, 
         0x00000200,0x00000300,0x00080200,0x00080300, 
         0x01000200,0x01000300,0x01080200,0x01080300, 
         0x00000210,0x00000310,0x00080210,0x00080310, 
         0x01000210,0x01000310,0x01080210,0x01080310, 
         0x00200200,0x00200300,0x00280200,0x00280300, 
         0x01200200,0x01200300,0x01280200,0x01280300, 
         0x00200210,0x00200310,0x00280210,0x00280310, 
         0x01200210,0x01200310,0x01280210,0x01280310 );
  this.skb[7]=new Array(
         0x00000000,0x04000000,0x00040000,0x04040000, 
         0x00000002,0x04000002,0x00040002,0x04040002, 
         0x00002000,0x04002000,0x00042000,0x04042000, 
         0x00002002,0x04002002,0x00042002,0x04042002, 
         0x00000020,0x04000020,0x00040020,0x04040020, 
         0x00000022,0x04000022,0x00040022,0x04040022, 
         0x00002020,0x04002020,0x00042020,0x04042020, 
         0x00002022,0x04002022,0x00042022,0x04042022, 
         0x00000800,0x04000800,0x00040800,0x04040800, 
         0x00000802,0x04000802,0x00040802,0x04040802, 
         0x00002800,0x04002800,0x00042800,0x04042800, 
         0x00002802,0x04002802,0x00042802,0x04042802, 
         0x00000820,0x04000820,0x00040820,0x04040820, 
         0x00000822,0x04000822,0x00040822,0x04040822, 
         0x00002820,0x04002820,0x00042820,0x04042820, 
         0x00002822,0x04002822,0x00042822,0x04042822 );
this.SPtrans=new Array(0,0,0,0,0,0,0,0);
  this.SPtrans[0]=new Array(
         0x00820200,0x00020000,0x80800000,0x80820200,
         0x00800000,0x80020200,0x80020000,0x80800000,
         0x80020200,0x00820200,0x00820000,0x80000200,
         0x80800200,0x00800000,0x00000000,0x80020000,
         0x00020000,0x80000000,0x00800200,0x00020200,
         0x80820200,0x00820000,0x80000200,0x00800200,
         0x80000000,0x00000200,0x00020200,0x80820000,
         0x00000200,0x80800200,0x80820000,0x00000000,
         0x00000000,0x80820200,0x00800200,0x80020000,
         0x00820200,0x00020000,0x80000200,0x00800200,
         0x80820000,0x00000200,0x00020200,0x80800000,
         0x80020200,0x80000000,0x80800000,0x00820000,
         0x80820200,0x00020200,0x00820000,0x80800200,
         0x00800000,0x80000200,0x80020000,0x00000000,
         0x00020000,0x00800000,0x80800200,0x00820200,
         0x80000000,0x80820000,0x00000200,0x80020200 );
  this.SPtrans[1]=new Array(
         0x10042004,0x00000000,0x00042000,0x10040000,
         0x10000004,0x00002004,0x10002000,0x00042000,
         0x00002000,0x10040004,0x00000004,0x10002000,
         0x00040004,0x10042000,0x10040000,0x00000004,
         0x00040000,0x10002004,0x10040004,0x00002000,
         0x00042004,0x10000000,0x00000000,0x00040004,
         0x10002004,0x00042004,0x10042000,0x10000004,
         0x10000000,0x00040000,0x00002004,0x10042004,
         0x00040004,0x10042000,0x10002000,0x00042004,
         0x10042004,0x00040004,0x10000004,0x00000000,
         0x10000000,0x00002004,0x00040000,0x10040004,
         0x00002000,0x10000000,0x00042004,0x10002004,
         0x10042000,0x00002000,0x00000000,0x10000004,
         0x00000004,0x10042004,0x00042000,0x10040000,
         0x10040004,0x00040000,0x00002004,0x10002000,
         0x10002004,0x00000004,0x10040000,0x00042000 );
  this.SPtrans[2]=new Array(
         0x41000000,0x01010040,0x00000040,0x41000040,
         0x40010000,0x01000000,0x41000040,0x00010040,
         0x01000040,0x00010000,0x01010000,0x40000000,
         0x41010040,0x40000040,0x40000000,0x41010000,
         0x00000000,0x40010000,0x01010040,0x00000040,
         0x40000040,0x41010040,0x00010000,0x41000000,
         0x41010000,0x01000040,0x40010040,0x01010000,
         0x00010040,0x00000000,0x01000000,0x40010040,
         0x01010040,0x00000040,0x40000000,0x00010000,
         0x40000040,0x40010000,0x01010000,0x41000040,
         0x00000000,0x01010040,0x00010040,0x41010000,
         0x40010000,0x01000000,0x41010040,0x40000000,
         0x40010040,0x41000000,0x01000000,0x41010040,
         0x00010000,0x01000040,0x41000040,0x00010040,
         0x01000040,0x00000000,0x41010000,0x40000040,
         0x41000000,0x40010040,0x00000040,0x01010000 );
  this.SPtrans[3]=new Array(
         0x00100402,0x04000400,0x00000002,0x04100402,
         0x00000000,0x04100000,0x04000402,0x00100002,
         0x04100400,0x04000002,0x04000000,0x00000402,
         0x04000002,0x00100402,0x00100000,0x04000000,
         0x04100002,0x00100400,0x00000400,0x00000002,
         0x00100400,0x04000402,0x04100000,0x00000400,
         0x00000402,0x00000000,0x00100002,0x04100400,
         0x04000400,0x04100002,0x04100402,0x00100000,
         0x04100002,0x00000402,0x00100000,0x04000002,
         0x00100400,0x04000400,0x00000002,0x04100000,
         0x04000402,0x00000000,0x00000400,0x00100002,
         0x00000000,0x04100002,0x04100400,0x00000400,
         0x04000000,0x04100402,0x00100402,0x00100000,
         0x04100402,0x00000002,0x04000400,0x00100402,
         0x00100002,0x00100400,0x04100000,0x04000402,
         0x00000402,0x04000000,0x04000002,0x04100400 );
  this.SPtrans[4]=new Array(
         0x02000000,0x00004000,0x00000100,0x02004108,
         0x02004008,0x02000100,0x00004108,0x02004000,
         0x00004000,0x00000008,0x02000008,0x00004100,
         0x02000108,0x02004008,0x02004100,0x00000000,
         0x00004100,0x02000000,0x00004008,0x00000108,
         0x02000100,0x00004108,0x00000000,0x02000008,
         0x00000008,0x02000108,0x02004108,0x00004008,
         0x02004000,0x00000100,0x00000108,0x02004100,
         0x02004100,0x02000108,0x00004008,0x02004000,
         0x00004000,0x00000008,0x02000008,0x02000100,
         0x02000000,0x00004100,0x02004108,0x00000000,
         0x00004108,0x02000000,0x00000100,0x00004008,
         0x02000108,0x00000100,0x00000000,0x02004108,
         0x02004008,0x02004100,0x00000108,0x00004000,
         0x00004100,0x02004008,0x02000100,0x00000108,
         0x00000008,0x00004108,0x02004000,0x02000008 );
  this.SPtrans[5]=new Array(
         0x20000010,0x00080010,0x00000000,0x20080800,
         0x00080010,0x00000800,0x20000810,0x00080000,
         0x00000810,0x20080810,0x00080800,0x20000000,
         0x20000800,0x20000010,0x20080000,0x00080810,
         0x00080000,0x20000810,0x20080010,0x00000000,
         0x00000800,0x00000010,0x20080800,0x20080010,
         0x20080810,0x20080000,0x20000000,0x00000810,
         0x00000010,0x00080800,0x00080810,0x20000800,
         0x00000810,0x20000000,0x20000800,0x00080810,
         0x20080800,0x00080010,0x00000000,0x20000800,
         0x20000000,0x00000800,0x20080010,0x00080000,
         0x00080010,0x20080810,0x00080800,0x00000010,
         0x20080810,0x00080800,0x00080000,0x20000810,
         0x20000010,0x20080000,0x00080810,0x00000000,
         0x00000800,0x20000010,0x20000810,0x20080800,
         0x20080000,0x00000810,0x00000010,0x20080010 );
  this.SPtrans[6]=new Array(
         0x00001000,0x00000080,0x00400080,0x00400001,
         0x00401081,0x00001001,0x00001080,0x00000000,
         0x00400000,0x00400081,0x00000081,0x00401000,
         0x00000001,0x00401080,0x00401000,0x00000081,
         0x00400081,0x00001000,0x00001001,0x00401081,
         0x00000000,0x00400080,0x00400001,0x00001080,
         0x00401001,0x00001081,0x00401080,0x00000001,
         0x00001081,0x00401001,0x00000080,0x00400000,
         0x00001081,0x00401000,0x00401001,0x00000081,
         0x00001000,0x00000080,0x00400000,0x00401001,
         0x00400081,0x00001081,0x00001080,0x00000000,
         0x00000080,0x00400001,0x00000001,0x00400080,
         0x00000000,0x00400081,0x00400080,0x00001080,
         0x00000081,0x00001000,0x00401081,0x00400000,
         0x00401080,0x00000001,0x00001001,0x00401081,
         0x00400001,0x00401080,0x00401000,0x00001001 );
  this.SPtrans[7]=new Array(
         0x08200020,0x08208000,0x00008020,0x00000000,
         0x08008000,0x00200020,0x08200000,0x08208020,
         0x00000020,0x08000000,0x00208000,0x00008020,
         0x00208020,0x08008020,0x08000020,0x08200000,
         0x00008000,0x00208020,0x00200020,0x08008000,
         0x08208020,0x08000020,0x00000000,0x00208000,
         0x08000000,0x00200000,0x08008020,0x08200020,
         0x00200000,0x00008000,0x08208000,0x00000020,
         0x00200000,0x00008000,0x08000020,0x08208020,
         0x00008020,0x08000000,0x00000000,0x00208000,
         0x08200020,0x08008020,0x08008000,0x00200020,
         0x08208000,0x00000020,0x00200020,0x08008000,
         0x08208020,0x00200000,0x08200000,0x08000020,
         0x00208000,0x00008020,0x08008020,0x08200000,
         0x00000020,0x08208000,0x00208020,0x00000000,
         0x08000000,0x08200020,0x00008000,0x00208020 );
this.cov_2char=new Array(
      0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35, 
      0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44, 
      0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C, 
      0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54, 
      0x55,0x56,0x57,0x58,0x59,0x5A,0x61,0x62, 
      0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A, 
      0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72, 
      0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A );
this.byteToUnsigned=bTU;
this.fourBytesToInt=fBTI;
this.intToFourBytes=iTFB;
this.PERM_OP=P_P;
this.HPERM_OP=H_P;
this.des_set_key=d_s_k;
this.D_ENCRYPT=D_E;
this.body=bdy;
this.randChar=rC;
this.crypt=cript;
this.displayPassword=dP;
}
Javacrypt=new Crypt();
    </script>
  </head>
  <body>
    <form name="CRYPT">
      <strong>Text: </strong><input type="text" name="PW">
      <input type="button" value="Encrypt" onClick="Javacrypt.displayPassword()"><br>
      <strong>Encrypted: </strong><input type="text" name="ENC_PW"><br>
      <strong>Salt: </strong><input type="text" name="Salt">
    </form>
    <br>
    <b>NOTE</b>: If you do not enter a salt, one will be randomly generated.
  </body>
</html>