subkey) < strlen($this->modkey)) { $this->subkey .= $this->subkey; } $this->subkey = substr($this->subkey, 0, strlen($this->modkey)); $subbits = str_split($this->subkey); $modbits = str_split($this->modkey); $modkey = ""; foreach ($subbits as $x => $v) { $subbits[$x] = $this->txt2Num($v); $modbits[$x] = $this->txt2Num($modbits[$x]); if ($modbits[$x] + $subbits[$x] > 94) { $modkey .= ($this->num2Txt($modbits[$x] + $subbits[$x] - 94)); } else { $modkey .= ($this->num2Txt($modbits[$x] + $subbits[$x])); } } return $modkey; } //Function to make key match length of string to be encrypted private function matchlength() { if(strlen($this->key) > strlen($this->rawstring)){ $this->subkey = substr($this->key,strlen($this->rawstring)); $this->modkey = substr($this->key,0,strlen($this->rawstring)); $this->modkey = $this->combineKeys(); }else{ $this->modkey = ""; while (strlen($this->modkey) < strlen($this->rawstring)) { $this->modkey .= $this->key; } $this->modkey = substr($this->modkey, 0, strlen($this->rawstring)); } } private function txt2Num($i) { switch ($i) { case("a"): $r = 0; break; case("b"): $r = 1; break; case("c"): $r = 2; break; case("d"): $r = 3; break; case("e"): $r = 4; break; case("f"): $r = 5; break; case("g"): $r = 6; break; case("h"): $r = 7; break; case("i"): $r = 8; break; case("j"): $r = 9; break; case("k"): $r = 10; break; case("l"): $r = 11; break; case("m"): $r = 12; break; case("n"): $r = 13; break; case("o"): $r = 14; break; case("p"): $r = 15; break; case("q"): $r = 16; break; case("r"): $r = 17; break; case("s"): $r = 18; break; case("t"): $r = 19; break; case("u"): $r = 20; break; case("v"): $r = 21; break; case("w"): $r = 22; break; case("x"): $r = 23; break; case("y"): $r = 24; break; case("z"): $r = 25; break; case("A"): $r = 26; break; case("B"): $r = 27; break; case("C"): $r = 28; break; case("D"): $r = 29; break; case("E"): $r = 30; break; case("F"): $r = 31; break; case("G"): $r = 32; break; case("H"): $r = 33; break; case("I"): $r = 34; break; case("J"): $r = 35; break; case("K"): $r = 36; break; case("L"): $r = 37; break; case("M"): $r = 38; break; case("N"): $r = 39; break; case("O"): $r = 40; break; case("P"): $r = 41; break; case("Q"): $r = 42; break; case("R"): $r = 43; break; case("S"): $r = 44; break; case("T"): $r = 45; break; case("U"): $r = 46; break; case("V"): $r = 47; break; case("W"): $r = 48; break; case("X"): $r = 49; break; case("Y"): $r = 50; break; case("Z"): $r = 51; break; case("`"): $r = 52; break; case("1"): $r = 53; break; case("2"): $r = 54; break; case("3"): $r = 55; break; case("4"): $r = 56; break; case("5"): $r = 57; break; case("6"): $r = 58; break; case("7"): $r = 59; break; case("8"): $r = 60; break; case("9"): $r = 61; break; case("0"): $r = 62; break; case("-"): $r = 63; break; case("="): $r = 64; break; case("["): $r = 65; break; case("]"): $r = 66; break; case("\\"): $r = 67; break; case(";"): $r = 68; break; case("'"): $r = 69; break; case(","): $r = 70; break; case("."): $r = 71; break; case("/"): $r = 72; break; case("~"): $r = 73; break; case("!"): $r = 74; break; case("@"): $r = 75; break; case("#"): $r = 76; break; case("$"): $r = 77; break; case("%"): $r = 78; break; case("^"): $r = 79; break; case("&"): $r = 80; break; case("*"): $r = 81; break; case("("): $r = 82; break; case(")"): $r = 83; break; case("_"): $r = 84; break; case("+"): $r = 85; break; case("{"): $r = 86; break; case("}"): $r = 87; break; case("|"): $r = 88; break; case(":"): $r = 89; break; case("\""): $r = 90; break; case("<"): $r = 91; break; case(">"): $r = 92; break; case("?"): $r = 93; break; case("\s"): $r = 94; break; default: $r = $i; } return $r; } private function num2Txt($i) { switch ($i) { case(0): $r = "a"; break; case(1): $r = "b"; break; case(2): $r = "c"; break; case(3): $r = "d"; break; case(4): $r = "e"; break; case(5): $r = "f"; break; case(6): $r = "g"; break; case(7): $r = "h"; break; case(8): $r = "i"; break; case(9): $r = "j"; break; case(10): $r = "k"; break; case(11): $r = "l"; break; case(12): $r = "m"; break; case(13): $r = "n"; break; case(14): $r = "o"; break; case(15): $r = "p"; break; case(16): $r = "q"; break; case(17): $r = "r"; break; case(18): $r = "s"; break; case(19): $r = "t"; break; case(20): $r = "u"; break; case(21): $r = "v"; break; case(22): $r = "w"; break; case(23): $r = "x"; break; case(24): $r = "y"; break; case(25): $r = "z"; break; case(26): $r = "A"; break; case(27): $r = "B"; break; case(28): $r = "C"; break; case(29): $r = "D"; break; case(30): $r = "E"; break; case(31): $r = "F"; break; case(32): $r = "G"; break; case(33): $r = "H"; break; case(34): $r = "I"; break; case(35): $r = "J"; break; case(36): $r = "K"; break; case(37): $r = "L"; break; case(38): $r = "M"; break; case(39): $r = "N"; break; case(40): $r = "O"; break; case(41): $r = "P"; break; case(42): $r = "Q"; break; case(43): $r = "R"; break; case(44): $r = "S"; break; case(45): $r = "T"; break; case(46): $r = "U"; break; case(47): $r = "V"; break; case(48): $r = "W"; break; case(49): $r = "X"; break; case(50): $r = "Y"; break; case(51): $r = "Z"; break; case(52): $r = "`"; break; case(53): $r = "1"; break; case(54): $r = "2"; break; case(55): $r = "3"; break; case(56): $r = "4"; break; case(57): $r = "5"; break; case(58): $r = "6"; break; case(59): $r = "7"; break; case(60): $r = "8"; break; case(61): $r = "9"; break; case(62): $r = "0"; break; case(63): $r = "-"; break; case(64): $r = "="; break; case(65): $r = "["; break; case(66): $r = "]"; break; case(67): $r = "\\"; break; case(68): $r = ";"; break; case(69): $r = "'"; break; case(70): $r = ","; break; case(71): $r = "."; break; case(72): $r = "/"; break; case(73): $r = "~"; break; case(74): $r = "!"; break; case(75): $r = "@"; break; case(76): $r = "#"; break; case(77): $r = "$"; break; case(78): $r = "%"; break; case(79): $r = "^"; break; case(80): $r = "&"; break; case(81): $r = "*"; break; case(82): $r = "("; break; case(83): $r = ")"; break; case(84): $r = "_"; break; case(85): $r = "+"; break; case(86): $r = "{"; break; case(87): $r = "}"; break; case(88): $r = "|"; break; case(89): $r = ":"; break; case(90): $r = "\""; break; case(91): $r = "<"; break; case(92): $r = ">"; break; case(93): $r = "?"; break; case(94): $r = "\s"; break; default: $r = $i; } return $r; } private function eStr() { //split up the string to be encrypted $rawbits = str_split($this->rawstring); //and the modified key $keybits = str_split($this->modkey); $encryptedstring = ""; foreach ($rawbits as $x => $v) { $rawbits[$x] = $this->txt2Num($v); $keybits[$x] = $this->txt2Num($keybits[$x]); if ($rawbits[$x] + $keybits[$x] > 94) { $encryptedstring .= ($this->num2Txt($rawbits[$x] + $keybits[$x] - 94)); } else { $encryptedstring .= ($this->num2Txt($rawbits[$x] + $keybits[$x])); } } return $encryptedstring; } private function dStr(){ //split up the string to be encrypted $rawbits = str_split($this->rawstring); //and the modified key $keybits = str_split($this->modkey); $decryptedstring = ""; foreach ($rawbits as $x => $v) { $rawbits[$x] = $this->txt2Num($v); $keybits[$x] = $this->txt2Num($keybits[$x]); if ($rawbits[$x] - $keybits[$x] < 0) { $decryptedstring .= ($this->num2Txt(94 + ($rawbits[$x] - $keybits[$x]))); } else { $decryptedstring .= ($this->num2Txt($rawbits[$x] - $keybits[$x])); } } return $decryptedstring; } function __construct($string, $key, $action = 'e') { $this->rawstring = $string; $this->key = $key; $this->matchlength(); if($action == 'e'){ $this->resStr = $this->eStr(); }elseif($action == 'd'){ $this->resStr = $this->dStr(); }else{ exit("Invalid Action"); } } } //$enc = new crypt0($_POST['data']['string'], $_POST['data']['key'], $_POST['data']['action']); //$enc = new crypt0("strings", "1234567", 'e'); $enc = new crypt0(".~/=,=$", "1234567", 'd'); // echo $enc->resStr; //$chars = "abcdefghijklmnopqrstuvwxyz"; // //echo strtoupper($chars); ?>