我必须使用 php 脚本转换一些最终可能达到 250 mb 的文件。它们使用 rc4 加密方式进行加密,密钥和描述包含在文件的前 266 个字节中。我有一个正在工作的加密功能,我必须保持原样。这里是:
function rc4($key, $str) {
$s = array();
for ($i = 0; $i < 256; $i++) {
$s[$i] = $i;
}
$j = 0;
for ($i = 0; $i < 256; $i++) {
$j = ($j + $s[$i] + ord($key[$i % strlen($key)])) % 256;
$x = $s[$i];
$s[$i] = $s[$j];
$s[$j] = $x;
}
$i = 0;
$j = 0;
$res = '';
for ($y = 0; $y < strlen($str); $y++) {
$i = ($i + 1) % 256;
$j = ($j + $s[$i]) % 256;
$x = $s[$i];
$s[$i] = $s[$j];
$s[$j] = $x;
$res .= $str[$y] ^ chr($s[($s[$i] + $s[$j]) % 256]);
}
return $res;
}
我的文件读取/解密代码在这里:
$fin = fopen("input.txt", "rb");
$fout = fopen("output.txt", "wb");
$contents = fgets($fin,10);
$mykey = fgets($fin,256);
if($contents =="dump"){
while(!feof($fin))
{
$line = fgets($fin);
fwrite($fout, rc4($mykey, $line));
}
fclose($fin);
fclose($fout);
}
以前,代码接受一些小文件,并通过读取其中的空洞内容并将其传递给 rc4 函数来转换它们......现在代码需要处理一些更大的文件,我必须逐行执行线。
生成的文件已损坏...是因为 rc4 加密需要解密“字符串”孔吗?我做错了什么吗?
谢谢!