XOR von zwei hex-Zeichenketten
Ich will XOR der beiden strings (hex-codiert) in php.
Ich habe versucht, mit Hilfe des operators ^, aber ich bekomme nur 0.
Wie kann ich das tun? Warum ist es falsch?
- Können Sie zeigen einige code?
- Was ist, wenn die Saiten werden nicht gültig hexadezimale Zeichenfolgen? Was ist, wenn Sie eine andere Länge?
- Wenn es nur 32-bit ist, können Sie wahrscheinlich sscanf in eine Ganzzahl und tun XOR. Wenn es mehr ist, müssen Sie möglicherweise deine eigene Funktion schreiben.
- die wichtige Sache zu beachten ist, dass ^ wandeln Ihre Operanden in eine Zahl, wird es nicht funktionieren auf beliebigen Zeichenfolgen der Länge. So müssen Sie eine Schleife durch den string, der Konvertierung eines Oktett zu einer Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://codepad.org/fgRfAPAI
Das problem, dass Sie anfangs hatte, ist, dass ein hex-string ist in der Tat eine Zeichenfolge. Wenn Sie binäre Operatoren auf Zeichenketten, verwendet es die Zeichen-codes als byte-Wert.
Müssen Sie decodieren Sie mit hex2bin(), bevor Sie die XOR
^
- operator.Update: ich vergesse immer, dass diese Funktion erfordert PHP/5.4 oder höher, kann ein Problem sein. In einem solchen Fall müssen Sie verwenden, die nicht sehr intuitiv pack() Funktion:
Basierend auf @KingCrunch ' s Antwort hier und die Kommentare, die ich schrieb dieses einfache Schleife zu vergleichen Oktette und bauen die Antwort. Interessanterweise, dies hat das gleiche Ergebnis wie @lawlor Antwort.
Ich bin nicht wirklich sicher, wenn man entweder ein gültiges Ergebnis, aber ich Stelle das her, für feedback und falls es jemandem hilft, der @KingCrunch ' s Antwort, ohne zu wissen, wie man mit den Bytes.