-2

我们正在开发一个 PHP 应用程序,它将个人和匿名信息(“报告”)存储在 MySQL 数据库中。

对于每个人,可能会有几份“报告”,这些“报告”会发送到第三方登记处。

问题是第三方不知道哪些报告是针对同一个人的。因此,我们希望在发送报告时为该人添加一个唯一但无法追踪的 ID 。(由于第三方不知道我们内部人员的身份)

由于第三方可能希望通过其 id 与给定人员进行通信,因此我们需要能够将该 id解密为与我们的人员记录一起存储的 id。(所以散列不起作用)。我们还希望在不久的将来会有更多的外部方,我们希望为每个人提供不同的唯一 ID 。(通过使用不同的加密密钥)。

我们可以使用什么加密方法来加密一个人的 id,所以它总是会给出相同的结果?查看(例如)libsodium 扩展文档,我认为我们 每次加密一个人的 id 时都必须使用相同的随机数。这似乎是非常不鼓励的。
通过 php 的openssl_encrypt使用 AES 加密时,同样的问题将适用,其中:

如果通过 iv 参数传入空值,则会发出 E_WARNING 级别错误。

4

1 回答 1

0

我们还希望在不久的将来会有更多的外部方,我们希望为每个人提供不同的唯一 ID。(通过使用不同的加密密钥)。

+

查看(例如)libsodium 扩展文档,我认为我们每次加密一个人的 id 时都必须使用相同的随机数。这似乎是非常不鼓励的。

是的,甚至不用担心“key”与“iv/nonce”部分。只需使用defuse/php-encryptionHalite。它们都为您提供经过身份验证的加密,您需要提供的只是 amessage和 a key

于 2016-04-21T13:53:22.340 回答