Титановый ускоритель php mcrypt

Я пробовал много вещей, и у меня все еще есть проблемы... Я работаю с Titanium Appcelerator Studio (новейшая версия) на ПК (Win7) создания настольных приложений с помощью PHP. до сих пор все мои другие тесты шли отлично, но у меня возникли проблемы с использованием функций mcrypt.

вот код, с которым я работаю:

<html>
<head>
<title> crypto </title>
<style type="text/css">
*, html, body {
    margin: 0;
    padding: 0;
    border: 0;      
}
body {
    background: #000;
    color: #fff;
    font: normal 12pt Arial, Helvetica, San-serif;
}
.wrap {
    margin: 20px auto;
    width: 80%;
    border: 1px solid #ccc;
    background: #333;
}
.row {
    padding: 5px;
    border-bottom: 1px solid #666;
}
</style>
<script type="text/php">

function check($name) {
    $d = '<div class="row">';
    $e = '</div>';
    if(function_exists($name)) {
        return $d.$name.": found".$e;
    } else {
        return $d.$name.": not found".$e;
    }
}
function test1() {
    $key = "this is a secret key";
    $input = "Let us meet at 9 o'clock at the secret place.";
    $encrypted_data = mcrypt_cbc('tripledes', $key, $input, 'mcrypt_encrypt');    

    $d = '<div class="row">';
    $b = '<br/>';
    $e = '</div>';
    return $d."key:".$b.$key.$e.$d."clear     text:".$b.$input.$e.$d."encrypted:".$b.$encrypted_data.$e;
}
function test2() {
    $key = "this is a secret key";
    $input = "Let us meet at 9 o'clock at the secret place.";

    $td = mcrypt_module_open('tripledes', '', 'cbc', '');
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), 'mcrypt_rand');//alt_mcrypt_create_iv(8));
    mcrypt_generic_init($td, $key, $iv);
    $encrypted_data = mcrypt_generic($td, $input);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    $d = '<div class="row">';
    $b = '<br/>';
    $e = '</div>';
    return $d."key:".$b.$key.$e.$d."clear     text:".$b.$input.$e.$d."encrypted:".$b.$encrypted_data.$e;
}
function alt_mcrypt_create_iv($size) {
    $iv = '';
    for($i = 0; $i < $size; $i++) {
        $iv .= chr(rand(0,255));
    }
    return $iv;
}
</script>
<script language="JavaScript" type="text/javascript" src="lib/js/jq-min.js"></script>
    <script type="text/javascript">
    function ready() {
        $("#box").html(check("md5"));
        $("#box").append(check("sha1"));
        $("#box").append(check("xero")); // a fake function name for testing
        $("#box").append(check("mcrypt_encrypt"));
        $("#box").append(check("mcrypt_decrypt"));
        $("#box").append(check("mcrypt_cbc"));
        $("#box").append(check("mcrypt_cfb"));
        $("#box").append(check("mcrypt_ecb"));
        $("#box").append(check("mcrypt_ofb"));
        $("#box").append(check("mcrypt_generic"));
        $("#box").append(check("mcrypt_module_open"));
        $("#box").append(check("mcrypt_module_close"));
        $("#box").append(check("mcrypt_create_iv"));
        $("#box").append(check("mcrypt_generic_init"));
        $("#box").append(check("mcrypt_generic_deinit"));
        $("#box2").html(test1());
        $("#box3").html(test2());
    }   
</script>
</head>
<body>
<div id="box2" class="wrap">
    <input type="button" value="test" onclick="ready()" />
</div>
<div id="box3" class="wrap">
    &nbsp;
</div>
<div id="box" class="wrap">
    &nbsp;
</div>
</body>
</html>

в основном 3 деления, затем вы нажимаете кнопку "тест", запускается серия тестов. сначала я вызываю функцию function_exists много раз, чтобы увидеть, доступны ли функции mcrypt (они отображаются правильно). Затем я выполняю функции test1 и test2, каждая из которых пытается выполнить простое шифрование строки и вернуть результаты. один использует старый метод mcrypt_cbc, а другой - более новый mcrypt_generic.

Когда я запускаю приложение, кажется, что все работает нормально, например, я не вижу никакой ошибки в отладчике (хотя обработка ошибок php немного странная в Ti). но когда я возвращаю переменную $ encrypted_data из функции ether, ничего не возвращается. если я удаляю его из оператора return, я получаю все остальные переменные, но не ту часть, которую хочу.

у других пользователей Ti есть предложения для меня?

Спасибо заранее.

0 ответов

Другие вопросы по тегам