0

我希望代码用 n + x 位非顺序地渲染 n 位。我会用 Google 搜索它,但我的 Google-fu 不起作用,因为我不知道它的术语。

例如,第一列(2 位)中的输入值可能被编码为以下逗号分隔的第二列(4 位)中的任何输出值:

 0  1,2,7,9
 1  3,8,12,13
 2  0,4,6,11
 3  5,10,14,15

我的目标是获取一个整数 ID 列表,并以它们仍可用于持久 URL 的方式对其进行转换,但不能按顺序迭代/枚举,并且客户端无法以编程方式确定搜索中的 URL结果集之前已访问过而没有再次访问过。

4

1 回答 1

1

我将这个过程称为“编码”。您将看到类似的操作,以允许使用具有数据中不允许的特殊符号的通信通道。示例:uuencoding 和 base64 编码。

也就是说,您仍然需要(并且乍一看应该)确保只有一个正确的解码;并接受输出大小的增加(在上述情况下,输出将是大小的两倍,逐位作为输入)。

我认为您最好使用便宜的密码+存储在服务器上的恒定密钥对数字进行加密,在末尾添加一个或四个随机字符以及便宜的校验和,然后简单地拒绝任何不响应的响应'没有有效的校验和。

<encrypt(secret)>
    <integer>+<random nonsense>
</encrypt>
+
<checksum()>
    <integer>+<random nonsense>
</checksum>

然后解密第一部分(记住,便宜 == 快),使用校验和验证密文,扔掉随机废话,并使用您存储的整数。

这里可能有一些密码学上的禁忌,但让我们面对现实吧,这个算法被破坏的成本有点偏低。

于 2012-08-01T05:22:26.920 回答