我们正在开发一个PHP应用程序,用于在MySQL数据库中存储个人和匿名信息(“报告”)。
对于每个人,可能会有几个“报告”,这些报告会被发送到第三方注册。
问题是第三方不知道哪些报告是针对同一个人的。因此,我们希望在发送报告时为此人添加一个唯一但无法追踪的ID 。 (因为第三方不知道我们内部人的身份)
由于第三方可能希望通过其ID与某个人进行通信,因此我们需要能够将该ID解密为与我们的个人记录一起存储的ID。 (所以散列不起作用)。我们还预计在不久的将来会有更多的外部参与方,我们希望每个人都有一个不同的唯一ID 。 (使用不同的加密密钥)。
我们可以使用哪种加密方法来加密某个人的身份证,因此它会始终给出相同的结果?查看(例如)libsodium extension docs,我认为每次加密某个人的ID时,我们都必须使用相同的随机数。这似乎非常气馁 使用AES加密时,同样的问题也适用于php openssl_encrypt其中:
如果通过iv参数传入空值,则发出E_WARNING级别错误。
答案 0 :(得分:0)
我们还预计在不久的将来会有更多的外部参与者,我们希望每个人都有不同的唯一ID。 (使用不同的加密密钥)。
+
查看(例如)libsodium扩展文档,我认为每次加密一个人的id时我们都必须使用相同的nonce。这似乎非常气馁。
是的,不要担心"键" vs" iv / nonce"部分。只需使用defuse/php-encryption或Halite即可。它们都为您提供经过身份验证的加密,您需要提供的只有message
和key
。