gpt4 book ai didi

php - 使用 SSL 证书进行加密与生成的 key

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:42 25 4
gpt4 key购买 nike

我正在从事加密工作,我目前正在使用 openssl_encrypt 解决方案来加密我的数据。目前我正在重写一个使用 openssl_public_encryptopenssl_private_decrypt 的旧代码库。

当然要匹配之前使用的加密方式,但是我正在考虑将加密后的数据解开,重写加解密方式。

openssl_public_encrypt 值的缺点是它们不能大于用于加密的证书。 openssl_encrypt 不存在此缺点。

http://php.net/manual/en/function.openssl-public-encrypt.php#55901

遗留代码库中的解决方法是将加密部分粘合在一起,以便能够加密大数据。这对我来说似乎非常困惑和密集。

我目前的解决方案是使用 openssl_encrypt 和一个简单的生成 key ,就像 Laravel 会为它生成一个 key :

protected function generateRandomKey()
{
return 'base64:'.base64_encode(random_bytes(
$this->laravel['config']['app.cipher'] == 'AES-128-CBC' ? 16 : 32
));
}

这非常有效,但由于我尚未完全意识到的原因,旧代码库选择了 SSL 证书进行加密/解密。

与公共(public)/私有(private)方式相比,openssl_encrypt 的优点/缺点是什么?

我想与第三方合作,您可以向他们提供您的公共(public)证书,但您也可以向他们提供您生成的 key 。

如果第三方(如金融系统)需要访问加密的内容,他们也可以解密。

在这两种情况下,您都提供了解密数据的 key 。

我希望有人能阐明为什么您会限制自己加密的值不超过您的证书,以便您可以使用 public/private openssl 函数。

干杯。

最佳答案

一些光……好吧……

首先让我们看看我们在这里处理的算法或算法类别:

公钥/私钥...这意味着使用 RSA...DH...等算法的非对称密码学...

与使用 AES ... DES ... TwoFish ... 等算法的对称密码学相比

如果您的代码库包含诸如由于数据量对于非对称算法来说太大而将大块加密数据粘合在一起之类的东西,那么可以肯定地说,构建它的人并不知道他/她在做什么。

对称算法用于加密批量数据......使用非对称算法对对称 key 进行加密,使得相应私钥的所有者可以解密对称 key ,从而可以解密批量数据密文

像 AES 这样的对称密码的 key 不会大于您在描述的方法中找到的大小限制

非对称密码学的原因是你可以与世界分享你的公钥,每个人都可以为你加密数据(这里的数据是指99%的现实世界场景:对称 key )但只有你作为持有者私钥可以解密......私钥永远不会离开你的手......除了所有者之外没有人可以访问它

证书只是一个公钥+元数据

该元数据包含有关谁拥有 key 对、它可能用于什么、 key 对何时有效等信息...

元数据被放入特定格式并由受信任的第三方签名......结果就是您所说的证书

证书上的签名是你可以用公钥加密做的其他事情......但这次反过来......要为特定数据集创建签名,你需要私钥......没有它你不能签名......但是持有公钥的每个人都可以验证签名......如果你改变签名所属数据中的一位,它就会变得无效,所以你不能简单地篡改内容证书,例如更改 key

更新:

如果您需要某些第三方能够在拥有您的公钥的情况下向您发送加密数据:

-他们创建了一个只有他们自己知道的随机对称 key (我们称之为 Ksym)
-他们使用该 key 和对称密码加密他们需要的任何数据... (ct=ENC(DATA,Ksym))
-他们使用您的公钥 (eKsym=ENC(Ksym,Kpub)) 为您加密 Ks
-他们给你发了 ct 和 eKsym

-你破译了 eKsym (Ksym=DEC(eKsym,Kpriv))
-你破译 DATA = DEC(ct,Ksym)

事实:

只有你和那个第三方知道 Ksym

如果您想以第三方无法解密的方式存储该数据,则需要重新加密

如果你存储 eKsym 和 ct 只有你和最初加密数据的第三方知道所需的解密 key Ksym(当然还有从你或第三方那里得到 key 的每个人)

有趣的事实是:Ksym 对于每个传入数据都是不同的,并且只对该数据有效......与另一个第三方共享一个 Ksym 只能访问属于该 key 的一个数据

关于php - 使用 SSL 证书进行加密与生成的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41297772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com