为了这个问题忽略密钥管理和其他外部因素,这真的很简单吗?
获取代码 作品 一般来说,短期投入?是。
获得有效的代码 安全 ,对于任何长度的输入?我们都不希望!但不是。
为了好玩,尝试使用此代码加密整个博客文章。如果您的博文明显长于推文,那将会很难。
<?php $config = array( "digest_alg" => "sha512", "private_key_bits" => 4096, "private_key_type" => OPENSSL_KEYTYPE_RSA, ); $res = openssl_pkey_new($config); openssl_pkey_export($res, $privKey); $pubKey = openssl_pkey_get_details($res); $pubKey = $pubKey["key"]; $message = file_get_contents('https://paragonie.com/blog/2018/04/protecting-rsa-based-protocols-against-adaptive-chosen-ciphertext-attacks/source'); openssl_public_encrypt($message, $secret, $pubKey); var_dump($secret);
这将输出 NULL ,因为邮件大小是 比RSA允许的时间长得多 。
NULL
你可能想把你的消息分成几块然后独立解密。消息可以随意删除或重新排序,它仍然可以解密。它在语义上不安全。
此外,默认填充模式(PKCS#1 v1.5)易受攻击 可追溯到1998年的袭击事件 。
因此,如果您想在PHP中使用非对称加密 无 严重限制或容易受到过多的旁道攻击,您最终需要执行以下操作之一:
sodium_crypto_box_seal()
sodium_crypto_box_seal_open()
因此,实质上:是的,您的示例代码是“您需要做的所有”以获得有效的代码。然而,使RSA安全是一项艰巨的努力,不能轻视。
最后,如有疑问,请聘请密码学家。