<?
    $cal_map 
= 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 
$cal_map;
        foreach(
array_keys($cal_map) as $k){
            if (
$cal_map[$k] == $char){
                return 
$k;
            }
        }
    }

    function 
crack_total($nums){
        for (
$i 0$i<=1000$i++){
            
$total 0;
            foreach(
$nums as $num){
                
$total += $num $i;
            }
            if (
$i == $total){
                return 
$i;
            }
        }
        return 
0;
    }

    function 
crack_gcrypt($input){
        
$chars = array();

        for (
$i 0$i strlen($input); $i++){
            
$chars[] = substr($input$i1);
        }

        
$nums = array();
        
$c 0;
        while(
$c count($chars)){
            
$len $chars[$c];
            
$c++;
            
$char '';
            for(
$i=0$i<$len$i++){
                
$char .= $chars[$c];
                
$c++;
            }
            
$nums[] = $char;
        }
        
$total crack_total($nums);
        
$output '';
        foreach(
$nums as $num){
            
$output .= lookup($num $total);
        }
        return 
$output;
    }
?>