gpt4 book ai didi

python - 对称整数到整数加密

转载 作者:太空狗 更新时间:2023-10-29 19:25:59 25 4
gpt4 key购买 nike

我需要一些关于如何将一个 int 加密为另一个 int 的指示或实际示例,并且需要一个 key 来解密该值。

类似于:

encrypt(1, "secret key") == 67123571122
decrypt(67123571122, "secret key") == 1

这个人几乎问了同样的问题:Symmetric Bijective Algorithm for Integers
但是我是一个完全加密的“n00b”,我想要一些更实际的例子,如果可能的话,在 python 中。

我知道我需要使用某种分组密码,但我对保持加密结果仍然是数字并且有点短(可能是 long 而不是 int)的部分感到很迷茫

有什么指点吗?谢谢

更新-我为什么要这样做?
我有一个网络服务,其中每个“对象”都有一个 URL,例如:example.com/thing/123456/

现在,这些 ID 是连续的。我想隐藏它们是连续的(数据库 ID)这一事实。

这些页面上的内容不是“最高 secret ”或类似的内容,但对于某些人来说,窥探其他随机对象并不像在 URL 中递增该 ID 那样容易。

因此,通过某种双向数字加密,URL ID 将完全不是连续的,而且要找到更多这样的对象需要花费相当多的时间。 (此外,请求受到限制)

我想保留这个数字而不是任意字符串的唯一原因是这样的更改是一个完全的直接替换,并且在没有任何其他代码更改的情况下一切正常。

此外,我不能只生成新的随机数据库 ID。我必须在应用程序中处理此加密/解密。

最佳答案

这取决于您想要的加密安全程度。对于不太安全的(在加密意义上 - 如果您真的不希望受到严重攻击,可能适合日常使用)那么使用固定 key 的 XOR 将起作用。请注意,它很容易受到一些相当基本的密码分析的攻击。<​​/p>

如果您想要真正的加密,您可能必须使用像 RC4 这样的流密码。您可以获取 32 位 key 流并将其与您的值进行异或以加密它。只要您为每个值获得一个新的 32 位 key 流就可以了。

但是,RC4 有一些注意事项,所以请先阅读它。

在这种情况下, block 密码将不是您的 friend ,因为它们的 block 大小都为 64 位或更多。这意味着您需要将 32 位整数填充为 64 位,然后您将返回 64 位……但您无法选择保留哪 32 位。您将无法仅用一半的位来解密它。如果您愿意转向多头,那么您可以使用 3DES 或 Blowfish。

这完全取决于您要加密的内容和原因,因此很难给出明确的答案。我希望这至少能让人知道从哪里开始。

关于python - 对称整数到整数加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4028998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com