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

时间:2013-01-31 17:02:37

标签: security encryption

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

2 个答案:

答案 0 :(得分:1)

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

此外,还有一些其他哈希算法将产生超过16个字符。您可以使用hash_algos查看系统上可用的内容。 Here's这样做的脚本。

答案 1 :(得分:1)

我不太了解这种“加密”背后的目的,这就是我所建议的(基于一些保守和保密的关于你的目标的假设):

  1. 选择一个随机数。称之为R。该数字最好至少为32位。
  2. 对于您拥有的每个8位数字标识符,请形成字符串“<digits of R><8 digit identifier>”。
  3. 使用一些加密安全散列算法来获取步骤2中形成的字符串的散列。
  4. 将步骤3中的哈希格式化为十六进制字符串。
  5. 使用步骤4中的十六进制字符串作为报告给“报告机构”的标识符。
  6. 此方案的好处是,只要您记住值R,就可以始终将每个8位数标识符映射到相同的十六进制字符标识符。这在您的申请中可能重要,也可能不重要。

    当然,此方案假设您永远不需要执行启示映射,并且该机构不想解密标识符。换句话说,它假设你的目标只是不给代理商提供标识符I,而是给我一个等价的标识符。