Jak zakodować tekst w systemie szesnastkowym? (Hex, Hexadecimal)

piechnat

Do zakodowania posłużymy się funkcjami:

  • ord() - zwraca kod ascii podanego znaku
  • dechex() - zmienia zapis liczby z systemu dziesiętnego na szesnastkowy
  • str_pad() - dopełnia string jakąś sekwencją znaków do podanej długości

Tej ostatniej użyjemy aby liczba w systemie heksadecymalnym zapisana była zawsze za pomocą dwóch znaków.

Do odkodowania wykorzystamy funkcję odwrotnie działającą do ord(), czyli chr() oraz analogicznie w przypadku dechex() funkcję hexdec().

function koduj ( $str ) {
    $temp = '';
    for ( $i = 0; $i < strlen( $str ); $i++) {
        $temp = ord( $str[$i] );
        $temp = dechex( $temp );
        $temp = str_pad( $temp, 2, '0', STR_PAD_LEFT );
        $result .= $temp;
    }
    return $result;
}

function dekoduj ( $str ) {
    $temp = '';
    for ( $i = 0; $i < strlen( $str ); $i = $i + 2 ) {
        $temp = $str[$i] . $str[$i+1];
        $temp = hexdec( $temp );
        $temp = chr( $temp );
        $result .= $temp;
    }
    return $result;
}

Użycie:

$tekst = 'Litwo !!! ojczyzno moja :-)';
$zakodowany_tekst = koduj( $tekst );
$odkodowany_tekst = dekoduj( $zakodowany_tekst );
    
echo $tekst . '<br>';
echo $zakodowany_tekst . '<br>';
echo $odkodowany_tekst;

2 komentarzy

Adrian Berry napisał(a)

Szyfrów nie należy utożsamiać z kodami

ASCII to kod :P
system szesnastkowy też :)

WOW normalnie odkrycie... nie do złamania