加密例程,用于将 8 位字段加密为 16(或更多)字符



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

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

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

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

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

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

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

最新更新