以下是我将要在永久链接中混淆数据库 ID 的方法:
1)用一个冗长的密钥对 id 进行异或
2)以可逆的方式在异或整数中稍微加扰(旋转,翻转,反转)位
3) Base 62用我自己的所有字母数字字符的秘密加扰序列对结果整数进行编码 (A-Za-z0-9)
将我的 Base 62 编码转换回 Base 10 有多难?
另外,对整个过程进行逆向工程有多困难?(显然没有在源代码或编译代码上取得高峰)我知道“只有 XOR”很容易受到基本分析的影响。
编辑:结果不应超过 8-9 个字符长,3DES 和 AES 似乎会产生很长的加密文本,并且不能在 URL 中实际使用
生成的字符串如下所示:
In [2]: for i in range(1, 11):
print code(i)
...:
9fYgiSHq
MdKx0tZu
vjd0Dipm
6dDakK9x
Ph7DYBzp
sfRUFaRt
jkmg0hl
dBbX9nHk4
ifqBZwLW
WdaQE630
正如你所看到的,1 看起来一点也不像 2,所以这似乎非常适合混淆 id。