Ho riscontrato il problema durante la conversione tra questo 2 tipo in PHP. Questo è il codice che ho cercato in GooglePHP converte stringa in esadecimale e esadecimale in stringa
function strToHex($string){
$hex='';
for ($i=0; $i < strlen($string); $i++){
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
function hexToStr($hex){
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2){
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
lo controllo e scoperto questo quando uso XOR per criptare.
Ho la stringa "this is the test"
, dopo XOR con una chiave, ho il risultato nella stringa ↕↑↔§P↔§P ♫§T↕§↕
. Dopo ciò, ho provato a convertirlo in esadecimale tramite la funzione strToHex() e ho ottenuto questi 12181d15501d15500e15541215712
. Quindi, ho provato con la funzione hexToStr() e ho ↕↑↔§P↔§P♫§T↕§q
. Quindi, cosa dovrei fare per risolvere questo problema? Perché sbaglia quando converto questo valore in 2 stili?
Sai che ci sono 'HEX2BIN()' e 'BIN2HEX()' in PHP? – SparKot
* strToHex * restituisce una * stringa * di hex - quindi se si XOR direttamente con l'operatore '^', questo non darà alcun risultato positivo. Forse potresti dare * strToHex * un altro parametro è il numero con cui vuoi XOR, e XOR direttamente all'interno di quella funzione: '$ hex. = Dechex (ord ($ stringa [$ i])^$ MYKEYBYTE);' –
Ho pensato che il problema è nella funzione hexToStr(). Perché quando si converte in stringa, passa lo spazio o qualche carattere speciale e crea il problema – JoeNguyen