Deixa eu ver se eu entendi: você não quer publicar o ID nas URLS. Você quer evitar esse problema:
http://seuDominio.com/usuario/1
Ah, se eu sei que existe o ID 1, eu posso maliciosamente fazer:
http://seuDominio.com/usuario/2
E acessar o segundo usuário, porque estou passando os ID's sequenciais então é fácil chutar. É isso?
Se for isso, você resolve da mesma maneira em PHP, Java ou qualquer outra tecnologia, basta usar um UUID no lugar do ID do produto. Não há mágica quanto a isso, você gera para seu usuário, além do ID, um ID único (uma espécie de hash, usando seus termos) e passa a usar esse ID no lugar do ID sequencial. Assim temos:
http://seuDominio.com/usuario/er433hdhdhdh233
Como saber agora qual é o próximo usuário? Não dá! Era isso a sua dúvida?
Novamente: isso não tem relação com uma tecnologia específica, isso é uma prática já feita há séculos que consiste na geração além do ID de uma entidade, seu UUID correspondente e em todos os lugares você passa a usar esse UUID.
Se não saber gerar um UUID, segue um link do stackoverflow para ajudá-lo:
http://stackoverflow.com/questions/534839/how-to-create-a-guid-in-python
Se tirei sua dúvida, não deixe de marcar a minha resposta como solução.