Ôtant une ID

Je suis à la recherche d'un moyen de crypter/obscurcir un ID d'entier dans un autre entier. Plus précisément, j'ai besoin d'une fonction int F(int x), de sorte que

  • x<->F(x) est one-to-one correspondance (si x != y, F(x) != F(y))
  • donnée F(x), il est facile à trouver x donc F n'est pas une fonction de hachage
  • x et F(x), il est difficile/impossible de trouver F(y), quelque chose comme x ^ 0x1234 ne fonctionne pas

Pour plus de clarté, je ne suis pas à la recherche d'une forte solution de chiffrement, c'est seulement de l'obscurcissement. Imaginez une application web avec les url comme example.com/profile/1, example.com/profile/2 etc. Les profils eux-mêmes ne sont pas secrets, mais je tiens à prévenir casual voyeurs à vue/chercher tous les profils, l'un après l'autre, donc, je préfère les cacher derrière quelque chose comme example.com/profile/23423, example.com/profile/80980234 etc. Bien que la base de données stockée jetons peuvent faire le travail assez facilement, je suis curieux de savoir si il y a quelques calculs simples disponibles pour cela.

Une exigence importante je n'ai pas été clair, c'est que les résultats devraient regarder "aléatoire", c'est, étant donné une séquence x,x+1,...,x+n , F(x),F(x+1)...F(x+n) ne devrait pas former une progression de tout genre.

  • Est int F(int x) d'une obligation, ou pourrait-il en être de type int[2]F(int x) ?
  • Rieck, dans l'idéal, j'aimerais x et F(x) soit dans la gamme de nombre
  • Peut-F(X) secret?
  • oui la fonction sera gardé secret
  • puisque vous avez dit que vous aimeriez aller sans jeton, est-ce à dire que vous voulez éviter tout type de table de recherche?
  • Mošmondor, oui, exactement.
  • L'homme, cette question est parfaitement indiqué et c'est exactement ce que je cherche. Nice job.

InformationsquelleAutor georg | 2011-12-18