Is it possible to have encryption with multiple private keys (PHP)?
或者:如何为一群用户存储加密数据?
我承认,这是一个愚蠢的问题,一把私人钥匙只限于一个人,正如这个词已经暗示的那样。但我有以下场景:
用户tom输入需要加密存储在数据库中的数据。用户决定要将此信息提供给Jim和Bob。用户john和jayne不能解密它。当然,也不适用于入侵服务器并访问加密数据和进行加密/解密的脚本的用户tim。
我认为使用phps openssl_public_encrypt函数的公钥/私钥方法在这里不起作用,因为两个用户需要使用"private"密钥来解密数据。
我想这是一个相当普遍的问题,但是如果它很重要,就必须用php(也可能是mysql)来完成。
这就是它在OpenPGP(以及其他系统)中的实现方式:-您正在生成用于加密数据本身的机密对称密钥;-然后,这个对称密钥用汤姆的密钥加密;-另外,对称密钥可以用Jim和Bob的公钥加密,允许他们解密密钥,然后解密数据。
php为此-
我不知道PHP中的库。但一般来说,程序如下:
- 使用对称密钥加密数据
- 对于每个收件人,使用收件人的公钥加密密钥
- 所有这些都保存在一个pkcs 7文件结构中。
在查找"php和pkcs7"时应该会有一些结果…
使用与Tom的密钥不同的数据加密密钥(称为Kgeneral)。
用Tom的公钥加密Kgeneral并将结果提供给Tom-他可以使用他的私钥解密并获取Kgeneral。
如果另一个用户需要访问数据,那么Tom(或您的应用程序)可以用他的公钥加密kgGeneral,并给他这样的访问权。