PHP: ID corta como Youtube, con sal

Necesito codificar / cifrar identificadores de bases de datos y agregarlos a mis URL. La seguridad no es un problema con el que estoy tratando de lidiar, pero estoy buscando algo con seguridad moderada. El objetivo principal es tener identificadores cortos que sean únicos y seguros para URL.

Parece que el siguiente fragmento hará lo que necesito (dehttp://programanddesign.com/php/base62-encode/)

function encode($val, $base=62,  $chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') {
    // can't handle numbers larger than 2^31-1 = 2147483647
    $str = '';
    do {
        $i = $val % $base;
        $str = $chars[$i] . $str;
        $val = ($val - $i) / $base;
    } while($val > 0);
    return $str;
}

function decode($str, $base=62, $chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') {
    $len = strlen($str);
    $val = 0;
    $arr = array_flip(str_split($chars));
    for($i = 0; $i < $len; ++$i) {
        $val += $arr[$str[$i]] * pow($base, $len-$i-1);
    }
    return $val;
}

echo encode(2147483647); // outputs 2lkCB1

Probablemente modifique un poco las funciones:

Elimine el parámetro $ base; que puede ser resuelto por strlen ($ chars)Elimine del juego de caracteres letras / números que pueden confundirse entre sí (por ejemplo, 0, O, o)

¿Cómo cambiaría el script para que también pueda usar una sal con él? ¿Y sería una idea sabia? ¿Inadvertidamente aumentaría la posibilidad de colisión, etc.?

Respuestas a la pregunta(2)

Su respuesta a la pregunta