解码自定义基本编码有多困难/容易?

时间:2013-02-22 14:20:49

标签: security cryptography encryption base62

以下是我要在永久链接中混淆数据库ID的方法:

  

1)XOR 带有冗长密钥的ID

     

2)以可逆的方式在XOR的整数中稍微加扰(旋转,翻转,反转)位

     

3)Base 62编码生成的整数,我自己的秘密扰乱了所有的序列   字母数字字符(A-Za-z0-9)

将我的Base 62编码转换回基数为10会有多困难?

同样对整个过程进行逆向工程有多难?(显然没有在源代码或编译代码中达到峰值)我知道'只有XOR'非常容易受到基本分析的影响。

编辑:结果应不超过8-9个字符,3DES和AES似乎会生成非常长的加密文本,并且实际上无法用于网址

结果字符串类似于:

In [2]: for i in range(1, 11):
    print code(i)
   ...:     
9fYgiSHq
MdKx0tZu
vjd0Dipm
6dDakK9x
Ph7DYBzp
sfRUFaRt
jkmg0hl
dBbX9nHk4
ifqBZwLW
WdaQE630

正如你所看到的,1看起来不像2,所以这似乎对于id的混淆效果很好。

2 个答案:

答案 0 :(得分:2)

如果允许攻击者使用输入,那么技术娴熟的攻击者“解密”数据将是微不足道的。现代加密系统的一个重要特性是你的系统缺乏的“Avalanche effect”。基本上它意味着输出的每一位都与输入的每一位相连。

如果系统的攻击者被允许看到,例如,id = 1000产生输出“AAAAAA”并且id = 1001产生“ABAAA”并且id = 1002产生“ACAAA”,则算法可以容易地被反转,和获得的密钥的值。


尽管如此,这个问题更适合https://security.stackexchange.com/https://crypto.stackexchange.com/

答案 1 :(得分:2)

任何试图开发自己的密码学的人的标准建议是“不要”。高级建议是阅读Bruce Schneier的Memo to the Amateur Cipher Designer,然后再阅读。

您不是第一个需要对ID进行模糊处理的人,因此已有可用的方法。 @CodesInChaos提出了一个很好的方法;你应该先尝试一下,看看它是否符合你的需求。