我是 PHP 新手,但我想我会尝试一下...
这是我的代码:
function ScrambleDataPlus($inData){
$normalAlphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜabcdefghijklmnopqrstuvwxyzäöü.-,& ";
$scrambAlphabet1 = "ZXe.LSzdQVkcOt74Üüsry12b$0B#RfWöiEw,aIPAKDC3ÄN&JTjFmgn6Ux8YpvoqhGu5älHÖ9M";
$scrambAlphabet2 = "1eTLUÄzXjYp.dx684IÜ5äWgnCüsr7DEw,3voFGVhiQu&HÖ2JfOty#RbMP9ZamklSö$0BNcqAK";
$reorderPosition = array(3,12,15,7,2,11,14,1,10,8,4,13,6,16,5,9,0);
$outData = array();
$backup = array();
$result = "";
$alphabetPosition = 0;
$newPosition = 0;
if(strlen($inData) == 17)
{
//Scramble data with first aphabet
for ($i = 0; $i < strlen($inData); $i += 2)
{
$alphabetPosition = strpos($normalAlphabet, $inData[$i]);
$outData[$i] = $scrambAlphabet1[$alphabetPosition];
//print("From: ".$inData[$i]." to: ".$outData[$i]);
}
//print(sizeof($outData)."<br>");
//printArray($outData);
//Scramble data with second aphabet
for ($i = 1; $i < strlen($inData); $i += 2)
{
$alphabetPosition = strpos($normalAlphabet, $inData[$i]);
$outData[$i] = $scrambAlphabet2[$alphabetPosition];
}
//print(sizeof($outData)."<br>");
//printArray($outData);
//mix original order
$backup = $outData;
for ($i = 0; $i < strlen($inData); $i++)
{
$newPosition = $reorderPosition[$i];
$outData[$i] = $backup[$newPosition];
}
//print(sizeof($outData)."<br>");
//printArray($outData);
for ($i = 0; $i < sizeof($outData); $i++)
{
$result .= $outData[$i];
//print($i.". iteration: ".$outData[$i]."<br>");
}
}
else
$result = "Fehler";
return $result;
}
这两个字符串是我的加扰字母表。我注意到一些奇怪的行为:一些字母被错误的“乱码”字母取代。
例如:从:0 到:Z;从: 。至:H;从:7 到:d;从:2 到:e;从:1 到:X;从:h 到:N;从:l 到:j;从:o 到:g;从:0 到:Z;9
注意,那个“。” 应该是“l”(一)和“l”(较低的 L)应该是“F” - 那么这里发生了什么?!
PS .:对于调试的东西很抱歉 - 我只是想知道发生了什么......