下面是我要对permalinks中的数据库id进行混淆的方法:
1)使用长密钥的异或 id 2) (旋转、翻转、反向)位以可逆的方式在异或整数中稍微环绕 3)用我自己的所有字母数字字符的秘密加扰序列(A-Za-z0-9)对生成的整数进行编码。
将我的Base 62编码转换回基础10有多难?
还有多难反向工程整个过程呢?(显然没有在源代码或编译代码上达到峰值)我知道‘只有XOR’很容易受到基本分析的影响。
编辑:结果应该是不超过8-9个字符长的,3 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。
发布于 2013-02-22 15:10:02
如果允许攻击者玩弄输入,熟练的攻击者对数据进行“解密”将是微不足道的。现代密码系统的一个关键特性是"雪崩效应“,这是您的系统所缺乏的。基本上,这意味着输出的每一点都与输入的每一点相连接。
例如,如果允许系统的攻击者看到id = 1000生成输出"ACAAA“,而id=1001生成"ABAAA”,而id=1002生成“ACAAA”,则算法可以很容易地反转,并获得密钥的值。
也就是说,这个问题更适合https://security.stackexchange.com/或https://crypto.stackexchange.com/。
发布于 2013-02-22 16:19:23
对于任何试图开发自己密码的人来说,标准的建议是“不要”。高级建议是阅读Bruce的给业余密码设计师的备忘录,然后不要。
您不是第一个需要混淆ID的人,所以已经有可用的方法了。@CodesInChaos在上面提出了一个很好的方法;您应该首先尝试一下,看看它是否满足您的需要。
https://stackoverflow.com/questions/15026255
复制相似问题