是否可以使用多个私钥 (PHP) 进行加密?

2022-08-30 20:58:25

或者:如何为一堆用户存储加密数据?

我承认,这是一个愚蠢的问题,正如该术语已经暗示的那样,私钥仅限于一个人。但我有以下场景:

用户 Tom 输入需要加密存储在数据库中的数据。用户决定要将此信息提供给 Jim 和 Bob。用户John和Jayne一定无法解密它。当然,也不是用户Tim,他破解了服务器并可以访问加密数据和进行加密/解密的脚本。

我认为具有PHP openssl_public_encrypt功能的公钥/私钥方法在这里不起作用,因为两个用户需要拥有该“私钥”密钥才能解密数据。

我想这是一个相当普遍的问题,但如果它很重要,它必须在PHP(也许还有MySQL)中完成。


答案 1

这就是它在OpenPGP(以及其他系统)中的做法: - 您正在生成秘密对称密钥,用于加密数据本身;- 然后,这个对称密钥用汤姆的密钥加密;- 此外,对称密钥可以使用Jim和Bob的公钥加密,允许他们解密密钥,然后解密数据


答案 2

PHP为此提供了一个函数 - openssl_seal()。此函数采用公钥数组,并对数据进行加密,以便可以使用任何一个相应的私钥对其进行解密(使用openssl_open())。


推荐