<?
    $num_to_char 
= array(
        
'27'    => "1",
        
'28'    => "2",
        
'29'    => "3",
        
'30'    => "4",
        
'31'    => "5",
        
'32'    => "6",
        
'33'    => "7",
        
'34'    => "8",
        
'35'    => "9",
        
'36'    => "0",
        
'1'    => "a",
        
'2'    => "b",
        
'3'    => "c",
        
'4'    => "d",
        
'5'    => "e",
        
'6'    => "f",
        
'7'    => "g",
        
'8'    => "h",
        
'9'    => "i",
        
'10'    => "j",
        
'11'    => "k",
        
'12'    => "l",
        
'13'    => "m",
        
'14'    => "n",
        
'15'    => "o",
        
'16'    => "p",
        
'17'    => "q",
        
'18'    => "r",
        
'19'    => "s",
        
'20'    => "t",
        
'21'    => "u",
        
'22'    => "v",
        
'23'    => "w",
        
'24'    => "x",
        
'25'    => "y",
        
'26'    => "z",
        
'37'    => "A",
        
'38'    => "B",
        
'39'    => "C",
        
'40'    => "D",
        
'41'    => "E",
        
'42'    => "F",
        
'43'    => "G",
        
'44'    => "H",
        
'45'    => "I",
        
'46'    => "J",
        
'47'    => "K",
        
'48'    => "L",
        
'49'    => "M",
        
'50'    => "N",
        
'51'    => "O",
        
'52'    => "P",
        
'53'    => "Q",
        
'54'    => "R",
        
'55'    => "S",
        
'56'    => "T",
        
'57'    => "U",
        
'58'    => "V",
        
'59'    => "W",
        
'60'    => "X",
        
'61'    => "Y",
        
'62'    => "Z",
        
'63'    => "!",
        
'64'    => "\"",
        
'65'    => "£",
        
'66'    => "\$",
        
'67'    => "^",
        
'68'    => "&",
        
'69'    => "*",
        
'70'    => "(",
        
'71'    => ")",
        
'72'    => "_",
        
'73'    => "+",
        
'74'    => "-",
        
'75'    => "=",
        
'76'    => "`",
        
'77'    => ",",
        
'78'    => ".",
        
'79'    => "/",
        
'80'    => "<",
        
'81'    => ">",
        
'82'    => "?",
        
'83'    => ";",
        
'84'    => "'",
        
'85'    => "#",
        
'86'    => ":",
        
'87'    => "@",
        
'88'    => "~",
        
'89'    => "[",
        
'90'    => "]",
        
'91'    => "{",
        
'92'    => "}",
        
'93'    => " ",
        
'94'    => "%",
    );

    
$char_to_num = array(
        
'a'    => 1,
        
'b'    => 2,
        
'c'    => 3,
        
'd'    => 4,
        
'e'    => 5,
        
'f'    => 6,
        
'g'    => 7,
        
'h'    => 8,
        
'i'    => 9,
        
'j'    => 10,
        
'k'    => 11,
        
'l'    => 12,
        
'm'    => 13,
        
'n'    => 14,
        
'o'    => 15,
        
'p'    => 16,
        
'q'    => 17,
        
'r'    => 18,
        
's'    => 19,
        
't'    => 20,
        
'u'    => 21,
        
'v'    => 22,
        
'w'    => 23,
        
'x'    => 24,
        
'y'    => 25,
        
'z'    => 26,
        
'1'    => 27,
        
'2'    => 28,
        
'3'    => 29,
        
'4'    => 30,
        
'5'    => 31,
        
'6'    => 32,
        
'7'    => 33,
        
'8'    => 34,
        
'9'    => 35,
        
'0'    => 36,
        
'A'    => 37,
        
'B'    => 38,
        
'C'    => 39,
        
'D'    => 40,
        
'E'    => 41,
        
'F'    => 42,
        
'G'    => 43,
        
'H'    => 44,
        
'I'    => 45,
        
'J'    => 46,
        
'K'    => 47,
        
'L'    => 48,
        
'M'    => 49,
        
'N'    => 50,
        
'O'    => 51,
        
'P'    => 52,
        
'Q'    => 53,
        
'R'    => 54,
        
'S'    => 55,
        
'T'    => 56,
        
'U'    => 57,
        
'V'    => 58,
        
'W'    => 59,
        
'X'    => 60,
        
'Y'    => 61,
        
'Z'    => 62,
        
'!'    => 63,
        
'\"'    => 64,
        
'£'    => 65,
        
'\$'    => 66,
        
'^'    => 67,
        
'&'    => 68,
        
'*'    => 69,
        
'('    => 70,
        
')'    => 71,
        
'_'    => 72,
        
'+'    => 73,
        
'-'    => 74,
        
'='    => 75,
        
'`'    => 76,
        
','    => 77,
        
'.'    => 78,
        
'/'    => 79,
        
'<'    => 80,
        
'>'    => 81,
        
'?'    => 82,
        
';'    => 83,
        
'\''    => 84,
        
'#'    => 85,
        
':'    => 86,
        
'@'    => 87,
        
'~'    => 88,
        
'['    => 89,
        
']'    => 90,
        
'{'    => 91,
        
'}'    => 92,
        
' '    => 93,
        
'%'    => 94,
    );

    function 
lookup($char){
        global 
$num_to_char;
        return 
$num_to_char[$char];
    }

    function 
grimstring_to_nums($string){
        
$nums = array();
        
$c 0;
        
$total 0;
        
$len strlen($string);
        while (
$c $len){
            
$a substr($string$c1);
            
$num substr($string$c+1$a);
            
$nums[] = $num;
            
$total += $num;
            
$c += $a+1;
        }
        
$total $total / (count($nums) + 1);
        
$out = array();
        foreach(
$nums as $num){
            
$out[] = $num $total;
        }
        return 
$out;
    }

    function 
crack_gcrypt($input){
        return 
implode(''array_map("lookup"grimstring_to_nums($input)));
    }
?>