整数的短加密



我给了一个加密输入整数值的任务,这个整数的最大长度为 4,但是,我需要加密成一个字母数字字符串。除此之外,我从相同的值(例如 10(生成的结果的值必须不同。最困难的部分是,加密字符串最大只能有 15 个长度,因为我们必须将其放在查询字符串中。这是一项艰巨的任务,我试图问谷歌,但我没有找到任何解决方案可以帮助我解决这个问题。所有的长度都太长了,不符合我需要的要求。任何加密专业人员都可以帮助我解决这个问题?

假设:"整数最大 6 长度"表示 6 个数字字符 000000-999999。

使用具有 8 字节块大小的算法进行加密,然后使用 Base64 编码,这将生成 12 个字符的输出。

将 2 个随机字节附加到 6 个字符的数据中以形成 8 个字节,这将导致多达 2^16 或 65536 个不同的相同值加密结果。在 ECB 模式和 Base64 编码下加密。这将产生 12 个字符的输出。

要恢复输入解码加密为数据的 Base64,请解密并删除 2 个随机字节。

可能的加密算法包括Blowfish,XTEA,DES等。

注意:对于更大范围的不同输出,6 位数字可以首先转换为 3 字节的二进制表示,允许 5 个随机字节为相同的 6 位输入产生 2^40 个不同的输出。

我假设您希望一个函数输入一个四位数字:[0000 .. 9999] 并生成 15 个字符的字母数字输出。

您没有明确说明此函数是否可逆。 如果不需要可逆性,那么单向哈希函数将执行您想要的操作。 15 个十六进制字符为 60 位,15 个 Base32 字符为 75 位。 使用更大大小的哈希函数,截断并转换为十六进制或 Base32。 Base32 提供的输出字符范围比十六进制更广泛。

对于可逆性,您将需要一个格式保留加密,其中输出大小限制为 60 或 75 个有效位。 对于 60 位,请使用 DES 作为基本密码,因为它具有 64 位块大小。 75位更尴尬。 AES 为 128 位,块大小太大,因此您可能需要编写简单的 76 位 Feistel 密码。 这会给你很好的隐蔽性,但只是中等的安全性。 你没有说这个功能需要有多安全。

最新更新