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;
}
2 つの文字列は、私のスクランブリング アルファベットです。いくつかの奇妙な動作に気付きました: 一部の文字が間違った「スクランブル」文字に置き換えられています。
例: から: 0 から: Z; から: 。Hまで; から: 7 から: d; から: 2 から: e; から: 1 から: X; から: h から: N; から: l から: j; から: o から: g; から: 0 から: Z; 9
「。」に注意してください。は "l" (1) で、"l" (小文字の L) は "F" である必要があります。
PS .: デバッグの件は申し訳ありません - 何が起こっているのか知りたかっただけです...