0

我有一个 8 位字段,我想将它加密(我不担心解密它)成一个 16 个字符(或更多)的字段。我需要这个,所以我可以使用加密字段发送给报告机构。

4

2 回答 2

1

由于您不需要解密,因此可以(不可逆地)对其进行哈希处理,而不是使用加密。在 PHP 中,您可以使用散列fnv164散列算法来执行此操作,该算法返回 16 个字符的散列。

此外,还有其他几种哈希算法会产生超过 16 个字符。您可以使用hash_algos查看系统上可用的内容。这是一个执行此操作的脚本。

于 2013-01-31T17:18:42.667 回答
1

在不太了解这种“加密”背后的目的的情况下,这就是我的建议(基于一些关于您的目标的保守和安全假设):

  1. 选择一个随机数。调用它R。该数字最好至少为 32 位长。
  2. 对于您拥有的每个 8 位标识符,形成字符串“ <digits of R><8 digit identifier>”。
  3. 使用一些加密安全的散列算法来获取在步骤 2 中形成的字符串的散列。
  4. 将步骤 3 中的哈希格式化为十六进制字符串。
  5. 使用步骤 4 中的十六进制字符串作为向“报告机构”报告的标识符。

这种方案的好处是,只要您记住该值R,您就可以始终将每个 8 位标识符映射到相同的十六进制字符标识符。这在您的应用程序中可能很重要,也可能不重要。

当然,此方案假定您永远不需要执行反向映射,并且该机构不想解密标识符。换句话说,它假设您的目标只是不给代理机构标识符 I,而是给代理机构一个等效标识符 I'。

于 2013-01-31T18:34:50.817 回答