【发布时间】:2011-05-22 14:26:59
【问题描述】:
我在调试完为什么是not working on my server之后在CakePHP的核心类中发现了这个加密解密代码。
我只是想知道它背后的逻辑。它究竟是如何加密和解密的?为什么使用 $j 的 for..loop,以及 XOR 运算符 ^ 对此有何帮助?
function cipher($text, $key) {
if (!defined('CIPHER_SEED')) {
//This is temporary will change later
define('CIPHER_SEED', '76859309657453542496749683645');
}
srand(CIPHER_SEED);
$out = '';
for ($i = 0; $i < strlen($text); $i++) {
for ($j = 0; $j < ord(substr($key, $i % strlen($key), 1)); $j++) {
$toss = rand(0, 255);
}
$mask = rand(0, 255);
$out .= chr(ord(substr($text, $i, 1)) ^ $mask);
}
return $out;
}
【问题讨论】:
-
可以在@codepad.org/oXoewRmh找到示例输出
标签: php encryption cakephp-1.2