如何在PHP中使用BLENC?

时间:2014-06-11 09:23:18

标签: php encryption

我有一个testcode.php文件需要编码:

<?php
    $hello = "Hello World!";
?>

我创建了文件encode.php来加密和测试该文件:

<?php
    /* read the PHP source code */
    $source_code = file_get_contents("testcode.php");

    /* create the encrypted version */
    $redistributable_key = blenc_encrypt($source_code, "encrypt.php");

    /* read which is the key_file */
    $key_file = ini_get('blenc.key_file');

    /* save the redistributable key */
    file_put_contents($key_file, $redistributable_key, FILE_APPEND);

    include 'encrypt.php';
    echo $hello;
?>

但是当我运行encode.php时,我收到了这些错误:

  

警告:blenc_compile:验证脚本&#39; encrypt.php&#39;失败。   MD5_FILE:910e6a45f806ba3dc42830839971cb53   MD5_CALC:c38a6b2f389267a272ea656073a463 in in   第14行的C:\ xampp \ htdocs \ PHPEncode \ encode.php

  

致命错误:blenc_compile:验证脚本&#39; encrypt.php&#39;失败了,   无法执行。在第14行的C:\ xampp \ htdocs \ PHPEncode \ encode.php

帮帮我解决,谢谢! :)

4 个答案:

答案 0 :(得分:2)

当blenc.key_file中有多个可再发行键时,BLENC会出现问题。请参阅我报告的PHP bug #68490

此外,当您多次运行脚本时,bissc.key_file中的可再发行键将被破坏。这是因为您要附加到该文件,但所有键都保存在同一行(同样的破坏示例在php手册页上)。你应该把它改成:

file_put_contents($key_file, $redistributable_key."\n", FILE_APPEND);

你得到的第二个致命错误可能是因为blenc.key_file已损坏。

答案 1 :(得分:1)

;)只需删除页面中的“<?php ?>”* .php即可 编译时不是用“<?php and ?>

刚     $ hello =“Hello World!”;

并且还可以:)!

答案 2 :(得分:0)

您需要在名为blenc.key_file的{​​{1}}变量或php.ini中指定blenc.key_file的完整位置,无法在运行时设置.htaccess (此时密钥文件已被读取)。

ini_set()示例:

.htaccess

每次加密文件时都会生成一个新的$ redistributable_key! 您必须在密钥@中包含所有密钥 或者使用固定(私有)加密密钥进行所有加密:

php_value blenc.key_file /path/path/path/key_file.blenc

答案 3 :(得分:0)

<?php
    $file_name = basename($file);

    $source_code = file_get_contents($file);

    //This covers old-asp tags, php short-tags, php echo tags, and normal php tags.
    $contents = preg_replace(array('/^<(\?|\%)\=?(php)?/', '/(\%|\?)>$/'), array('',''), $source_code);

    $html .= "<br> BLENC blowfish unencrypted key: $unencrypted_key" . PHP_EOL;
    $html .= "<br> BLENC file to encode: " . $file_name . PHP_EOL;

    //file_put_contents('blencode-log', "---\nFILE: $file_name\nSIZE: ".strlen($contents)."\nMD5: ".md5($contents)."\n", FILE_APPEND);

    $redistributable_key = blenc_encrypt($contents, TARGET_DIR . '/blenc/' . $file_name, $unencrypted_key);
    $html .= "<br> BLENC size of content: " . strlen($contents) . PHP_EOL;

    /**
    * Server key
    * key_file.blenc
    */
    file_put_contents(TARGET_DIR . '/blenc/' . 'key_file.blenc', $redistributable_key . PHP_EOL);
    $html .= "<br> BLENC redistributable key file key_file.blenc updated." . PHP_EOL;
    exec("cat key_file.blenc >> /usr/local/etc/blenckeys");
?>

https://github.com/codex-corp/ncryptd/blob/master/app/controllers/MagicalController.php#L479