加密字符串以获得固定长度

2024-04-25 08:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下字符串的可能值:

exp="110"
exp="110-120"
exp="110-120-211"

实际上,这是从URL获取的GET参数。exp可能会变得非常大,所以我想缩短它(加密它)。不是因为安全原因,而是因为我不想让它变得又长又丑。在

所以我想把exp加密成一个固定长度的短字符串,比如说15。有可能吗?像这样:

^{pr2}$

我用的是python

编辑

{cd3>还需要提一下功能。此外,我更喜欢标准python库中的解决方案,而不必安装新的包。在


Tags: 字符串功能url编辑参数标准get原因
3条回答

如果安全性根本不是问题,而您只想混淆和缩小,那么可以使用base64?它是用Javascript和Python实现的,因此您可以轻松地在前端对其进行编码,在后端对其进行解码。在

但是,这不会给你一个固定的长度,除非你故意垫到某个长度大于实际长度。在

不,不可能以可逆的方式将任意大的数据集拟合成固定长度。你需要更好地定义通过的内容。在

例如,如果:

  • 从你的例子来看,它看起来像是一个数字列表。在
  • 数量相对较少。在
  • 不允许重复

如果这些都是真的,你可以将你的列表以位的形式打包到一个固定大小的二进制流中,最大位数为最大位数,然后用base64对其进行编码。这将是固定长度和可逆的。在

你的琴弦有多长?如果它们足够长,可以使用zlib(或标准库中的另一个压缩模块)压缩它们,然后在其上运行base64。在

>>> z = base64.encodestring(zlib.compress("123"))
>>> print z 
eJwzNDIGAAEtAJc=
>>> zlib.decompress(base64.decodestring(z)) 
'123'

这不会缩小你的字符串,除非它们很长(在我的测试中,原始字符串中有36个字符)。你也没有固定的长度,但我不相信有任何方法可以达到这一点。在

相关问题 更多 >