1. <?php
  2. class crypt0
  3. {
  4.     //String to be encrypted
  5.     private $rawstring;
  6.     //String modified to fix mis-match lengths
  7.     //Decryption Key as String
  8.     private $key;
  9.     //Subkey is used for in the event that the key is longer than the string to be encrypted
  10.     private $subkey;
  11.     //Key made to be the length of the rawstring
  12.     private $modkey;
  13.     //Encrypted/Decrypted String
  14.     public $resStr;
  15.  
  16.     //Combines key and subkey to make the modkey
  17.     private function combineKeys(){
  18.  
  19.         while (strlen($this->subkey) < strlen($this->modkey)) {
  20.             $this->subkey .= $this->subkey;
  21.         }
  22.         $this->subkey = substr($this->subkey, 0, strlen($this->modkey));
  23.  
  24.         $subbits = str_split($this->subkey);
  25.         $modbits = str_split($this->modkey);
  26.         $modkey = "";
  27.         foreach ($subbits as $x => $v) {
  28.             $subbits[$x] = $this->txt2Num($v);
  29.             $modbits[$x] = $this->txt2Num($modbits[$x]);
  30.             if ($modbits[$x] + $subbits[$x] > 94) {
  31.                 $modkey .= ($this->num2Txt($modbits[$x] + $subbits[$x] - 94));
  32.             } else {
  33.                 $modkey .= ($this->num2Txt($modbits[$x] + $subbits[$x]));
  34.             }
  35.         }
  36.         return $modkey;
  37.     }
  38.  
  39.     //Function to make key match length of string to be encrypted
  40.     private function matchlength()
  41.     {
  42.         if(strlen($this->key) > strlen($this->rawstring)){
  43.             $this->subkey = substr($this->key,strlen($this->rawstring));
  44.             $this->modkey = substr($this->key,0,strlen($this->rawstring));
  45.  
  46.             $this->modkey = $this->combineKeys();
  47.         }else{
  48.             $this->modkey = "";
  49.             while (strlen($this->modkey) < strlen($this->rawstring)) {
  50.                 $this->modkey .= $this->key;
  51.             }
  52.             $this->modkey = substr($this->modkey, 0, strlen($this->rawstring));
  53.         }
  54.  
  55.     }
  56.  
  57.     private function txt2Num($i)
  58.     {
  59.         switch ($i) {
  60.             case("a"):
  61.                 $r = 0;
  62.                 break;
  63.             case("b"):
  64.                 $r = 1;
  65.                 break;
  66.             case("c"):
  67.                 $r = 2;
  68.                 break;
  69.             case("d"):
  70.                 $r = 3;
  71.                 break;
  72.             case("e"):
  73.                 $r = 4;
  74.                 break;
  75.             case("f"):
  76.                 $r = 5;
  77.                 break;
  78.             case("g"):
  79.                 $r = 6;
  80.                 break;
  81.             case("h"):
  82.                 $r = 7;
  83.                 break;
  84.             case("i"):
  85.                 $r = 8;
  86.                 break;
  87.             case("j"):
  88.                 $r = 9;
  89.                 break;
  90.             case("k"):
  91.                 $r = 10;
  92.                 break;
  93.             case("l"):
  94.                 $r = 11;
  95.                 break;
  96.             case("m"):
  97.                 $r = 12;
  98.                 break;
  99.             case("n"):
  100.                 $r = 13;
  101.                 break;
  102.             case("o"):
  103.                 $r = 14;
  104.                 break;
  105.             case("p"):
  106.                 $r = 15;
  107.                 break;
  108.             case("q"):
  109.                 $r = 16;
  110.                 break;
  111.             case("r"):
  112.                 $r = 17;
  113.                 break;
  114.             case("s"):
  115.                 $r = 18;
  116.                 break;
  117.             case("t"):
  118.                 $r = 19;
  119.                 break;
  120.             case("u"):
  121.                 $r = 20;
  122.                 break;
  123.             case("v"):
  124.                 $r = 21;
  125.                 break;
  126.             case("w"):
  127.                 $r = 22;
  128.                 break;
  129.             case("x"):
  130.                 $r = 23;
  131.                 break;
  132.             case("y"):
  133.                 $r = 24;
  134.                 break;
  135.             case("z"):
  136.                 $r = 25;
  137.                 break;
  138.             case("A"):
  139.                 $r = 26;
  140.                 break;
  141.             case("B"):
  142.                 $r = 27;
  143.                 break;
  144.             case("C"):
  145.                 $r = 28;
  146.                 break;
  147.             case("D"):
  148.                 $r = 29;
  149.                 break;
  150.             case("E"):
  151.                 $r = 30;
  152.                 break;
  153.             case("F"):
  154.                 $r = 31;
  155.                 break;
  156.             case("G"):
  157.                 $r = 32;
  158.                 break;
  159.             case("H"):
  160.                 $r = 33;
  161.                 break;
  162.             case("I"):
  163.                 $r = 34;
  164.                 break;
  165.             case("J"):
  166.                 $r = 35;
  167.                 break;
  168.             case("K"):
  169.                 $r = 36;
  170.                 break;
  171.             case("L"):
  172.                 $r = 37;
  173.                 break;
  174.             case("M"):
  175.                 $r = 38;
  176.                 break;
  177.             case("N"):
  178.                 $r = 39;
  179.                 break;
  180.             case("O"):
  181.                 $r = 40;
  182.                 break;
  183.             case("P"):
  184.                 $r = 41;
  185.                 break;
  186.             case("Q"):
  187.                 $r = 42;
  188.                 break;
  189.             case("R"):
  190.                 $r = 43;
  191.                 break;
  192.             case("S"):
  193.                 $r = 44;
  194.                 break;
  195.             case("T"):
  196.                 $r = 45;
  197.                 break;
  198.             case("U"):
  199.                 $r = 46;
  200.                 break;
  201.             case("V"):
  202.                 $r = 47;
  203.                 break;
  204.             case("W"):
  205.                 $r = 48;
  206.                 break;
  207.             case("X"):
  208.                 $r = 49;
  209.                 break;
  210.             case("Y"):
  211.                 $r = 50;
  212.                 break;
  213.             case("Z"):
  214.                 $r = 51;
  215.                 break;
  216.             case("`"):
  217.                 $r = 52;
  218.                 break;
  219.             case("1"):
  220.                 $r = 53;
  221.                 break;
  222.             case("2"):
  223.                 $r = 54;
  224.                 break;
  225.             case("3"):
  226.                 $r = 55;
  227.                 break;
  228.             case("4"):
  229.                 $r = 56;
  230.                 break;
  231.             case("5"):
  232.                 $r = 57;
  233.                 break;
  234.             case("6"):
  235.                 $r = 58;
  236.                 break;
  237.             case("7"):
  238.                 $r = 59;
  239.                 break;
  240.             case("8"):
  241.                 $r = 60;
  242.                 break;
  243.             case("9"):
  244.                 $r = 61;
  245.                 break;
  246.             case("0"):
  247.                 $r = 62;
  248.                 break;
  249.             case("-"):
  250.                 $r = 63;
  251.                 break;
  252.             case("="):
  253.                 $r = 64;
  254.                 break;
  255.             case("["):
  256.                 $r = 65;
  257.                 break;
  258.             case("]"):
  259.                 $r = 66;
  260.                 break;
  261.             case("\\"):
  262.                 $r = 67;
  263.                 break;
  264.             case(";"):
  265.                 $r = 68;
  266.                 break;
  267.             case("'"):
  268.                 $r = 69;
  269.                 break;
  270.             case(","):
  271.                 $r = 70;
  272.                 break;
  273.             case("."):
  274.                 $r = 71;
  275.                 break;
  276.             case("/"):
  277.                 $r = 72;
  278.                 break;
  279.             case("~"):
  280.                 $r = 73;
  281.                 break;
  282.             case("!"):
  283.                 $r = 74;
  284.                 break;
  285.             case("@"):
  286.                 $r = 75;
  287.                 break;
  288.             case("#"):
  289.                 $r = 76;
  290.                 break;
  291.             case("$"):
  292.                 $r = 77;
  293.                 break;
  294.             case("%"):
  295.                 $r = 78;
  296.                 break;
  297.             case("^"):
  298.                 $r = 79;
  299.                 break;
  300.             case("&"):
  301.                 $r = 80;
  302.                 break;
  303.             case("*"):
  304.                 $r = 81;
  305.                 break;
  306.             case("("):
  307.                 $r = 82;
  308.                 break;
  309.             case(")"):
  310.                 $r = 83;
  311.                 break;
  312.             case("_"):
  313.                 $r = 84;
  314.                 break;
  315.             case("+"):
  316.                 $r = 85;
  317.                 break;
  318.             case("{"):
  319.                 $r = 86;
  320.                 break;
  321.             case("}"):
  322.                 $r = 87;
  323.                 break;
  324.             case("|"):
  325.                 $r = 88;
  326.                 break;
  327.             case(":"):
  328.                 $r = 89;
  329.                 break;
  330.             case("\""):
  331.                 $r = 90;
  332.                 break;
  333.             case("<"):
  334.                 $r = 91;
  335.                 break;
  336.             case(">"):
  337.                 $r = 92;
  338.                 break;
  339.             case("?"):
  340.                 $r = 93;
  341.                 break;
  342.             case("\s"):
  343.                 $r = 94;
  344.                 break;
  345.             default:
  346.                 $r = $i;
  347.         }
  348.         return $r;
  349.     }
  350.  
  351.     private function num2Txt($i)
  352.     {
  353.         switch ($i) {
  354.             case(0):
  355.                 $r = "a";
  356.                 break;
  357.             case(1):
  358.                 $r = "b";
  359.                 break;
  360.             case(2):
  361.                 $r = "c";
  362.                 break;
  363.             case(3):
  364.                 $r = "d";
  365.                 break;
  366.             case(4):
  367.                 $r = "e";
  368.                 break;
  369.             case(5):
  370.                 $r = "f";
  371.                 break;
  372.             case(6):
  373.                 $r = "g";
  374.                 break;
  375.             case(7):
  376.                 $r = "h";
  377.                 break;
  378.             case(8):
  379.                 $r = "i";
  380.                 break;
  381.             case(9):
  382.                 $r = "j";
  383.                 break;
  384.             case(10):
  385.                 $r = "k";
  386.                 break;
  387.             case(11):
  388.                 $r = "l";
  389.                 break;
  390.             case(12):
  391.                 $r = "m";
  392.                 break;
  393.             case(13):
  394.                 $r = "n";
  395.                 break;
  396.             case(14):
  397.                 $r = "o";
  398.                 break;
  399.             case(15):
  400.                 $r = "p";
  401.                 break;
  402.             case(16):
  403.                 $r = "q";
  404.                 break;
  405.             case(17):
  406.                 $r = "r";
  407.                 break;
  408.             case(18):
  409.                 $r = "s";
  410.                 break;
  411.             case(19):
  412.                 $r = "t";
  413.                 break;
  414.             case(20):
  415.                 $r = "u";
  416.                 break;
  417.             case(21):
  418.                 $r = "v";
  419.                 break;
  420.             case(22):
  421.                 $r = "w";
  422.                 break;
  423.             case(23):
  424.                 $r = "x";
  425.                 break;
  426.             case(24):
  427.                 $r = "y";
  428.                 break;
  429.             case(25):
  430.                 $r = "z";
  431.                 break;
  432.             case(26):
  433.                 $r = "A";
  434.                 break;
  435.             case(27):
  436.                 $r = "B";
  437.                 break;
  438.             case(28):
  439.                 $r = "C";
  440.                 break;
  441.             case(29):
  442.                 $r = "D";
  443.                 break;
  444.             case(30):
  445.                 $r = "E";
  446.                 break;
  447.             case(31):
  448.                 $r = "F";
  449.                 break;
  450.             case(32):
  451.                 $r = "G";
  452.                 break;
  453.             case(33):
  454.                 $r = "H";
  455.                 break;
  456.             case(34):
  457.                 $r = "I";
  458.                 break;
  459.             case(35):
  460.                 $r = "J";
  461.                 break;
  462.             case(36):
  463.                 $r = "K";
  464.                 break;
  465.             case(37):
  466.                 $r = "L";
  467.                 break;
  468.             case(38):
  469.                 $r = "M";
  470.                 break;
  471.             case(39):
  472.                 $r = "N";
  473.                 break;
  474.             case(40):
  475.                 $r = "O";
  476.                 break;
  477.             case(41):
  478.                 $r = "P";
  479.                 break;
  480.             case(42):
  481.                 $r = "Q";
  482.                 break;
  483.             case(43):
  484.                 $r = "R";
  485.                 break;
  486.             case(44):
  487.                 $r = "S";
  488.                 break;
  489.             case(45):
  490.                 $r = "T";
  491.                 break;
  492.             case(46):
  493.                 $r = "U";
  494.                 break;
  495.             case(47):
  496.                 $r = "V";
  497.                 break;
  498.             case(48):
  499.                 $r = "W";
  500.                 break;
  501.             case(49):
  502.                 $r = "X";
  503.                 break;
  504.             case(50):
  505.                 $r = "Y";
  506.                 break;
  507.             case(51):
  508.                 $r = "Z";
  509.                 break;
  510.             case(52):
  511.                 $r = "`";
  512.                 break;
  513.             case(53):
  514.                 $r = "1";
  515.                 break;
  516.             case(54):
  517.                 $r = "2";
  518.                 break;
  519.             case(55):
  520.                 $r = "3";
  521.                 break;
  522.             case(56):
  523.                 $r = "4";
  524.                 break;
  525.             case(57):
  526.                 $r = "5";
  527.                 break;
  528.             case(58):
  529.                 $r = "6";
  530.                 break;
  531.             case(59):
  532.                 $r = "7";
  533.                 break;
  534.             case(60):
  535.                 $r = "8";
  536.                 break;
  537.             case(61):
  538.                 $r = "9";
  539.                 break;
  540.             case(62):
  541.                 $r = "0";
  542.                 break;
  543.             case(63):
  544.                 $r = "-";
  545.                 break;
  546.             case(64):
  547.                 $r = "=";
  548.                 break;
  549.             case(65):
  550.                 $r = "[";
  551.                 break;
  552.             case(66):
  553.                 $r = "]";
  554.                 break;
  555.             case(67):
  556.                 $r = "\\";
  557.                 break;
  558.             case(68):
  559.                 $r = ";";
  560.                 break;
  561.             case(69):
  562.                 $r = "'";
  563.                 break;
  564.             case(70):
  565.                 $r = ",";
  566.                 break;
  567.             case(71):
  568.                 $r = ".";
  569.                 break;
  570.             case(72):
  571.                 $r = "/";
  572.                 break;
  573.             case(73):
  574.                 $r = "~";
  575.                 break;
  576.             case(74):
  577.                 $r = "!";
  578.                 break;
  579.             case(75):
  580.                 $r = "@";
  581.                 break;
  582.             case(76):
  583.                 $r = "#";
  584.                 break;
  585.             case(77):
  586.                 $r = "$";
  587.                 break;
  588.             case(78):
  589.                 $r = "%";
  590.                 break;
  591.             case(79):
  592.                 $r = "^";
  593.                 break;
  594.             case(80):
  595.                 $r = "&";
  596.                 break;
  597.             case(81):
  598.                 $r = "*";
  599.                 break;
  600.             case(82):
  601.                 $r = "(";
  602.                 break;
  603.             case(83):
  604.                 $r = ")";
  605.                 break;
  606.             case(84):
  607.                 $r = "_";
  608.                 break;
  609.             case(85):
  610.                 $r = "+";
  611.                 break;
  612.             case(86):
  613.                 $r = "{";
  614.                 break;
  615.             case(87):
  616.                 $r = "}";
  617.                 break;
  618.             case(88):
  619.                 $r = "|";
  620.                 break;
  621.             case(89):
  622.                 $r = ":";
  623.                 break;
  624.             case(90):
  625.                 $r = "\"";
  626.                 break;
  627.             case(91):
  628.                 $r = "<";
  629.                 break;
  630.             case(92):
  631.                 $r = ">";
  632.                 break;
  633.             case(93):
  634.                 $r = "?";
  635.                 break;
  636.             case(94):
  637.                 $r = "\s";
  638.                 break;
  639.             default:
  640.                 $r = $i;
  641.         }
  642.         return $r;
  643.     }
  644.  
  645.     private function eStr()
  646.     {
  647.         //split up the string to be encrypted
  648.         $rawbits = str_split($this->rawstring);
  649.         //and the modified key
  650.         $keybits = str_split($this->modkey);
  651.         $encryptedstring = "";
  652.         foreach ($rawbits as $x => $v) {
  653.             $rawbits[$x] = $this->txt2Num($v);
  654.             $keybits[$x] = $this->txt2Num($keybits[$x]);
  655.             if ($rawbits[$x] + $keybits[$x] > 94) {
  656.                 $encryptedstring .= ($this->num2Txt($rawbits[$x] + $keybits[$x] - 94));
  657.             } else {
  658.                 $encryptedstring .= ($this->num2Txt($rawbits[$x] + $keybits[$x]));
  659.             }
  660.         }
  661.         return $encryptedstring;
  662.     }
  663.  
  664.     private function dStr(){
  665.         //split up the string to be encrypted
  666.         $rawbits = str_split($this->rawstring);
  667.         //and the modified key
  668.         $keybits = str_split($this->modkey);
  669.         $decryptedstring = "";
  670.         foreach ($rawbits as $x => $v) {
  671.             $rawbits[$x] = $this->txt2Num($v);
  672.             $keybits[$x] = $this->txt2Num($keybits[$x]);
  673.             if ($rawbits[$x] - $keybits[$x] < 0) {
  674.                 $decryptedstring .= ($this->num2Txt(94 + ($rawbits[$x] - $keybits[$x])));
  675.             } else {
  676.                 $decryptedstring .= ($this->num2Txt($rawbits[$x] - $keybits[$x]));
  677.             }
  678.         }
  679.         return $decryptedstring;
  680.     }
  681.  
  682.     function __construct($string, $key, $action = 'e')
  683.     {
  684.         $this->rawstring = $string;
  685.         $this->key = $key;
  686.         $this->matchlength();
  687.         if($action == 'e'){
  688.             $this->resStr = $this->eStr();
  689.         }elseif($action == 'd'){
  690.             $this->resStr = $this->dStr();
  691.         }else{
  692.             exit("Invalid Action");
  693.         }
  694.     }
  695.  
  696. }
  697.  
  698. //$enc = new crypt0($_POST['data']['string'], $_POST['data']['key'], $_POST['data']['action']);
  699. //$enc = new crypt0("strings", "1234567", 'e');
  700. $enc = new crypt0(".~/=,=$", "1234567", 'd');
  701. //
  702. echo $enc->resStr;
  703.  
  704. //$chars = "abcdefghijklmnopqrstuvwxyz";
  705. //
  706. //echo strtoupper($chars);
  707.  
  708. ?>